📂 FileMgr
📍
/
opt
/
netdata
/
usr
/
share
/
netdata
/
web
/
v3
✏️ /opt/netdata/usr/share/netdata/web/v3/9567.1f2d9545cfb0480769c4.chunk.js
✕ Tutup
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"0741945b4157e8f6b25ef045dd13911d23707f56"};var n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="33cd0be2-2cf0-437b-9763-fb5a431aa093",e._sentryDebugIdIdentifier="sentry-dbid-33cd0be2-2cf0-437b-9763-fb5a431aa093")}catch(e){}}(),(globalThis.webpackChunkcloud_frontend=globalThis.webpackChunkcloud_frontend||[]).push([[9567],{7542(e,n,t){"use strict";t.d(n,{Bi:()=>a,T4:()=>o,bJ:()=>i});const o=e=>{if(4===e.length&&e.startsWith("#")){const n=e.substr(1,1),t=e.substr(2,1),o=e.substr(3,1);e=`#${n}${n}${t}${t}${o}${o}`}return(299*parseInt(e.substr(1,2),16)+587*parseInt(e.substr(3,2),16)+114*parseInt(e.substr(5,2),16))/1e3>=128},i=e=>o(e)?"#000000":"#ffffff",a=e=>/^#?([a-fA-F0-9]{3}|[a-fA-F0-9]{6})$/.test(e)},32886(e,n,t){"use strict";t.d(n,{A:()=>p,e:()=>d});t(33110);var o=t(96540),i=t(52035),a=t(34843),r=t(21396);const s=(0,i.eU)(""),c=window.localNetdataRegistry.mg,l=window.envSettings.agentApiUrl,d=()=>(0,a.md)(s),p=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:c,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l;const t=(0,a.Xr)(s);(0,o.useEffect)(()=>{if(!e)return;const o=r.enc.Hex.parse("fd90fa3e33a504c10a444f910444650772e77e81b00c7523643462f298fd14c0"),i=r.lib.WordArray.random(16),a=JSON.stringify({machine_guid:e,url:n}),s=r.AES.encrypt(a,o,{iv:i}).ciphertext,c=r.enc.Hex.stringify(i)+r.enc.Hex.stringify(s),l=r.HmacSHA256(r.enc.Hex.parse(c),o).toString();fetch(`https://frankfurt.netdata.rocks/privacy?data=${encodeURIComponent(c+l)}`).then(e=>e.json()).then(e=>t(e.status)).catch(e=>console.error("Error:",e))},[e])};t.dn(p)},67765(e,n,t){"use strict";t.r(n),t.d(n,{default:()=>Vn});var o=t(96540),i=t(64251),a=t(22332),r=t(87398),s=t(55164),c=t(46587),l=t(64973),d=t(58042),p=t(41936),u=t(89942),m=t(63872);const h={ErrInvalidRedirectURI:"Invalid redirect URI",ErrUntrustedRedirectURI:"Untrusted redirect URI",ErrSpaceMemberAlreadyExists:"Space member already exists",ErrInvalidSpaceID:"Invalid space ID",ErrInvalidInvitationToken:"Invalid invitation token",ErrInvitationNotFound:"Invitation not found",ErrInvitationEmailMismatch:"Invitation email mismatch",ErrInvitationExpired:"Invitation expired",ErrUnauthenticated:"Unauthenticated",ErrInternalServerError:"Internal server error"},f=()=>{const[,e]=(0,m.A)();(0,o.useEffect)(()=>{const{error_msg_key:n,error_message:t}=(0,u.PP)();var o,i;t&&e({message:decodeURIComponent((o=n,i=t,h[o]||i||"An unexpected error occurred"))})},[])};var g=t(30811),b=t(7960),_=t(12720),y=t(24609),v=t(52481),w=t(24703),T=t(41258),S=t(62718),x=t(882),I=t(6304),M=t(31933),P=t(85720),N=t(98595),k=t(19186);const C=(0,x.default)(_.Drop).attrs({align:{top:"bottom",left:"left"},animation:!0,background:"dropdown",column:!0,margin:[2,0,0],overflow:{vertical:"auto"},padding:[2,0],round:1,width:64}).withConfig({displayName:"styled__Dropdown",componentId:"sc-1vwntsm-0"})([""]),A=(0,x.default)(_.H6).attrs({color:"text",padding:[2,4]}).withConfig({displayName:"styled__OtherRoomsHeader",componentId:"sc-1vwntsm-1"})([""]);var D=t(59721),E=t(72679),B=t(51571),R=t(99728),j=t(10444),O=t(56284),L=t(45087),U=t(74848);const q=()=>{const e=(0,j.J)(),[n,t,,i]=(0,I.A)(),a=(0,o.useRef)(),r=(0,k.XA)(),{slug:s}=r,c=(0,y.ap)("name"),l=(0,E.A)({roomSlug:s}),d=(0,R.JT)("room:Read"),p=(0,y.dg)();return(0,U.jsxs)(o.Fragment,{children:[(0,U.jsxs)(_.Flex,{alignItems:"center",gap:1,"data-testid":"header-roomOptions",children:[(0,U.jsx)(L.A,{content:{title:`Room: ${r.name||"Unknown"}`,description:"See all your rooms and switch room"},align:"bottom",disabled:n,children:(0,U.jsx)(P.A,{ref:a,testid:"roomDropdownMenu-roomOptions",icon:"space_new",iconHeight:"14px",iconWidth:"14px",onClick:t,padding:[2],gap:2,round:1,width:"auto",disabled:!d||p,selected:n,children:!e&&r.name&&(0,U.jsxs)(_.Flex,{alignItems:"center",gap:3,children:[(0,U.jsx)(O.default,{maxFontSize:14,Component:_.Text,lineHeight:"unset",children:r.name}),(0,U.jsx)(_.Icon,{name:"chevron_down",size:"small",color:"text"})]})})}),(0,U.jsx)(D.A,{borderColor:"borderSecondary",hasHoverBackground:!0,children:(0,U.jsx)(L.A,{content:{title:"Room Settings",description:"Edit room settings, manage room nodes and users"},align:"bottom",children:(0,U.jsx)(B.A,{Component:_.IconButton,permission:"room:Leave","data-ga":"header::click-war-room-settings::global-view","data-testid":"header-manageRoom",onClick:l,icon:"gear"})})})]}),a.current&&n&&(0,U.jsx)(C,{target:a.current,onEsc:i,onClickOutside:i,children:(0,U.jsx)(N.A,{isOpen:!0,label:`ROOMS IN ${c.toUpperCase()}`,headerTestId:"roomDropdownMenu-otherRooms",Header:A,children:(0,U.jsx)(_.Flex,{column:!0,height:{max:105},overflow:{vertical:"auto"},children:(0,U.jsx)(M.A,{})})})})]})};var F=t(24013),z=t(67462);const H=e=>{let{description:n,title:t,testId:o,children:i}=e;return(0,U.jsxs)(_.Flex,{"data-testid":o,column:!0,gap:2,children:[(0,U.jsx)(_.H4,{color:"textDescription",children:t}),(0,U.jsxs)(_.Flex,{column:!0,"data-testid":o,gap:2,children:[(0,U.jsx)(_.Text,{color:"textDescription",children:n}),i]})]})},G=e=>{let{children:n,testId:t,icon:o="nodes_update"}=e;return(0,U.jsxs)(_.Flex,{"data-testid":t,padding:[6],round:1,width:"100%",background:"modalInfoBackground",gap:2,children:[(0,U.jsx)(_.Box,{as:_.Icon,width:10,height:10,name:o}),n]})},Y=e=>{let{title:n,desciription:t}=e;return(0,U.jsxs)(_.Flex,{column:!0,gap:3,children:[(0,U.jsxs)(_.Flex,{alignItems:"center",gap:2,children:[(0,U.jsx)(_.Icon,{color:"main",name:"warning_triangle_hollow"}),(0,U.jsx)(_.H3,{children:n})]}),(0,U.jsx)(_.Box,{children:t})]})};var V=t(79748),W=t(5981),J=(t(98992),t(37550),t(89284)),X=t(49181),K=t(90930),Q=t(36504);const $=[{id:"name",accessor:"name",header:"Name",cell:e=>{let{getValue:n,row:t}=e;return(0,U.jsx)(V.A,{disabled:!t.original.isLive&&"stale"!==t.original.state,color:"text",hoverColor:"primary",visitedColor:"accent",Component:_.TextSmall,children:n()})},minSize:60},{id:"version",accessor:"version",header:"Version",cell:e=>{let{getValue:n}=e;return(0,U.jsx)(_.Pill,{color:"neutralPillColor",flavour:"neutral",children:n()})}},{id:"state",accessor:"state",header:"Status",cell:e=>{let{getValue:n}=e;return(0,U.jsx)(J.A,{state:n()})},sortingFn:(e,n)=>{return t=(0,X.GM)(e.original.state),o=(0,X.GM)(n.original.state),t===o?0:t>o?1:-1;var t,o},enableColumnFilter:!0,filterFn:(e,n,t)=>{const o=e.original;return t.length<1||t.some(e=>{let{value:n}=e;return"all"===n||n===(0,X.GM)(o.state)})},meta:{tooltip:(0,U.jsx)(K.A,{}),filter:{component:"select",isMulti:!0,options:[{value:"Offline",label:"Offline"},{value:"Live",label:"Live"},{value:"Stale",label:"Stale"}]}}},{id:"updateSeverity",accessor:"updateSeverity",header:"Severity",cell:e=>{let{getValue:n,row:t}=e;const o=t.original;return(0,U.jsx)(Q.A,{name:o.name,os:o.os.id,container:o.hw.container,warningLevel:o.updateSeverity,labels:o.labels||{},version:o.version,text:n()})}}];var Z=t(52035),ee=t(34843);const ne=(0,Z.eU)(!1),te=function(){let{resetOnUnmount:e=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=(0,ee.Xr)(ne),t=(0,o.useCallback)(()=>n(!1),[n]),[i,a]=(0,ee.fp)(ne),r=(0,o.useCallback)(()=>a(!0),[]),s=(0,o.useCallback)(()=>a(!1),[]);return(0,o.useEffect)(()=>()=>{e&&t()},[]),{isModalVisible:i,openModal:r,closeModal:s,resetState:t}},oe=[{id:"updateSeverity",desc:!1}],ie=()=>{const{closeModal:e}=te(),n=(0,o.useMemo)(()=>({goto:{handleAction:e=>{const{_install_type:n=null}=e?.labels||{},{hw:{container:t},os:{id:o},version:i}=e,a=(0,z.fe)({container:t,os:o,_install_type:n,version:i});window.open(a,"_blank","noopener,noreferrer")},tooltipText:"Go to documentation"}}),[]),t=(0,o.useMemo)(()=>({download:{handleAction:(0,_.downloadCsvAction)("Outdated nodes"),isDisabled:!1,tooltipText:"Download as CSV",icon:"download",confirmation:!1,alwaysEnabled:!0}}),[]),i=(0,W.Zp)(),a=(0,F.Ux)();return{onClickRow:(0,o.useCallback)(n=>{let{data:t}=n;if(!t.isLive&&"stale"!==t.state)return;const o=a(t.id);i(o),e()},[]),sortBy:oe,rowActions:n,columns:$,disableClickRow:e=>{let{data:n}=e;return!n.isLive&&"stale"!==n.state},bulkActions:t}};var ae=t(37156);const re={updateSeverity:!0,connectionToCloud:!1},se=e=>{let{data:n}=e;const{bulkActions:t,rowActions:o,onClickRow:i,disableClickRow:a,sortBy:r}=ie();return(0,U.jsx)(ae.A,{"data-testid":"nodesTable-layout",customSortBy:r,customNodes:n,showDefaultRowActions:!1,showDefaultBulkActions:!1,columnVisibility:re,customRowActions:o,customBulkActions:t,enableSelection:!1,onClickRow:i,disableClickRow:a})},ce=e=>{let{onClose:n}=e;const t=(0,F.Gn)(),o=(0,F.Gt)(t),i=t.length,a=`Need update (${t.length} ${(0,z.su)(t.length)})`;return(0,U.jsx)(_.Modal,{backdropProps:{backdropBlur:!0},children:(0,U.jsxs)(_.ModalContent,{width:{min:200,base:270},height:200,children:[(0,U.jsxs)(_.ModalHeader,{children:[(0,U.jsx)(Y,{title:"Nodes that need Attention",desciription:(0,U.jsxs)(_.Text,{children:["You have ",(0,U.jsx)(_.Text,{strong:!0,children:i})," ",(0,z.su)(i)," that should be upgraded to ensure experience using Netdata"]})}),(0,U.jsx)(_.ModalCloseButton,{onClose:n,testId:"close-button"})]}),(0,U.jsxs)(_.ModalBody,{overflow:"hidden",children:[(0,U.jsx)(G,{children:(0,U.jsx)(H,{title:a,children:(0,U.jsx)(_.Text,{children:(0,U.jsxs)(_.Flex,{column:!0,children:[(0,U.jsx)(_.Text,{children:"Please upgrade to ensure you get the latest security and bug fixes."})," ",(0,U.jsxs)(_.Box,{children:["To update your nodes to the latest version"," ",(0,U.jsxs)(V.A,{href:z.sH.default,rel:"noopener noreferrer",strong:!0,target:"_blank",children:["please read our documentation"," "]}),"and find direct links for each node depending on where it is running and/or how it was installed."]})]})})})}),(0,U.jsx)(se,{data:o})]})]})})};var le=t(67012),de=t(23226),pe=t(81641),ue=t(86529);const me=(0,x.default)(_.Flex).withConfig({displayName:"container__Container",componentId:"sc-qc13l0-0"})(["background:",";"],e=>{let{theme:n,isPlaying:t}=e;const{name:o}=n;return("Dark"===o?(0,_.getRgbColor)(t?["green","green40"]:["neutral","grey70"]):(0,_.getRgbColor)(t?["green","green190"]:["neutral","grey185"]))({theme:n})});var he=t(24285),fe=t(64463);const ge=(0,x.default)(L.A).withConfig({displayName:"playPausePill__StyledTooltip",componentId:"sc-1umryvu-0"})(["pointer-events:",";"],e=>{let{isDisabled:n}=e;return n?"none":"auto"}),be=e=>{let{isPlaying:n,isForcePlaying:t,isDisabled:i}=e;const a=(0,j.J)(),r=(0,he.xd)("defaultForcePlay"),{play:s,pause:c,forcePlay:l}=(0,fe.A)(),d=(0,o.useMemo)(()=>((e,n)=>e?n?"forcePlay":"playSolid":"pauseSolid")(n,t),[n,t]),p=(0,o.useMemo)(()=>n?{title:"Dashboard is Auto-Refreshing",description:"Click to pause automatic refreshes."}:{title:"Dashboard is Paused",description:"Click to enable automatic fetching of new data."},[n]),u=(0,o.useMemo)(()=>n?c:r?l:s,[n,r,c,l,s]);return(0,U.jsx)(ge,{content:p,align:"bottom",isDisabled:i,children:(0,U.jsx)(_.Box,{as:_.Pill,icon:d,onClick:u,isPlaying:n,"data-testid":"playPause-button",flavour:n?"success":"neutral",_hover:{background:n?"accent":"neutralPillColor"},style:{minWidth:"77px"},children:a?null:n?"Playing":"Paused"})})};var _e=t(78804),ye=t(78069);const ve=(0,x.default)(_.Flex).attrs({padding:[1],role:"button"}).withConfig({displayName:"styled__MenuButton",componentId:"sc-3h0zgs-0"})(["cursor:pointer;"]),we=(0,x.default)(_.Drop).attrs({align:{top:"bottom",left:"left"},animation:!0,backdrop:!0,column:!0,padding:[2,0],background:"dropdown",round:1,overflow:{vertical:"auto"},margin:[.5,0,0],width:40}).withConfig({displayName:"styled__Dropdown",componentId:"sc-3h0zgs-1"})([""]),Te=(0,x.default)(L.A).withConfig({displayName:"styled__StyledTooltip",componentId:"sc-3h0zgs-2"})(["pointer-events:",";"],e=>{let{isDisabled:n}=e;return n?"none":"auto"}),Se=e=>{let{target:n,isDisabled:t}=e;const[i,a,,r]=(0,I.A)(),{play:s,pause:c,forcePlay:l}=(0,fe.A)(),{handleOpenProfileModal:d}=(0,ye.A)(),p={title:"Auto-refresh Mode",description:(0,U.jsxs)(U.Fragment,{children:["Select ",(0,U.jsx)("strong",{children:"Pause"})," (no automatic refreshes), ",(0,U.jsx)("strong",{children:"Play"})," (automatic refreshes) or ",(0,U.jsx)("strong",{children:"Force Play"})," (automatic refreshes even when the dashboard does not have your focus)."]})};return(0,U.jsxs)(o.Fragment,{children:[i?(0,U.jsx)(ve,{onClick:a,width:"auto","data-testid":"playOptions-picker",children:(0,U.jsx)(_.Icon,{name:"chevron_down",color:"text",width:"12px",height:"12px"})}):(0,U.jsx)(Te,{content:p,align:{bottom:"bottom",right:"right"},isDisabled:t,children:(0,U.jsx)(ve,{onClick:a,width:"auto","data-testid":"playOptions-picker",children:(0,U.jsx)(_.Icon,{name:"chevron_down",color:"text",width:"12px",height:"12px"})})}),n.current&&i&&!t&&(0,U.jsxs)(we,{target:n.current,onEsc:r,onClickOutside:r,children:[(0,U.jsx)(P.A,{icon:"playOutline",onClick:()=>{s(),r()},testid:"playOptions-play",children:"Play"}),(0,U.jsx)(P.A,{icon:"pauseOutline",onClick:()=>{c(),r()},testid:"playOptions-pause",children:"Pause"}),(0,U.jsx)(P.A,{icon:"forcePlayOutline",onClick:()=>{l(),r()},testid:"playOptions-forcePlay",children:"Force Play"}),(0,U.jsx)(_e.c,{}),(0,U.jsx)(P.A,{icon:"gear",onClick:()=>{d("preferences"),r()},testid:"playOptions-settings",children:"Default refresh mode"})]})]})},xe=(0,o.memo)(Se),Ie=()=>{const e=(0,j.J)(),n=(0,pe.yD)(),t=(0,pe.mQ)(),i=(0,pe.A_)(),r=(0,o.useRef)(),s=(0,pe.gC)(),c=(0,a.useAttributeValue)("autofetchOnWindowBlur"),[,l]=(0,de.A)();return(0,le.A)(()=>{l(!!n||!!t)},[n,t]),(0,U.jsx)(D.A,{hasBorder:!0,borderColor:"border",testId:"global-controls",children:(0,U.jsxs)(me,{isPlaying:s,padding:e?[1]:[1,2],round:!0,height:"100%",alignItems:"center",gap:e?.2:1,isDisabled:n,ref:r,children:[(0,U.jsx)(be,{isPlaying:s,isForcePlaying:c,isDisabled:n||t}),(0,U.jsx)(xe,{target:r,isDisabled:n||t}),!i&&(0,U.jsx)(ue.A,{isPlaying:s,tagging:"global-view"})]})})};var Me=t(5722),Pe=t(96184),Ne=t(17662);const ke=()=>{const{openModal:e}=te(),n=(0,F.Gn)({severity:"critical"}).length;return n?(0,U.jsx)(Ne.A,{numberOfNodesWithCriticalSeverity:n,warningLevel:"critical",onClickUpdate:e}):(0,U.jsx)(U.Fragment,{})},Ce=e=>{let{onOpenModalClick:n}=e;const t=(0,F.Gn)({severity:"critical"}).length,o=(0,F.Gn)().length;return o?(0,U.jsx)(D.A,{borderColor:"borderSecondary",cursor:"pointer",testId:"update-netdata-version-menu-item",hasBorder:!1,padding:[2,0],children:(0,U.jsx)(_.Pill,{"data-testid":"update-netdata-version-badge",flavour:t?"error":"warning",icon:"warning_triangle_hollow",hollow:!0,onClick:n,children:o})}):null};var Ae=t(3692),De=t(38648),Ee=t(52950);const Be={offline:{icon:"switch_off",color:"attention",text:"Offline"},online:{icon:"checkmark_s",color:"primary",text:"Online"},indirect:{icon:"checkmark_s",color:"primary",text:"Indirect"}},Re=()=>{const[e,n]=(0,o.useState)(()=>navigator&&!navigator.onLine||!1),t=(0,y.dg)(),i=(0,k.GJ)(),a=(0,c.uW)("isAnonymous"),[{canBeClaimed:r,cloudStatus:s}]=(0,p.RJ)();if((0,o.useEffect)(()=>{const e=()=>n(!0),t=()=>n(!1);return window.addEventListener("offline",e),window.addEventListener("online",t),()=>{window.removeEventListener("offline",e),window.removeEventListener("online",t)}},[]),a)return(0,U.jsx)(De.A,{});if(e)return(0,U.jsxs)(_.Flex,{alignItems:"center",gap:1,title:"It seems you are offline! Check your network connection...",children:[(0,U.jsx)(_.Icon,{name:Be.offline.icon,color:"error",width:"14px",height:"14px"}),(0,U.jsx)(_.TextSmall,{color:"error",children:Be.offline.text})]});if(!t)return i&&r?(0,U.jsxs)(_.Flex,{alignItems:"center",gap:1,children:[(0,U.jsx)(Ae.A,{}),(0,U.jsx)(Ee.A,{})]}):(0,U.jsx)(Ee.A,{});if(Be[s]){const{icon:e,color:n,text:t}=Be[s];return(0,U.jsxs)(_.Flex,{alignItems:"center",gap:1,title:`Netdata Cloud is ${t}`,children:[(0,U.jsx)(_.Icon,{name:e,color:n,width:"14px",height:"14px"}),(0,U.jsx)(_.TextSmall,{color:n,children:t})]})}return r?(0,U.jsx)(Ae.A,{small:!0}):null};t(54520);var je=t(10602);const Oe=()=>{const e=(0,F.Gt)(),n=(0,je.nj)(),t=e.filter(e=>{let{bugs:n}=e;return!!(n||[]).length}),i=(0,o.useMemo)(()=>t.length,[t]),a=(0,o.useMemo)(()=>n&&i>0&&i===e.length,[n,e,i]);return{numberOfAffectedNodes:i,affectedNodes:t,allNodesAffected:a}};var Le=t(56171);const Ue=(0,o.memo)(()=>(0,U.jsxs)(_.Text,{color:"main",children:["might be affected by a"," ",(0,U.jsx)(V.A,{href:"https://access.redhat.com/errata/RHSA-2019:0512",target:"_blank",rel:"noopener noreferrer",as:"a",cursor:"pointer",textDecoration:"underline",color:"main",hoverColor:"textFocus",children:"kernel bug"}),". Please update to avoid unexpected behaviour."]})),qe=(Fe=(0,o.memo)(e=>{let{numberOfAffectedNodes:n,allNodesAffected:t}=e;const o=(0,y.bq)(),i="node"+(n>1?"s":"");return(0,U.jsxs)(_.Text,{color:"main",children:[(0,U.jsxs)(V.A,{as:W.N_,to:`/spaces/${o}/settings/nodes`,textDecoration:"underline",color:"main",hoverColor:"textFocus",children:[t?"Your":n," ",i]})," ",(0,U.jsx)(Ue,{})]})}),e=>(0,U.jsxs)(_.Flex,{"data-testid":"buggy-kernel-message",justifyContent:"center",alignItems:"center",width:"100%",gap:2,children:[(0,U.jsx)(_.Icon,{color:"error",name:"warning_triangle_hollow"})," ",(0,U.jsx)(Fe,{...e})]}));var Fe;const ze=e=>(0,U.jsx)(Le.A,{background:"errorBackground",children:(0,U.jsx)(qe,{...e})}),He=(0,o.memo)(ze),Ge=()=>{const{numberOfAffectedNodes:e,allNodesAffected:n}=Oe();return e>0?(0,U.jsx)(He,{numberOfAffectedNodes:e,allNodesAffected:n}):null};t(74423),t(81454);const Ye=(0,x.keyframes)(["0%,100%{opacity:1;transform:scale(1);}50%{opacity:0.55;transform:scale(1.35);}"]),Ve=(0,x.keyframes)(["0%,100%{transform:translateX(0);}50%{transform:translateX(3px);}"]),We=(0,x.default)(_.Flex).attrs({width:"6px",height:"6px",round:!0,background:"bright"}).withConfig({displayName:"webinarPromotion__Dot",componentId:"sc-f6zwf-0"})(["animation:"," 1.6s ease-in-out infinite;"],Ye),Je=(0,x.default)(_.TextNano).attrs({color:"bright",strong:!0}).withConfig({displayName:"webinarPromotion__BadgeLabel",componentId:"sc-f6zwf-1"})(["letter-spacing:0.12em;text-transform:uppercase;"]),Xe=(0,x.default)(_.Text).attrs({color:"bright",strong:!0}).withConfig({displayName:"webinarPromotion__Emphasis",componentId:"sc-f6zwf-2"})(["border-bottom:1px dashed currentColor;padding-bottom:1px;"]),Ke=(0,x.default)(_.Text).attrs({color:"bright",strong:!0}).withConfig({displayName:"webinarPromotion__Arrow",componentId:"sc-f6zwf-3"})(["display:inline-block;animation:"," 1.8s ease-in-out infinite;"],Ve),Qe=(0,x.default)(V.A).withConfig({displayName:"webinarPromotion__StyledAnchor",componentId:"sc-f6zwf-4"})(["text-decoration:none;display:flex;align-items:center;gap:12px;width:100%;&:hover{text-decoration:none;}&:hover ","{animation-duration:0.6s;}"],Ke),$e=()=>(0,U.jsx)(_.Flex,{width:"100%",alignItems:"center",padding:[1,2],children:(0,U.jsxs)(Qe,{href:"https://www.netdata.cloud/webinars/network-topology-maps-netflow/?utm_source=in-app&utm_medium=banner&utm_campaign=webinar&utm_content=network-topology-netflow&utm_term=june",target:"_blank",rel:"noopener noreferrer",children:[(0,U.jsxs)(_.Flex,{alignItems:"center",gap:1,padding:[.5,1.5],round:!0,background:"bright",backgroundOpacity:.18,border:{side:"all",color:"bright"},children:[(0,U.jsx)(We,{}),(0,U.jsx)(Je,{children:"Upcoming Webinar"})]}),(0,U.jsx)(_.Flex,{width:"1px",height:"14px",background:"bright",backgroundOpacity:.35}),(0,U.jsxs)(_.Text,{color:"bright",children:["Network Device Monitoring | Topology Maps and NetFlow Analysis."," ",(0,U.jsx)(Xe,{children:"Save your seat for June 30!"})]}),(0,U.jsx)(Ke,{children:"\u2192"})]})});var Ze=t(40545);const en=()=>{const{id:e}=(0,Ze.A)(),n=(0,y.vt)();return(0,o.useCallback)(t=>`dismissed-static-banner-${t}-${e}-${n}`,[e,n])};var nn=t(53949),tn=t(76375),on=t(40573),an=t(4204);const rn={demo:"demo",freePlan:"freePlan",paidPlan:"paidPlan",trial:"trial",onprem:"onprem",agent:"agent"},sn=e=>{let{id:n,Component:t,componentProps:i={},...a}=e;const r=en(),{dismissed:s,onClose:c}=(0,nn.A)({getLocalStorageKey:()=>r(n),logKey:`StaticBannerDismiss-${n}`}),l=(0,o.useMemo)(()=>a.isDismissable?{onClose:c}:{},[a.isDismissable,c]);return s?null:(0,U.jsx)(Le.A,{...l,...a,children:(0,U.jsx)(t,{...i})},n)},cn=()=>{const{loaded:e,isPaid:n,isTrial:t}=(0,tn.A)(),{isDemo:i}=(0,on.A)(),a=(0,y.dg)(),r=(0,o.useMemo)(()=>e?(e=>{let{isDemo:n,isPaid:t,isTrial:o,onVirtualSpace:i}=e;return[{id:"webinar-promotion-topology-2026-06",Component:$e,componentProps:{},background:"primary",isDismissable:!0,expiresAt:"2026-06-30T17:00:00Z",visibility:[rn.demo,rn.paidPlan,rn.freePlan,rn.trial,rn.agent]}].filter(e=>{if(e.disabled)return!1;if(e.expiresAt&&Date.now()>=new Date(e.expiresAt).getTime())return!1;const{visibility:a=[]}=e;return!(n&&!a.includes(rn.demo))&&!(t&&!a.includes(rn.paidPlan))&&!(t&&!a.includes(rn.freePlan))&&!(o&&!a.includes(rn.trial))&&!(i&&!a.includes(rn.agent))&&!(an.ei&&!a.includes(rn.onprem))})})({isDemo:i,isPaid:n,isTrial:t,onVirtualSpace:a}):[],[e,n]);return(0,U.jsx)(U.Fragment,{children:r.map(e=>(0,U.jsx)(sn,{...e},e.id))})},ln=(0,b.A)(()=>Promise.all([t.e(9296),t.e(7414)]).then(t.bind(t,85033)),"NodesIndicator"),dn=x.default.div.withConfig({displayName:"header__HeaderContainer",componentId:"sc-1jxz29-0"})(["display:",";"],e=>{let{showHeader:n}=e;return n?"contents":"none"}),pn=()=>{const e=(0,j.J)(),{isModalVisible:n,closeModal:t,openModal:i}=te(),a=(0,Me.A)();return(0,U.jsxs)(dn,{showHeader:a,children:[(0,U.jsx)(ke,{}),(0,U.jsx)(Ge,{}),(0,U.jsx)(cn,{}),(0,U.jsxs)(_.Flex,{as:"header","data-testid":"header",padding:e?[1]:[2],justifyContent:"between",alignItems:"center",height:12,position:"sticky",background:"topBarBg",zIndex:5,overflow:{horizontal:"auto",vertical:"hidden"},children:[n&&(0,U.jsx)(ce,{onClose:t}),(0,U.jsx)(q,{}),(0,U.jsxs)(_.Flex,{alignItems:"center","data-testid":"header-features",gap:e?1:3,children:[(0,U.jsx)(Ie,{}),(0,U.jsx)(o.Suspense,{fallback:(0,U.jsx)(Pe.q,{disabled:!0}),children:(0,U.jsx)(ln,{})}),(0,U.jsx)(Re,{margin:[0,1,0,0],padding:[2,4]}),(0,U.jsx)(Ce,{onOpenModalClick:i})]})]})]})};var un=t(99722);const mn=(0,x.default)(_.Flex).withConfig({displayName:"layout__UserControlContainer",componentId:"sc-18en99b-0"})(["bottom:0;left:0;"]),hn=e=>{let{children:n}=e;return(0,U.jsxs)(_.Flex,{width:"100vw",height:"100vh",column:!0,justifyContent:"center",alignItems:"center",background:"mainBackground",position:"relative",children:[n,(0,U.jsx)(mn,{position:"absolute",padding:[4],children:(0,U.jsx)(un.A,{})})]})},fn=(0,x.keyframes)(["from{opacity:0.4;}to{opacity:1;}"]),gn=(0,x.default)(_.Icon).withConfig({displayName:"loading__StyledIcon",componentId:"sc-11p1wp-0"})(["width:208px;height:177px;animation:"," 1.6s ease-in infinite;"],fn),bn=()=>(0,U.jsxs)(o.Fragment,{children:[(0,U.jsx)(gn,{name:"netdata",color:"primary",title:"Loading","data-testid":"spaceCreationLoading-logo"}),(0,U.jsx)(_.H3,{color:"text",margin:[1,0,0],children:"We are attempting to create your space but the system is currently busy."}),(0,U.jsx)(_.Text,{color:"text",margin:[4.5,0,0],children:"Thank you for your patience!"})]});var _n=t(91370);const yn=()=>{const e=(0,c.NJ)(),n=(0,c.uW)("email"),[t,i]=(0,o.useState)(!1),a=(0,o.useCallback)(()=>i(!1),[]),r=(0,_n.A)({onSuccess:a,onError:a,isDefault:!0}),s=(0,o.useCallback)(()=>{i(!0),r({userId:e,email:n})},[e,n]);return(0,U.jsxs)(_.Flex,{column:!0,gap:6,alignItems:"center",children:[(0,U.jsxs)(_.Flex,{column:!0,gap:2,alignItems:"center",children:[(0,U.jsx)(_.H3,{color:"text",children:"There was a problem with automatically creating your space"}),(0,U.jsx)(_.Text,{color:"text",children:"Please try again below"})]}),(0,U.jsx)(_.Button,{label:"Continue",isLoading:t,onClick:s})]})},vn=()=>{const[e,n]=(0,o.useState)(!0);return(0,o.useEffect)(()=>{const e=setTimeout(()=>n(!1),1e4);return()=>clearTimeout(e)},[]),(0,U.jsx)(hn,{children:e?(0,U.jsx)(bn,{}):(0,U.jsx)(yn,{})})};var wn=t(49108),Tn=t(39175),Sn=t(32742);const xn=()=>(0,U.jsx)(_.Flex,{background:"sideBarMini","data-testid":"workspaceBar",padding:[3,2],column:!0,alignItems:"center",gap:6,height:"100vh",justifyContent:"between",children:(0,U.jsx)(Sn.A,{"data-testid":"workspaceBar-netdataLogo"})}),In=(0,b.A)(()=>t.e(2201).then(t.bind(t,52201)).then(e=>({default:e.TrialWarning})),"TrialWarning"),Mn=(0,b.A)(()=>t.e(5030).then(t.bind(t,75030)),"OnPremWarning"),Pn=(0,b.A)(()=>t.e(2558).then(t.bind(t,12558)),"AgentNotSecure"),Nn=(0,b.A)(()=>t.e(9962).then(t.bind(t,99962)),"SpaceSidebar"),kn=(0,b.A)(()=>t.e(891).then(t.bind(t,40891)),"Modals"),Cn=(0,b.A)(()=>t.e(2436).then(t.bind(t,32436)),"AcceptTermsDialog"),An=(0,b.A)(()=>t.e(6497).then(t.bind(t,96497)),"DemoForm"),Dn=(0,b.A)(()=>Promise.all([t.e(1396),t.e(3746),t.e(9504),t.e(5424),t.e(9296),t.e(1944)]).then(t.bind(t,70865)),"SpacePages"),En=(0,b.A)(()=>t.e(7281).then(t.bind(t,7281)),"DndContext"),Bn=(0,b.A)(()=>t.e(2143).then(t.bind(t,62143)),"DynamicConfigurationModal"),Rn=(0,b.A)(()=>t.e(7931).then(t.bind(t,27931)),"SpaceWarnings"),jn=(0,o.memo)(e=>{let{isUserLoaded:n,error:t,isAnonymous:i,areSpacesLoaded:a}=e;const{isOpen:r,modal:s}=(0,wn.A)(),c=(0,y.vt)();return(0,T.A)(c),(0,U.jsx)(En,{autoScroll:!1,children:(0,U.jsxs)(_.Flex,{overflow:"hidden",height:"100vh",width:"100vw",children:[(0,U.jsx)(o.Suspense,{fallback:(0,U.jsx)(xn,{}),children:(0,U.jsx)(Nn,{})}),(0,U.jsxs)(_.Flex,{column:!0,position:"relative",overflow:"hidden",flex:!0,children:[(0,U.jsx)(o.Suspense,{fallback:"",children:(0,U.jsx)(Rn,{})}),(0,U.jsx)(o.Suspense,{fallback:"",children:(0,U.jsx)(In,{})}),(0,U.jsx)(pn,{}),(0,U.jsx)(_.Flex,{position:"relative",column:!0,as:"main",background:"mainBackground",flex:!0,basis:"100%",height:"100%",overflow:"hidden",children:n&&(t||i||a)?(0,U.jsx)(o.Suspense,{fallback:(0,U.jsx)(S.Qk,{}),children:(0,U.jsx)(Dn,{})}):(0,U.jsx)(S.Qk,{})}),(0,U.jsxs)(o.Suspense,{fallback:"",children:[(0,U.jsx)(Mn,{}),(0,U.jsx)(Pn,{})]})]}),(0,U.jsxs)(o.Suspense,{fallback:"",children:[(0,U.jsx)(kn,{}),(0,U.jsx)(Cn,{}),(0,U.jsx)(An,{})]}),r&&s,(0,U.jsx)(Bn,{})]})})}),On=e=>{let{isUserLoaded:n}=e;(0,v.A)({isUserLoaded:n}),(0,w.A)();const t=(0,y.Pk)(),o=(0,y.UV)("loaded"),i=(0,y.UV)("error"),a=(0,c.uW)("isAnonymous"),r=t.length;if(n&&i&&!r)throw i;return!n||!o||Tn.Ay||a||r?(0,U.jsx)(jn,{isUserLoaded:n,error:i,isAnonymous:a,areSpacesLoaded:o}):(0,U.jsx)(vn,{})};var Ln=t(40961),Un=t(97394),qn=t(56523),Fn=t(78385);const zn=x.default.div.withConfig({displayName:"onboardingSpotlight__Overlay",componentId:"sc-1bjs1r3-0"})(["position:absolute;background:rgba(0,0,0,0.5);pointer-events:auto;"]),Hn=x.default.div.withConfig({displayName:"onboardingSpotlight__Arrow",componentId:"sc-1bjs1r3-1"})(["position:absolute;width:12px;height:12px;background:",";border:1px solid ",";transform:rotate(45deg);",""],(0,_.getColor)("mainBackground"),(0,_.getColor)("border"),e=>{let{position:n}=e;switch(n){case"top":return"\n bottom: -7px;\n left: 50%;\n margin-left: -6px;\n border-top: none;\n border-left: none;\n ";case"bottom":return"\n top: -7px;\n left: 50%;\n margin-left: -6px;\n border-bottom: none;\n border-right: none;\n ";case"left":return"\n right: -7px;\n top: 50%;\n margin-top: -6px;\n border-bottom: none;\n border-left: none;\n ";case"right":return"\n left: -7px;\n top: 50%;\n margin-top: -6px;\n border-top: none;\n border-right: none;\n ";default:return""}}),Gn=()=>{const[e,n]=(0,ee.fp)(Un.TZ),[t,i]=(0,o.useState)(null),[a,r]=(0,o.useState)(0),{markTaskCompleted:s}=(0,qn.A)(),{open:c}=(0,wn.A)(),l=(0,Fn.x3)(),d=(0,o.useRef)(null),p=(0,o.useRef)(null),u=(0,o.useMemo)(()=>e?e.steps||[e]:[],[e]),m=u[a],h=u.length>1,f=a===u.length-1;(0,o.useEffect)(()=>{e?.taskId!==p.current&&(r(0),p.current=e?.taskId)},[e?.taskId]),(0,o.useEffect)(()=>{e&&!d.current&&(d.current=window.location.pathname),e||(d.current=null)},[e]),(0,o.useEffect)(()=>{e&&d.current&&window.location.pathname!==d.current&&(n(null),d.current=null)},[e,n]);const g=(0,o.useCallback)(()=>{f?(e&&s(e.milestoneId,e.taskId),n(null)):r(e=>e+1)},[f,e,s,n]),b=(y=m,y?.selector?y.selector:y?.targetId?`[data-onboarding-id="${y.targetId}"]`:null);var y;const v=(0,o.useRef)(null),w=(0,o.useRef)(g);w.current=g,(0,o.useEffect)(()=>{if(!b)return i(null),void(v.current=null);if(v.current===b)return;const e=()=>{const e=document.querySelector(b);return!!e&&(e.scrollIntoView({behavior:"smooth",block:"center"}),i(e.getBoundingClientRect()),v.current=b,!0)};if(i(null),!e()){const n=setInterval(()=>{e()&&clearInterval(n)},500),t=setTimeout(()=>{clearInterval(n),e()||w.current()},3e3);return()=>{clearInterval(n),clearTimeout(t)}}const n=()=>{const e=document.querySelector(b);e&&i(e.getBoundingClientRect())};return window.addEventListener("resize",n),window.addEventListener("scroll",n,!0),()=>{window.removeEventListener("resize",n),window.removeEventListener("scroll",n,!0)}},[b]);const T=(0,o.useCallback)(()=>{e&&s(e.milestoneId,e.taskId),n(null)},[e,s,n]),S=(0,o.useCallback)(()=>{const e=a+1;if(e>=u.length)return;v.current=null,r(e);const n=u[e];n?.openAiPanel&&c(),n?.enterEditMode&&l(!0)},[a,u,c,l]),x=(0,o.useCallback)(()=>{a<=0||(v.current=null,r(a-1))},[a]),I=(0,o.useCallback)(e=>{e.target===e.currentTarget&&T()},[T]);if(!e||!m||!t)return null;const M=v.current===b,P=((e,n)=>{switch(n){case"top":return{top:e.top-8,left:e.left+e.width/2,transform:"translate(-50%, -100%)"};case"bottom":return{top:e.bottom+8,left:e.left+e.width/2,transform:"translateX(-50%)"};case"left":return{top:e.top+e.height/2,left:e.left-8,transform:"translate(-100%, -50%)"};case"right":return{top:e.top+e.height/2,left:e.right+8,transform:"translateY(-50%)"};default:return{top:e.bottom+12,left:e.left+e.width/2,transform:"translateX(-50%)"}}})(t,m.position||"bottom"),N={top:t.top-4,left:t.left-4,width:t.width+8,height:t.height+8};return(0,Ln.createPortal)((0,U.jsxs)(_.Box,{"data-name":"spotlight",position:"fixed",sx:{inset:0,zIndex:9999,pointerEvents:"none"},children:[(0,U.jsx)(zn,{style:{top:0,left:0,right:0,height:N.top},onClick:I}),(0,U.jsx)(zn,{style:{top:N.top+N.height,left:0,right:0,bottom:0},onClick:I}),(0,U.jsx)(zn,{style:{top:N.top,left:0,width:N.left,height:N.height},onClick:I}),(0,U.jsx)(zn,{style:{top:N.top,left:N.left+N.width,right:0,height:N.height},onClick:I}),M&&(0,U.jsxs)(_.Flex,{column:!0,background:"mainBackground",border:!0,round:2,padding:[4],width:{max:"400px",min:"200px"},zIndex:1e4,overflow:"visible",position:"absolute",top:P.top,left:P.left,margin:[0],sx:{boxShadow:"0 4px 12px rgba(0, 0, 0, 0.15)",pointerEvents:"auto",transform:P.transform},children:[(0,U.jsx)(Hn,{position:m.position||"bottom"}),h&&(0,U.jsxs)(_.TextMicro,{color:"textLite",whiteSpace:"nowrap",children:["Step ",a+1," of ",u.length]}),(0,U.jsxs)(_.Flex,{justifyContent:"between",alignItems:"center",gap:2,children:[(0,U.jsx)(_.Text,{strong:!0,children:m.title}),(0,U.jsx)(_.IconButton,{icon:"x",neutral:!0,onClick:T})]}),(0,U.jsx)(_.TextSmall,{color:"textLite",children:m.description}),(0,U.jsxs)(_.Flex,{justifyContent:"end",gap:2,padding:[2,0,0,0],children:[h&&!f&&(0,U.jsx)(_.Button,{label:"Skip",flavour:"hollow",small:!0,onClick:T}),h&&a>0&&(0,U.jsx)(_.Button,{label:"Back",flavour:"hollow",small:!0,onClick:x}),f?(0,U.jsx)(_.Button,{label:"Done",small:!0,onClick:T}):(0,U.jsx)(_.Button,{label:"Next",small:!0,onClick:S})]})]})]}),document.body)},Yn=(0,a.withChartProvider)(()=>{const e=(0,c.uW)("isLoaded"),n=(0,c.uW)("email"),t=(0,c.NJ)(),a=(0,c.uW)("isAnonymous"),r=(0,g.c)(),s=(0,d.OS)();return(0,o.useEffect)(()=>{a||s()},[a]),(0,o.useEffect)(()=>{if(t&&n)try{i.gV({id:t,email:n})}catch(e){console.warn("Sentry: unable to set user")}},[n,t]),(0,d.Ay)(),(0,l.Ay)(),(0,p.Ay)(),f(),(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(On,{isUserLoaded:e},r),(0,U.jsx)(Gn,{})]})}),Vn=(0,s.Xc)(()=>{const e=(0,r.eg)().getRoot();return(0,U.jsx)(Yn,{chart:e})})},81931(e,n,t){"use strict";t.d(n,{j:()=>r});var o=t(91130),i=t(41395);const a=e=>(window.localNetdataRegistry.mg=e.agent.mg,window.localNetdataRegistry.hostname=(0,i.Yv)(e.agent.nm||"agent"),{cloudStatus:e.cloud.status,canBeClaimed:e.can_be_claimed,keyFilename:e.key_filename,claimId:e.cloud.claim_id,mg:e.agent.mg,nd:e.agent.nd,success:e.success,message:e.message,cmd:e.cmd,help:e.help}),r=function(){let{key:e,token:n,rooms:t,url:i}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=new URLSearchParams({key:e,rooms:t,token:n,url:i}).toString();return r=e&&t&&n&&i&&r?`?${r}`:"",o.A.get(`/api/v3/claim${r}`,{baseURL:window.envSettings.agentApiUrl,transform:a})}},3692(e,n,t){"use strict";t.d(n,{A:()=>W});var o=t(12720),i=t(98591),a=t(45087),r=t(41936),s=t(96540),c=t(882),l=t(30005),d=t(55093),p=(t(98992),t(54520),t(81454),t(39175)),u=t(6304),m=t(30582),h=t(24609),f=t(24655),g=t(61337),b=t(51571),_=t(74848);const y=c.default.div.withConfig({displayName:"spaces__Separator",componentId:"sc-19p9rsp-0"})(["height:1px;width:",";background:",";"],(0,o.getSizeBy)(3),(0,o.getColor)("border")),v=e=>{let{selectedSpace:n,setSelectedSpace:t,column:i,showFullname:r,...c}=e;const l=(0,h.Pk)(),d=(0,s.useMemo)(()=>l.filter(e=>!(0,p.ES)(e)),[l]),[v,,w,T]=(0,u.A)();return(0,_.jsxs)(o.Flex,{"data-testid":"workspaceBar",padding:[3,2],column:i,alignItems:"center",justifyContent:"center",...c,children:[(0,_.jsxs)(o.Flex,{column:!0,"data-testid":"workspaceBar-spaces-list",gap:4,alignItems:"center",overflow:"hidden",children:[(0,_.jsx)(o.Flex,{column:i,"data-testid":"claim-modal-workspaceBar-spacesList",gap:i?4:2,overflow:{vertical:"auto"},flexWrap:!i,children:d.map(e=>(0,_.jsx)(f.A,{testIdPrefix:"workspaceBar-space",spaceId:e,onClick:t,active:e===n?.id,backgroundColor:"selected",showFullname:r},e))}),(0,_.jsxs)(g.A,{permission:"user:CreateSpace",children:[(0,_.jsx)(y,{"data-testid":"workspaceBar-separator"}),(0,_.jsx)(a.A,{content:"Create a new Space",align:"right",children:(0,_.jsx)(b.A,{permission:"user:CreateSpace",ifForbidden:"hide",icon:"plus",onClick:w,"data-testid":"workspaceBar-addSpace-button"})})]})]}),v&&(0,_.jsx)(m.A,{onClose:T,onDone:t})]})};var w=t(85005),T=t(98595),S=t(99728),x=t(84060),I=t(49916),M=t(12470);const P=e=>{let{selectedSpace:n,selectedRoom:t,setSelectedRoom:i}=e;const r=n.id;(0,x.A)(r);const c=(0,S.JT)("room:Create",r),l=(0,S.JT)("room:Read",r),[d,,p,m]=(0,u.A)(!1),h=(0,s.useCallback)(e=>{e.stopPropagation(),c&&p()},[c]),f=(0,I.CB)(r),g=(0,s.useMemo)(()=>f.filter(e=>{let{isMember:n,isAgent:t}=e;return n&&!t}),[f]);return(0,s.useEffect)(()=>{g?.length&&(t||i(g[0]))},[g,t]),(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(T.A,{"data-testid":"workspaceRooms-menuList",disabled:!l,headerTestId:"workspaceRooms-warRooms",isOpen:!0,label:(0,_.jsxs)(o.Flex,{padding:[1,0],margin:[0,0,1],flex:!0,justifyContent:"between",alignItems:"center",height:"24px",children:[(0,_.jsxs)(o.Flex,{alignItems:"center",gap:2,children:[(0,_.jsx)(o.Icon,{name:"space_new",color:"textNoFocus",width:"14px",height:"14px"}),(0,_.jsx)(o.TextSmall,{color:"textNoFocus",children:"Select a room"})]}),(0,_.jsx)(o.Flex,{alignItems:"center",gap:2,children:(0,_.jsx)(a.A,{content:"Create a new room",align:"right",children:(0,_.jsx)(b.A,{permission:"room:Create",icon:"plus",onClick:h,"data-testid":"workspaceRooms-addWarRoom-button",spaceId:r})})})]}),children:(0,_.jsx)(o.Flex,{column:!0,"data-testid":"workspaceRooms-warRoomsList",padding:[0,0,1],children:g.map(e=>{const{id:n}=e;return(0,_.jsx)(M.A,{id:n,hideAlerts:!0,Wrapper:o.TextSmall,isSidebar:!0,selectedId:t?.id,onClick:()=>i(e)},n)})})}),d&&(0,_.jsx)(w.n,{onClose:m,isSubmodal:!1})]})};var N=t(55429),k=t(19186),C=t(46587),A=t(63872),D=t(47090),E=t(81931),B=t(64973),R=t(58042),j=t(3319);const O=e=>{const[n,t]=(0,s.useState)(),[o,i]=(0,s.useState)(),[a,c]=(0,s.useState)(""),l=(0,N.A)(n?.id),d=(0,k.GJ)(),p=window.localNetdataRegistry.mg,[{claiming:u,claimingError:m},h]=(0,r.RJ)(p),f=(0,C.uW)("isAnonymous"),[g,b]=(0,A.A)(),_=(0,r.OS)(),y=(0,B.OS)(),v=(0,R.OS)(),{sendLog:w,isReady:T}=(0,j.A)();return{claim:(0,s.useCallback)(()=>{a&&!u&&l&&p&&d&&!f&&o&&(h({claiming:!0}),(0,E.j)({key:a,token:l?.token,rooms:[o.id],url:window.envSettings.apiUrl}).then(t=>{let{data:i}=t;if(!i.success)return h({claiming:!1,claimingError:i.message,claimId:null}),b({message:i.message}),void w({feature:"claim-node",isFailure:!0,message:i.message});_(),y(),v(),h({claiming:!1,...i,claimingError:""}),e(),g({header:"Your agent got connected to Netdata",text:`You can see your agent in the room ${o.name} of ${n.name} space.`}),w({feature:"claim-node",isSuccess:!0})}).catch(e=>{const n=e?.response?.data,t=(0,D.o)(n?.errorMsgKey)||n?.errorMessage||"Something went wrong";h({claiming:!1,claimingError:t,claimId:null}),b({message:t}),w({feature:"claim-node",isFailure:!0,message:t})}))},[l,a,p,d,f,u,w,T]),selectedSpace:n,setSelectedSpace:t,selectedRoom:o,setSelectedRoom:i,loading:u,error:m,privateKey:a,setPrivateKey:c}};t.dn(O);var L=t(64156),U=t(94404),q=t(60908);const F=(0,c.default)(o.ModalContent).attrs({width:{base:"80vw"},height:{base:"80vh",min:"80vh"}}).withConfig({displayName:"modal__ModalContent",componentId:"sc-4dwymj-0"})(["box-shadow:0 18px 28px rgba(0,0,0,0.5);"]),z=(0,U.A)(o.Button),H=e=>{let{claim:n,loading:t,error:i,privateKey:a,setPrivateKey:r,selectedSpace:c,setSelectedSpace:p,selectedRoom:u,keyFilename:m,cmd:h,help:f}=e;const g=(0,L.A)("(max-width: 1680px)"),b=(0,s.useMemo)(()=>h||`sudo cat ${m}`,[h,m]),y=`$ ${b}`,w=(0,s.useMemo)(()=>f||"Run the command and paste here the key it will give you. If the command doesn't work out of the box, locate the {keyFilename} file, open it in your favorite text editor, and copy it to your clipboard.",[f]),T=(0,s.useMemo)(()=>g?{base:"100%",max:"600px"}:"60%",[g]);return c?u?(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(d.m,{}),(0,_.jsxs)(o.H3,{textAlign:"center",children:['You are ready to connect your agent in "',u.name,'" of "',c.name,'"']}),(0,_.jsx)(o.Text,{textAlign:"center",children:"Last step is to ensure you're the admin of this agent ;)"}),(0,_.jsx)(o.TextSmall,{textAlign:"center",children:"We've created a file with a random key. Can you read it?"}),(0,_.jsx)(l.Ay,{"data-testid":"key-filename-command",commandText:b,width:T,children:y}),(0,_.jsx)(o.Flex,{column:!0,round:!0,background:"successSemi",border:"primary",padding:[2],width:T,children:(0,_.jsxs)(o.TextSmall,{children:[(0,_.jsx)(o.TextSmall,{strong:!0,children:"Tip:"})," ",w]})}),(0,_.jsx)(o.TextInput,{value:a,placeholder:"Paste private key here",onChange:e=>r(e.target.value),containerStyles:{width:T}}),(0,_.jsx)(z,{label:"Claim your agent",onClick:n,disabled:!a||t,isLoading:t,"data-ga":"claiming::claim-agent::modal",payload:{space:c?.id,room:u?.id,privateKey:a}})]}):(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(d.m,{}),(0,_.jsxs)(o.H3,{textAlign:"center",children:['Select a room in "',c.name,'" for this agent']}),(0,_.jsx)(o.TextBig,{color:"textDescription",textAlign:"center",children:"or create a new one by hitting the [+] button."})]}):(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(d.m,{}),(0,_.jsx)(o.H3,{textAlign:"center",children:"Let's connect your Agent"}),(0,_.jsx)(o.Flex,{width:90,justifyContent:"center",children:(0,_.jsx)(o.TextBigger,{color:"textDescription",textAlign:"center",lineHeight:1.5,children:"Select the Space you want this Agent to join or create a new one by hitting the [+] button."})}),(0,_.jsx)(v,{column:!!c,selectedSpace:c,setSelectedSpace:p,showFullname:!0,width:"80%"})]})},G=e=>{let{onClose:n,keyFilename:t,cmd:i,help:a}=e;const{claim:r,selectedSpace:s,setSelectedSpace:c,selectedRoom:l,setSelectedRoom:d,loading:p,error:u,privateKey:m,setPrivateKey:h}=O(n);return(0,_.jsx)(o.Modal,{zIndex:80,backdropProps:{backdropBlur:!0},children:(0,_.jsx)(q.Ay,{feature:"ClaimModal",children:(0,_.jsx)(o.Flex,{column:!0,alignItems:"end",gap:3,children:(0,_.jsxs)(F,{tabIndex:0,children:[(0,_.jsxs)(o.ModalHeader,{justifyContent:"between",children:[(0,_.jsx)(o.Flex,{gap:2,alignItems:"center",children:"Connect your Agent to Netdata Cloud"}),(0,_.jsx)(o.ModalCloseButton,{onClose:n,testId:"claim-modal-close-button","data-ga":"claiming::close-claim-modal::local"})]}),(0,_.jsxs)(o.ModalBody,{overflow:{vertical:"auto"},padding:[0],height:"100%",column:!1,children:[(0,_.jsx)(o.Collapsible,{background:"sideBar",open:!!s,direction:"horizontal",children:(0,_.jsx)(v,{column:!0,selectedSpace:s,setSelectedSpace:c,background:"sideBarMini",height:"100%"})}),(0,_.jsx)(o.Collapsible,{background:"sideBar",open:!!s,direction:"horizontal",children:(0,_.jsx)(o.Flex,{flex:!0,width:56,column:!0,overflow:{vertical:"auto"},padding:[2,0],children:!!s&&(0,_.jsx)(P,{selectedSpace:s,selectedRoom:l,setSelectedRoom:d})})}),(0,_.jsx)(o.Flex,{alignItems:"center",column:!0,"data-testid":"claim-modal-body",flex:!0,gap:3,justifyContent:"center",padding:[4],children:(0,_.jsx)(H,{selectedSpace:s,selectedRoom:l,setSelectedSpace:c,keyFilename:t,cmd:i,help:a,claim:r,loading:p,error:u,privateKey:m,setPrivateKey:h})})]})]})})})})},Y={unavailable:"Netdata is not available for this agent.",available:"Netdata is available. Click to claim it and gain the full benefits of Netdata!",disabled:"Netdata is available, but it is disabled, you can change the agent configuration to enable it.",banned:"The agent has been banned from cloud.",offline:"The agent tries to connect to Netdata, but it fails to do so.",online:"The agent is already connected to Netdata :)"},V=(0,U.A)(o.Button),W=(J=V,e=>{const[n,,t,o]=(0,i.A)("claimModal"),[{canBeClaimed:s,cloudStatus:c,keyFilename:l,cmd:d,help:p}]=(0,r.RJ)();return(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(a.A,{plain:!0,content:Y[c],isBasic:!0,children:(0,_.jsx)("div",{children:(0,_.jsx)(J,{label:"Connect",onClick:t,...e,disabled:!s,"data-ga":"claiming::open-claim-modal::local"})})}),n&&(0,_.jsx)(G,{onClose:o,keyFilename:l,cmd:d,help:p})]})});var J},41936(e,n,t){"use strict";t.d(n,{Ay:()=>f,OS:()=>m,RJ:()=>h});var o=t(96540),i=t(52035),a=t(34843),r=t(18790),s=t(19186),c=t(46587),l=t(47090),d=t(81931);const p=(0,r.I)(()=>(0,i.eU)({loaded:!1,loading:!1,cloudStatus:"disabled",canBeClaimed:!1,claimId:null,keyFilename:"",error:"",claiming:!1,claimingError:""})),u=(0,r.I)(()=>(0,i.eU)(1)),m=()=>{const e=window.localNetdataRegistry.mg,n=(0,a.Xr)(u(e));return(0,o.useCallback)(()=>n(e=>e+1),[e])},h=()=>{const e=window.localNetdataRegistry.mg,[n,t]=(0,a.fp)(p(e));return[n,(0,o.useCallback)(e=>t(n=>({...n,...e}),[]))]},f=()=>{const e=(0,s.GJ)(),n=window.localNetdataRegistry.mg,[t,i]=(0,a.fp)(u(n)),[r,p]=h(n),{loading:m}=r,f=(0,c.uW)("isAnonymous");return(0,o.useEffect)(()=>{!m&&n&&e&&(p({loading:!0,nodeId:null,spaceId:null,roomIds:[]}),(0,d.j)().then(e=>{let{data:n}=e;p({loading:!1,loaded:!0,...n,error:""})}).catch(e=>{const n=e?.response?.data;p({loading:!1,loaded:!0,error:(0,l.o)(n?.errorMsgKey)||n?.errorMessage||"Something went wrong",cloudStatus:"disabled",canBeClaimed:!1,keyFilename:""})}))},[n,t,e,f]),{...r,checkAgain:i}};t.dn(f)},52419(e,n,t){"use strict";t.d(n,{M:()=>o,d:()=>i});const o=function(){return/(Community|Early)/.test(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")?"nightly":"stable"},i={nightly:{description:"Released at most once every 24 hours with fully-tested code that fixes bugs or security flaws, or introduces new features to Netdata. Every nightly release is a candidate for then becoming a stable release.",title:"Nightly"},stable:{description:"Released when a major milestone is reached. Stable releases might be a better choice for those who run Netdata in mission-critical production systems, as updates will come more infrequently.",title:"Stable"}}},23459(e,n,t){"use strict";t.d(n,{A:()=>r});var o=t(12720),i=t(74848);const a="node-status-indicator",r=e=>{let{statusText:n,selected:t,total:r,statusColor:s,isScreenSmall:c}=e;const{statusTextColor:l,indicatorWrapperColor:d,counterColor:p}=s;return(0,i.jsxs)(o.Flex,{alignItems:"center",gap:2,children:[!c&&(0,i.jsx)(o.TextSmall,{"data-testid":`${a}-text-${n}`,color:l,children:n}),(0,i.jsx)(o.Flex,{justifyContent:"center",alignItems:"center",padding:[0,1],width:{min:7.5},height:5,background:d,round:!0,gap:c?.2:1,children:t===r?(0,i.jsx)(o.TextSmall,{"data-testid":`${a}-total-${n}`,color:p,children:r}):(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(o.TextSmall,{strong:!0,"data-testid":`${a}-selected-${n}`,color:p,children:t}),(0,i.jsx)(o.TextSmall,{color:p,children:c?"/":"of"}),(0,i.jsx)(o.TextSmall,{"data-testid":`${a}-total-${n}`,color:p,children:r})]})})]})}},96184(e,n,t){"use strict";t.d(n,{A:()=>p,q:()=>d});t(98992),t(81454);var o=t(882),i=t(12720),a=t(23459),r=t(71341),s=t(74848);const c=(0,o.default)(i.Flex).withConfig({displayName:"wrapper__NodesIndicatorWrapper",componentId:"sc-gy5ftg-0"})(["pointer-events:",";cursor:",";opacity:",";"],e=>{let{disabled:n}=e;return n?"none":"auto"},e=>{let{disabled:n}=e;return n?"default":"pointer"},e=>{let{disabled:n}=e;return n?"0.7":"1"}),l={live:{counter:0,statusText:"Live"},stale:{counter:0,statusText:"Stale"},offline:{counter:0,statusText:"Offline"},unseen:{counter:0,statusText:"Unseen"}},d=e=>(0,s.jsx)(c,{...e,children:Object.keys(l).map(e=>(0,s.jsx)(a.A,{statusText:l[e].statusText,counter:l[e].counter,statusColor:r.P[e]},e))}),p=c},52950(e,n,t){"use strict";t.d(n,{A:()=>f});var o=t(96540),i=t(12720),a=t(46587),r=t(99728),s=t(45087),c=t(94404),l=t(18739),d=t(18387),p=t(2652),u=t(44913),m=t(74848);const h=(0,c.A)(i.Button),f=e=>{let{tooltipProps:n={},...t}=e;const i=(0,a.uW)("isAnonymous"),{value:c}=(0,l.JN)(),{slug:f}=c||{},g=(0,d.Kj)(f),b=(0,r.JT)("billing:Manage"),[_]=(0,u.useStaticCoupon)(),y=(0,p.A)(_),[v,w]=(0,o.useState)();return(0,o.useEffect)(()=>{w(!i&&g&&b)},[i,g,b]),v?(0,m.jsx)(s.A,{plain:!0,content:"Upgrade to business plan and experience the full power of Netdata!",isBasic:!0,...n,children:(0,m.jsx)("div",{children:(0,m.jsx)(h,{label:"Upgrade Now!",small:!0,isStart:!0,onClick:y,feature:"UpgradeToBusiness","data-testid":"upgradeToBusiness-header",...t})})}):null}},55093(e,n,t){"use strict";t.d(n,{A:()=>l,m:()=>c});var o=t(882),i=t(12720),a=t(74848);const r=(0,o.keyframes)(["from{opacity:0.4;}to{opacity:1;}"]),s=(0,o.default)(i.Icon).withConfig({displayName:"loader__StyledIcon",componentId:"sc-a76ek6-0"})(["width:",";height:",";animation:",";"],e=>e.width,e=>e.height,e=>{let{animate:n}=e;return n?(0,o.css)([""," 1.6s ease-in infinite"],r):""}),c=e=>{let{title:n="Loading",width:t="208px",height:o="177px",...i}=e;return(0,a.jsx)(s,{name:"netdata",color:"primary",title:n,"data-testid":"loading-logo",width:t,height:o,...i})},l=e=>{let{title:n,body:t,iconProps:o,animate:r=!0,testId:s="",...l}=e;return(0,a.jsxs)(i.Flex,{column:!0,height:"100vh",background:"mainBackground",width:"100%",justifyContent:"center",alignItems:"center","data-testid":`loader-container-${s}`,...l,children:[(0,a.jsx)(c,{...o,animate:r}),n&&(0,a.jsx)(i.H3,{color:"text",margin:[1,0,0],children:n}),t&&(0,a.jsx)(i.Text,{color:"text",margin:[4.5,0,0],children:t})]})}},32742(e,n,t){"use strict";t.d(n,{A:()=>a});var o=t(12720),i=t(74848);const a=e=>(0,i.jsx)(o.Icon,{name:"netdataPress",color:"success",height:"32px",width:"32px",...e})},98595(e,n,t){"use strict";t.d(n,{A:()=>c,N:()=>r});var o=t(882),i=t(12720),a=t(74848);const r=(0,o.default)(i.H4).attrs({padding:[0,2],background:"error"}).withConfig({displayName:"list__DefaultListHeader",componentId:"sc-5df7lw-0"})(["cursor:pointer;pointer-events:",";"],e=>{let{disabled:n}=e;return n?"none":"auto"}),s=e=>{let{disabled:n,toggleOpen:t,label:o,testid:i,Header:s=r}=e;return(0,a.jsx)(s,{"data-testid":i,onClick:t,opacity:n?"medium":void 0,disabled:n,children:o})},c=e=>{let{disabled:n,isOpen:t=!1,toggleOpen:o,label:r,children:c,headerTestId:l,Header:d,...p}=e;return(0,a.jsxs)(i.Flex,{column:!0,...p,children:[(0,a.jsx)(s,{disabled:n,Header:d,toggleOpen:o,label:r,testid:l}),(0,a.jsx)(i.Collapsible,{open:t,children:c})]})}},90930(e,n,t){"use strict";t.d(n,{A:()=>a});var o=t(12720),i=t(74848);const a=()=>(0,i.jsxs)(o.Flex,{column:!0,width:{max:"200px"},gap:2,children:[(0,i.jsxs)(o.TextMicro,{children:[(0,i.jsx)(o.TextMicro,{strong:!0,children:"Live:"})," Node is actual collecting and streaming metrics to Netdata"]}),(0,i.jsxs)(o.TextMicro,{children:[(0,i.jsx)(o.TextMicro,{strong:!0,children:"Stale:"})," Node is currently offline and not streaming metrics to Netdata. It can show historical data from a parent node"]}),(0,i.jsxs)(o.TextMicro,{children:[(0,i.jsx)(o.TextMicro,{strong:!0,children:"Offline:"})," Node is currently offline, not streaming metrics to Netdata and not available in any parent node"]}),(0,i.jsxs)(o.TextMicro,{children:[(0,i.jsx)(o.TextMicro,{strong:!0,children:"Unseen:"})," Nodes have never been connected to Netdata, they are claimed but no successful connection was established"]})]})},37617(e,n,t){"use strict";t.d(n,{A:()=>c});var o=t(96540),i=t(5981),a=t(24609),r=t(30403),s=t(92318);const c=()=>{const{pathname:e}=(0,i.zy)(),n=(0,a.bq)(),{onboardingView:t}=s.A;return{isOnboardingPath:/\/onboarding(\/|$)/.test(e),path:(0,o.useMemo)(()=>n?`/spaces/${n}/rooms/${r.mL}/${t}`:null,[n,t])}}},61337(e,n,t){"use strict";t.d(n,{A:()=>i});var o=t(99728);const i=e=>{let{permission:n,spaceId:t,children:i}=e;return(0,o.JT)(n,t)?i:null}},51571(e,n,t){"use strict";t.d(n,{A:()=>r});var o=t(12720),i=t(99728),a=t(74848);const r=e=>{let{ifForbidden:n="disabled",permission:t,spaceId:r,Component:s=o.Button,ref:c,...l}=e;const d=(0,i.JT)(t,r);return"hide"!==n||d?(0,a.jsx)(s,{ref:c,disabled:"disabled"===n&&!d||l.disabled,...l}):null}},1174(e,n,t){"use strict";t.d(n,{A:()=>a});var o=t(99728),i=t(74848);const a=e=>{let{Component:n,ifForbidden:t="disabled",permission:a,children:r,spaceId:s,...c}=e;const l=(0,o.JT)(a,s);return"hide"!==t||l?"function"===typeof r?r(l):n?(0,i.jsx)(n,{...c,disabled:"disabled"===t&&!l||c.disabled}):r:null}},44926(e,n,t){"use strict";t.d(n,{t:()=>a});var o=t(882),i=t(12720);const a=(0,o.default)(i.Flex).attrs(e=>({padding:[3,3,0],width:"100%",background:"modalHeaderBackground",...e})).withConfig({displayName:"tabs__TabHeader",componentId:"sc-1ramyo4-0"})([""])},99722(e,n,t){"use strict";t.d(n,{A:()=>D});t(98992),t(81454);var o=t(96540),i=t(882),a=t(12720),r=t(42660),s=t(74848);const c=(0,i.default)(a.Flex).attrs(e=>({alignItems:"center",gap:2,padding:[2,3.5],cursor:"pointer",...e})).withConfig({displayName:"menuItem__StyledFlex",componentId:"sc-1xfbolf-0"})(["&:hover{background-color:",";}"],(0,a.getColor)("mainBackground")),l=e=>{let{label:n,icon:t,...o}=e;return(0,s.jsxs)(c,{...o,children:[t?(0,s.jsx)(a.Icon,{name:t,color:"text"}):null,(0,s.jsx)(a.Text,{children:n})]})};var d=t(6084),p=t(6304),u=t(46587),m=t(23947),h=t(90657),f=t(32788),g=t(29263),b=t(44926),_=t(78069),y=t(60908);const v={flex:"grow"},w={flex:"1",height:"100%",overflow:"auto"},T=e=>{let{onClose:n}=e;const[t,i]=(0,o.useState)(!1),[r,c]=(0,o.useState)(!1),[l,d]=(0,o.useState)({}),{handleChangeTab:p,activeTabIndex:m,tabsByName:h,tabs:T}=(0,_.A)(),S=(0,u.qO)(void 0,{shouldPersist:!0,onSuccess:n}),x=(0,o.useCallback)(()=>{i(!0),S(l).finally(()=>i(!1))},[l]),I=(0,o.useMemo)(()=>T.map(e=>{const{label:t,testId:o,Component:i}=h[e];return(0,s.jsx)(a.Tab,{label:t,"data-testid":`userProfileModal-${o}`,children:(0,s.jsx)(y.Ay,{tab:e,children:(0,s.jsx)(i,{..."profile"===e&&{setFormState:d,setFormValid:c},onClose:n})})},e)}),[T]);return(0,s.jsx)(f.GO,{onClose:n,width:{max:"60vw",base:180},children:(0,s.jsxs)(y.Ay,{feature:"UserSettings",children:[(0,s.jsx)(g.z,{onClose:n,title:"Settings",children:"profile"===T[m]&&(0,s.jsx)(a.Button,{disabled:!r,label:"Save",onClick:x,isLoading:t,loadingLabel:"saving..."})}),(0,s.jsx)(a.Tabs,{flex:"1",height:"100%",overflow:"hidden",selected:m,onChange:p,TabContent:f.Yv,TabsHeader:b.t,tabsProps:v,tabContentProps:w,children:I})]})})},S=(0,i.default)(a.Flex).attrs({column:!0,round:.5,border:{side:"all",color:"border"}}).withConfig({displayName:"dropdown__Dropdown",componentId:"sc-w0ej6i-0"})(["box-shadow:0 4px 4px rgba(0,0,0,0.25);"]);var x=t(39175),I=t(94404),M=t(74891);const P=(0,I.A)(l),N=(0,M.A)(d.A),k=(0,M.A)(a.Button),C=(0,i.default)(P).attrs(e=>({...e.hasSeparator?{border:{side:"top",color:"border"}}:{},...e})).withConfig({displayName:"userControl__StyledMenuItemWithLog",componentId:"sc-n4ebn8-0"})([""]),A={"Sign In":e=>{let{isAnonymous:n}=e;return n},"User Settings":e=>{let{isAgent:n,isAnonymous:t}=e;return n||!t},"Sign Out":e=>{let{isAnonymous:n}=e;return!n},default:()=>!0},D=e=>{let{dropdownBackground:n="darkBackground"}=e;const t=(0,u.uW)("avatarURL"),i=(0,u.uW)("name"),c=(0,u.uW)("isAnonymous"),[l,,d,f]=(0,p.A)(),g=(0,m.tN)(),b=(0,h.A)(),{handleOpenProfileModal:y,handleCloseProfileModal:v,isProfileModalOpen:w}=(0,_.A)(),I=(0,o.useMemo)(()=>[{name:"User Settings",icon:"user",onClick:()=>{f(),y()},hasSeparator:!1,testid:"userControl-settings"},{name:"Sign In",icon:"sign_in",onClick:()=>{f(),b()},hasSeparator:!0,testid:"userControl-signOut"},{name:"Sign Out",icon:"switch_off",onClick:()=>{f(),g()},hasSeparator:!0,testid:"userControl-signOut"}].filter(e=>(A[e.name]||A.default)({isAgent:x.Ay,isAnonymous:c})),[c,x.Ay]);return(0,s.jsxs)(r.A,{children:[!x.Ay&&c?(0,s.jsx)(k,{icon:"sign_in",onClick:d,"data-ga":"sidebar-sign-in::click-dropdown::global-view","data-testid":"sign-in-dropdown",iconSize:"medium",tooltip:"Sign In",tooltipProps:{align:"right"}}):(0,s.jsx)(N,{src:t||"","data-testid":"userControl-userAvatar",onClick:d,title:"",tooltip:{title:i||"User",description:"Edit your account settings and manage your notifications"},tooltipProps:{align:"right"}}),l&&(0,s.jsx)(a.Layer,{margin:[5,14],position:"bottom-left",onClickOutside:f,onEsc:f,children:(0,s.jsx)(S,{width:{min:50},background:n,children:I.map(e=>{let{name:n,...t}=e;return(0,s.jsx)(o.Fragment,{children:(0,s.jsx)(C,{label:n,padding:[3,4],payload:{description:`User menu - Click ${n}`},...t},n)},n)})})}),w&&(0,s.jsx)(T,{onClose:v})]})}},78069(e,n,t){"use strict";t.d(n,{A:()=>bn});t(74423),t(98992),t(54520);var o=t(96540),i=t(31141),a=t(46587),r=t(12720),s=t(89841),c=t(6084),l=t(23947),d=t(6304);var p=t(58582),u=t(74848);const m=e=>{const n=e.length<=40;return(0,s.H)(n,"User name cannot exceed 40 characters")},h=e=>{let{value:n,isValid:t,setIsValid:i,onChange:a,label:c,validators:l=[],hint:d,...h}=e;const f=(0,s.k)([m,...l]),[g,b]=(0,o.useState)("");return(0,o.useEffect)(()=>{const e=f(n),o=e.isValid,a=(0,p.W)(e);!t&&o?i(!0):t&&!o&&i(!1),b(a||"")},[t,n]),(0,u.jsx)(r.TextInput,{label:c||" ",name:"userName",placeholder:"Enter the user's name",value:n,onChange:a,hint:d,error:!t&&g,...h})};var f=t(18739),g=t(24609),b=t(86706),_=t(6818);const y=[e=>(0,s.H)(!!e,"Name should not be empty")],v=(0,_.o)(e=>{let{email:n,isLastMember:t,spaceName:o,inputValue:i="",onInputChange:a,children:s}=e;return(0,u.jsxs)(r.Flex,{column:!0,gap:2,children:[(0,u.jsxs)(r.TextBig,{children:["You are about to delete your account at ",(0,u.jsx)("strong",{children:"Netdata"}),". All data related to your account will be deleted."]}),t&&(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)(r.TextBig,{children:[(0,u.jsx)(r.TextBig,{strong:!0,children:o})," space will be deleted since you are the last member."]}),s]}),(0,u.jsx)(r.TextBig,{strong:!0,children:"This cannot be undone."}),(0,u.jsxs)(r.TextBig,{children:["To confirm, type ",(0,u.jsxs)(r.TextBig,{strong:!0,children:['"',n,'"']})," in the field below."]}),(0,u.jsx)(r.TextInput,{value:i,onChange:a,error:!0,hideErrorMessage:!0})]})}),w=e=>{let{setFormValid:n,setFormState:t}=e;const i=(0,a.uW)("name"),[s,p,m,_]=(0,r.useInputValue)({value:i,maxChars:40}),[w,T]=(0,o.useState)(!1),[S,x]=(0,o.useState)(""),[I,,M,P]=(0,d.A)(),[N,k]=(0,d.A)(),{value:C}=(0,f.JN)(),A=(0,g.ap)(),D=1===(0,b.Gi)().length,E=(0,a.uW)("email"),B=(0,a.uW)("avatarURL"),R=(0,o.useMemo)(()=>N||S!==E,[N,S,E]),j=(0,o.useCallback)(e=>{let{target:n}=e;return x(n.value)},[x]);(0,o.useEffect)(()=>{_&&n(w)},[_,w]),(0,o.useEffect)(()=>{t({name:s})},[s]);const O=(0,l.z2)();return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(r.Flex,{"data-testid":"user-profile-container",flex:"grow",alignItems:"center",justifyContent:"center",children:(0,u.jsxs)(r.Flex,{width:{base:"100%",max:"420px"},alignItems:"center",column:!0,gap:3,children:[(0,u.jsx)(c.A,{src:B||"","data-testid":"userProfile-avatar",width:30,height:30}),(0,u.jsx)(r.Flex,{width:"100%",column:!0,margin:[4,0,0,0],children:(0,u.jsx)(h,{"data-testid":"userProfile-username",value:s,onChange:p,isValid:w,setIsValid:T,validators:y,fieldIndicator:m,instantFeedback:"positiveFirst",isDirty:_,textAlign:"center"})}),(0,u.jsx)(r.Text,{"data-testid":"userProfile-email",color:"tooltipText",textAlign:"center",children:E}),(0,u.jsx)(r.Flex,{justifyContent:"center",margin:[4,0,0,0],children:(0,u.jsx)(r.Button,{flavour:"hollow",danger:!0,onClick:M,label:"Delete account","data-ga":"user-profile-settings::click-delete::global-view","data-testid":"userProfile-deleteAccount-button"})})]})}),I&&(0,u.jsx)(r.ConfirmationDialog,{confirmLabel:N?"Deleting...":"Yes, delete","data-ga":"delete-account-dialog","data-testid":"deleteAccountDialog",handleConfirm:()=>{k(),O()},handleDecline:P,message:(0,u.jsx)(v,{email:E,isLastMember:D,spaceName:A.name,currentPlan:C,inputValue:S,onInputChange:j}),title:"Delete Account",isConfirmDisabled:R,isConfirmLoading:N,isDeclineDisabled:N})]})};var T=t(24285),S=t(70140),x=t(63872);const I=()=>{const e=(0,o.useRef)(),[n,,t,i]=(0,d.A)(),[a,r]=(0,T.tF)("spacesList"),s=(0,S.A)(),[c,l]=(0,o.useState)(s),[p]=(0,x.A)(),u=(0,o.useCallback)(e=>{n||(t(),r(e),i())},[n,r,t,i]),m=(0,o.useCallback)(e=>{u({...c,spaceIds:e})},[c,u]),h=(0,o.useCallback)(e=>{let{id:n,color:t}=e;u({...c,colors:{...c.colors,[n]:t}})},[c,u]),f=(0,o.useCallback)(e=>{u({...c,colors:{...c.colors,[e]:s.colors?.[e]}})},[s,c,u]),g=(0,o.useCallback)(e=>{u({...c,colors:{...c.colors,[e]:void 0}})},[c,u]),b=(0,o.useMemo)(()=>!!a,[a]),_=(0,o.useCallback)(()=>{t(),r(null),i(),p({header:"Success",text:"All settings have been successfully deleted."})},[r,t,i]);return(0,o.useEffect)(()=>{l(s)},[s,l]),(0,o.useEffect)(()=>(e.current=Date.now(),()=>{e.current=0}),[]),{state:c,onOrderChange:m,onColorChange:h,onColorReset:f,onColorClear:g,onDelete:_,canDelete:b,loading:n}};t(81454);var M=t(43375),P=t(43627),N=t(74979),k=t(882),C=t(7542);const A=(0,k.default)(r.Flex).attrs(e=>({width:4,height:4,round:!0,border:{side:"all",color:"border"},cursor:"pointer",alignItems:"center",justifyContent:"center",...e})).withConfig({displayName:"styled__StyledColorBox",componentId:"sc-1iqu0oz-0"})(["background-color:",";"],e=>e.background),D=(0,k.default)(r.Icon).attrs(e=>({color:(0,C.T4)(e.backgroundColor)?["neutral","black"]:["neutral","white"],...e})).withConfig({displayName:"styled__StyledIcon",componentId:"sc-1iqu0oz-1"})([""]);var E=t(45087);t(8872);const B={green:["green50","green100","green150","green180"],red:["red50","red100","red150","red180"],yellow:["yellow50","yellow100","yellow150","yellow180"],blue:["blue50","blue100","blue150","blue180"],purple:["purple50","purple100","purple150","purple180"],violet:["violet50","violet100","violet150","violet180"]};var R=t(74891);const j=(0,R.A)(A),O=e=>{let{value:n,theme:t,onChange:i}=e;const a=(0,o.useMemo)(()=>Object.entries(B).reduce((e,n)=>{let[o,i]=n;return[...e,...i.map(e=>(0,r.getColor)([o,e])({theme:t}))]},[]),[t]),s=(0,o.useCallback)(()=>{const e=Math.floor(Math.random()*a.length-1),n=a[e];i({target:{value:n}})},[a,i]);return(0,u.jsx)(j,{border:"none",background:n,onClick:s,tooltip:"Change to random color",children:(0,u.jsx)(D,{name:"refresh",backgroundColor:n})})},L=(0,o.memo)(O),U=e=>{let{theme:n,onChange:t}=e;return(0,u.jsx)(r.Flex,{gap:2,children:Object.entries(B).map(e=>{let[o,i]=e;return(0,u.jsx)(r.Flex,{column:!0,gap:2,children:i.map(e=>{const i=(0,r.getColor)([o,e])({theme:n});return(0,u.jsx)(A,{border:"none",background:i,onClick:()=>t({target:{value:i}})},e)})},o)})})},q=(0,o.memo)(U),F=e=>{let{value:n,onChange:t}=e;const i=(0,k.useTheme)(),[a,s]=(0,o.useState)();return(0,o.useEffect)(()=>{s((0,C.Bi)(n)?null:"Invalid color value.")},[n]),(0,u.jsxs)(r.Flex,{column:!0,gap:2,padding:[4],children:[(0,u.jsxs)(r.Flex,{gap:2,children:[(0,u.jsx)(L,{value:n,theme:i,onChange:t}),(0,u.jsx)(r.TextInput,{height:7,value:n,onChange:t,error:a})]}),(0,u.jsx)(r.TextSmall,{children:"Choose from default colors."}),(0,u.jsx)(q,{theme:i,onChange:t})]})},z=e=>{let{value:n,tooltip:t,onChange:i}=e;const a=(0,o.useRef)(),[s,c,,l]=(0,d.A)(!1);return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(E.A,{align:"bottom",content:t,children:(0,u.jsx)(r.Flex,{ref:a,children:(0,u.jsx)(A,{background:n,onClick:c})})}),a.current&&s?(0,u.jsx)(r.Drop,{width:60,target:a.current,align:{top:"bottom",right:"right"},background:"modalBackground",margin:[2,0,0],round:!0,onClickOutside:l,onEsc:l,children:(0,u.jsx)(F,{value:n,onChange:i})}):null]})},H=e=>{let{value:n,onChange:t}=e;const i=(0,k.useTheme)(),a=(0,o.useMemo)(()=>i?.colors?.spaceIdle,[i]);return(0,u.jsx)(z,{value:n||a,onChange:t,tooltip:"Change color"})},G=e=>{let{id:n,color:t,onColorChange:i,onColorReset:a,onColorClear:r}=e;const s=(0,S.A)(),c=(0,o.useMemo)(()=>s.colors?.[n]!=t,[s,t]),l=(0,o.useCallback)(e=>{i({id:n,color:e.target.value})},[n,i]),d=(0,o.useCallback)(()=>{a(n)},[n,a]),p=(0,o.useCallback)(()=>{r(n)},[n,r]);return{isDirty:c,hasColor:!!t,onChange:l,onReset:d,onClear:p}},Y=(0,R.A)(r.Icon),V=e=>{let{id:n,color:t,onColorChange:o,onColorReset:i,onColorClear:a}=e;const{attributes:s,listeners:c,setNodeRef:l,transform:d,transition:p}=(0,P.gl)({id:n}),m={transform:N.Ks.Transform.toString(d),transition:p},{name:h}=(0,g.ns)(n),{isDirty:f,hasColor:b,onChange:_,onReset:y,onClear:v}=G({id:n,color:t,onColorChange:o,onColorReset:i,onColorClear:a});return(0,u.jsx)("div",{ref:l,style:m,...s,children:(0,u.jsxs)(r.Flex,{gap:1,alignItems:"center",children:[(0,u.jsx)(r.Icon,{name:"dots_2x3",color:"textLite",...c,cursor:"grab"}),(0,u.jsx)(H,{value:t,onChange:_}),(0,u.jsx)(r.Text,{children:h}),f?(0,u.jsx)(Y,{name:"reload",color:"text",cursor:"pointer",onClick:y,tooltip:"Reset background color to previous value",noWrapper:!0}):null,b?(0,u.jsx)(Y,{name:"x",color:"text",cursor:"pointer",onClick:v,tooltip:"Remove background color",noWrapper:!0}):null]},n)})},W=e=>{let{spaceIds:n,colors:t,onOrderChange:i,onColorChange:a,onColorReset:r,onColorClear:s}=e;const[c,l]=(0,o.useState)(n),[d,p]=(0,o.useState)(!1),m=(0,M.FR)((0,M.MS)(M.AN),(0,M.MS)(M.uN,{coordinateGetter:P.JR})),h=(0,o.useCallback)(e=>{const{active:n,over:t}=e;n?.id&&t?.id&&n.id!==t.id&&(l(e=>{const o=e.indexOf(n.id),i=e.indexOf(t.id);return(0,P.be)(e,o,i)}),p(!0))},[P.be,l,p]);return(0,o.useEffect)(()=>{l(n)},[n,l]),(0,o.useEffect)(()=>{d&&(i(c),p(!1))},[c,d,p,i]),(0,u.jsx)(M.Mp,{sensors:m,collisionDetection:M.fp,onDragEnd:h,children:(0,u.jsx)(P.gB,{items:c,strategy:P._G,children:c.map(e=>(0,u.jsx)(V,{id:e,color:t?.[e],onColorChange:a,onColorReset:r,onColorClear:s},e))})})},J=e=>{let{spaceIds:n,colors:t,onOrderChange:o,onColorChange:i,onColorReset:a,onColorClear:s}=e;return(0,u.jsx)(r.Flex,{column:!0,gap:2,children:(0,u.jsx)(W,{spaceIds:n,colors:t,onOrderChange:o,onColorChange:i,onColorReset:a,onColorClear:s})})},X="closeModal",K="deleteSettings",Q=()=>(0,u.jsxs)(r.Flex,{column:!0,gap:2,children:[(0,u.jsx)(r.Text,{children:"There are some unsaved changes that will be lost after closing the modal window."}),(0,u.jsx)(r.Text,{children:"Are you sure you want to colse without saving your changes?"})]}),$=()=>(0,u.jsxs)(r.Flex,{column:!0,gap:2,children:[(0,u.jsx)(r.Text,{children:"You are about to delete all previously saved settings. This action cannot be reverted."}),(0,u.jsx)(r.Text,{children:"Are you sure you want to continue?"})]}),Z={[X]:{title:"Close modal",confirmLabel:"Close without saving",message:(0,u.jsx)(Q,{})},[K]:{title:"Delete settings",confirmLabel:"Yes, delete settings",message:(0,u.jsx)($,{})}},ee=e=>{let{flavour:n,handleConfirm:t,handleDecline:i}=e;const a=(0,o.useMemo)(()=>Z[n],[n]);return(0,u.jsx)(r.ConfirmationDialog,{"data-testid":"spacesListDialog",handleConfirm:t,handleDecline:i,...a})},ne=(0,R.A)(r.Button),te=()=>{const e=(0,g.UV)("loaded"),{state:n,onOrderChange:t,onColorChange:i,onColorReset:a,onColorClear:s,onDelete:c,canDelete:l,loading:d}=I(),{spaceIds:p,colors:m}=n||{},h=d,[f,b]=(0,o.useState)(),_=(0,o.useCallback)(()=>b(),[b]),y=(0,o.useCallback)(()=>{b(K)},[b]),v=(0,o.useCallback)(()=>{c(),_()},[c,_]);return e?(0,u.jsxs)(r.Flex,{column:!0,gap:1,children:[(0,u.jsx)(J,{spaceIds:p,colors:m,onOrderChange:t,onColorChange:i,onColorReset:a,onColorClear:s}),(0,u.jsx)(r.Flex,{children:(0,u.jsx)(ne,{label:"Delete all settings",flavour:"borderless",disabled:h||!l,onClick:y,danger:!0,tooltip:h||!l?null:"Delete any previously saved settings."})}),f?(0,u.jsx)(ee,{flavour:f,handleConfirm:v,handleDecline:_}):null]}):(0,u.jsx)(r.Flex,{children:(0,u.jsx)(r.Text,{color:"textLite",children:"Loading spacess..."})})},oe=()=>{const[e,n]=(0,T.tF)("theme"),[t,i]=(0,T.tF)("chartsDesign"),[a,s]=(0,T.tF)("filterToolboxMode"),c=(0,o.useCallback)(e=>n(e.target.value),[]),l=(0,o.useCallback)(e=>i(e.target.value),[]),d=(0,o.useCallback)(e=>s(e.target.value),[s]);return(0,u.jsxs)(r.Flex,{column:!0,gap:3,justifyContent:"between",children:[(0,u.jsxs)(r.Flex,{column:!0,gap:2,"data-onboarding-id":"appearance-theme",children:[(0,u.jsx)(r.Text,{strong:!0,children:"UI Theme"}),(0,u.jsx)(r.RadioButton,{label:"Light",checked:"light"===e,onChange:c,value:"light"}),(0,u.jsx)(r.RadioButton,{label:"Dark",checked:"dark"===e||!e||"unspecified"===e,onChange:c,value:"dark"})]}),(0,u.jsxs)(r.Flex,{column:!0,gap:3,"data-onboarding-id":"appearance-charts",children:[(0,u.jsx)(r.Text,{strong:!0,children:"Charts"}),(0,u.jsxs)(r.Flex,{column:!0,gap:2,children:[(0,u.jsxs)(r.Flex,{column:!0,gap:.5,children:[(0,u.jsx)(r.TextSmall,{strong:!0,children:"Charts design"}),(0,u.jsx)(r.TextSmall,{color:"textDescription",children:"Choose the chart presentation density."})]}),(0,u.jsx)(r.RadioButton,{label:"Default",checked:"default"===t||!t,onChange:l,value:"default"}),(0,u.jsx)(r.RadioButton,{label:"Minimal",checked:"minimal"===t,onChange:l,value:"minimal"})]}),(0,u.jsxs)(r.Flex,{column:!0,gap:2,children:[(0,u.jsxs)(r.Flex,{column:!0,gap:.5,children:[(0,u.jsx)(r.TextSmall,{strong:!0,children:"Filter toolbox"}),(0,u.jsx)(r.TextSmall,{color:"textDescription",children:"When set to Fixed, the chart filter toolbox is always visible above the chart and takes vertical space. When set to Floating, it overlays the chart and only appears while you hover the chart, freeing the vertical space and giving you a larger chart area at rest."})]}),(0,u.jsx)(r.RadioButton,{label:"Fixed",checked:"fixed"===a||!a,onChange:d,value:"fixed"}),(0,u.jsx)(r.RadioButton,{label:"Floating",checked:"floating"===a,onChange:d,value:"floating"})]})]}),(0,u.jsxs)(r.Flex,{column:!0,gap:2,children:[(0,u.jsxs)(r.Flex,{column:!0,gap:.5,children:[(0,u.jsx)(r.Text,{strong:!0,children:"Configure spaces list"}),(0,u.jsx)(r.Text,{color:"textLite",children:"Reorder spaces by dragging and customize their colors using the color picker."})]}),(0,u.jsx)(te,{})]})]})};var ie=t(42790);const ae=[{value:"browser",label:"Browser default"},{value:"en-US",label:"English (US)"},{value:"en-GB",label:"English (UK)"},{value:"de-DE",label:"Deutsch"},{value:"fr-FR",label:"Fran\xe7ais"},{value:"es-ES",label:"Espa\xf1ol"},{value:"pt-BR",label:"Portugu\xeas (Brasil)"},{value:"ja-JP",label:"\u65e5\u672c\u8a9e"},{value:"zh-CN",label:"\u4e2d\u6587 (\u7b80\u4f53)"},{value:"ko-KR",label:"\ud55c\uad6d\uc5b4"},{value:"ru-RU",label:"\u0420\u0443\u0441\u0441\u043a\u0438\u0439"},{value:"it-IT",label:"Italiano"},{value:"nl-NL",label:"Nederlands"},{value:"pl-PL",label:"Polski"},{value:"tr-TR",label:"T\xfcrk\xe7e"},{value:"el-GR",label:"\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"}],re=()=>{const[e,n]=(0,T.tF)("dimensionsToShow"),[t,i]=(0,T.tF)("defaultForcePlay"),[a,s]=(0,T.tF)("locale"),[c,l]=(0,T.tF)("showHomePageStatistics"),d=(0,o.useCallback)(e=>n(e.target.value),[]),p=(0,o.useCallback)(e=>{l("true"===e.target.value)},[l]),m=(0,o.useMemo)(()=>ae.find(e=>{let{value:n}=e;return n===(a??"browser")}),[a]),h=(0,o.useCallback)(e=>s(e.value),[s]),f=(0,ie.rI)(),g=(0,o.useCallback)(e=>{i("true"===e.target.value),f(n=>({...n,forcePlay:"true"===e.target.value}))},[]);return(0,u.jsxs)(r.Flex,{column:!0,gap:3,justifyContent:"between",children:[(0,u.jsxs)(r.Flex,{column:!0,gap:2,children:[(0,u.jsxs)(r.Flex,{column:!0,gap:.5,children:[(0,u.jsx)(r.Text,{strong:!0,children:"Which dimensions to show?"}),(0,u.jsx)(r.TextSmall,{color:"textDescription",children:"When set to Non Zero, dimensions that have all their values (within the current view) set to zero will not be transferred from the netdata server (except if all dimensions of the chart are zero, in which case this setting does nothing - all dimensions are transferred and shown). When set to All, all dimensions will always be shown. Set it to Non Zero to lower the data transferred between netdata and your browser, lower the CPU requirements of your browser (fewer lines to draw) and increase the focus on the legends (fewer entries at the legends)."})]}),(0,u.jsx)(r.RadioButton,{label:"Non Zero",checked:"nonZero"===e||!e,onChange:d,value:"nonZero"}),(0,u.jsx)(r.RadioButton,{label:"All",checked:"all"===e,onChange:d,value:"all"})]}),(0,u.jsxs)(r.Flex,{column:!0,gap:2,"data-onboarding-id":"preferences-refresh",children:[(0,u.jsxs)(r.Flex,{column:!0,gap:.5,children:[(0,u.jsx)(r.Text,{strong:!0,children:"Default refresh mode"}),(0,u.jsx)(r.TextSmall,{color:"textDescription",children:"Choose your preferred default refresh mode. Standard Play pauses automatic refreshes when the browser tab loses focus to save system resources. Force Play keeps refreshing continuously, even when the tab is not in focus. This is useful for monitoring dashboards on secondary screens."})]}),(0,u.jsx)(r.RadioButton,{label:"Standard Play",checked:!t,onChange:g,value:"false"}),(0,u.jsx)(r.RadioButton,{label:"Force Play",checked:t,onChange:g,value:"true"})]}),(0,u.jsxs)(r.Flex,{column:!0,gap:2,"data-onboarding-id":"preferences-locale",children:[(0,u.jsxs)(r.Flex,{column:!0,gap:.5,children:[(0,u.jsx)(r.Text,{strong:!0,children:"Number and date format"}),(0,u.jsx)(r.TextSmall,{color:"textDescription",children:"Choose how numbers, dates, and times are formatted throughout the application."})]}),(0,u.jsx)(r.Select,{value:m,options:ae,onChange:h,menuPlacement:"auto",placeholder:"Select locale..."})]}),(0,u.jsxs)(r.Flex,{column:!0,gap:2,"data-onboarding-id":"preferences-load-statistics",children:[(0,u.jsxs)(r.Flex,{column:!0,gap:.5,children:[(0,u.jsx)(r.Text,{strong:!0,children:"Always load home page statistics"}),(0,u.jsx)(r.TextSmall,{color:"textDescription",children:"By default, some additional statistics (data replication, alerts, available metrics etc) are not loaded in home page when the room contains a big number of nodes."})]}),(0,u.jsx)(r.RadioButton,{label:"Load statistics on demand",checked:!c,onChange:p,value:"false"}),(0,u.jsx)(r.RadioButton,{label:"Always load statistics",checked:c,onChange:p,value:"true"})]})]})};var se=t(64587),ce=t(41514);const le=(0,t(94404).A)(r.Button),de=["scope:all","scope:agent-ui","scope:grafana-plugin","scope:mcp"],pe=e=>{let{onCloseModal:n,onCreate:t}=e;const[i,a]=(0,o.useState)(""),[s,c]=(0,o.useState)("scope:all");return(0,u.jsxs)(r.ModalContent,{children:[(0,u.jsxs)(r.ModalHeader,{children:["Create New Token",(0,u.jsx)(r.ModalCloseButton,{testId:"close-button",onClose:n})]}),(0,u.jsxs)(r.ModalBody,{gap:2,width:80,children:[(0,u.jsx)(r.TextInput,{"data-testid":"description",placeholder:"Enter Description",onChange:e=>{let{target:n}=e;return a(n.value)},value:i,size:"small"}),(0,u.jsx)(r.Flex,{column:!0,gap:2,"data-testid":"scopes",children:de.map(e=>(0,u.jsx)(r.RadioButton,{checked:s===e,onChange:e=>c(e.target.value),value:e,alignItems:"start",children:(0,u.jsx)(r.TextSmall,{children:e})},e))})]}),(0,u.jsx)(r.ModalFooter,{children:(0,u.jsx)(le,{disabled:""===i.trim(),label:"Create",onClick:()=>t({description:i,scope:s}),"data-testid":"btn-create",payload:{description:"Modal - Create Token"}})})]})};var ue=t(12273),me=t(81214),he=t(61409),fe=t(12724);const ge=function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return()=>{(0,me.A)(e);const t=(0,fe.UI)({...{header:"Copied",text:"Token copied to your clipboard!",icon:"gear",...n},success:!0});he.oR.success(t,{context:"copy"})}};var be=t(60908);const _e=e=>{let{onCloseModal:n,token:t}=e;return(0,u.jsx)(r.ModalContent,{children:(0,u.jsxs)(be._0,{feature:"TokenCreated",children:[(0,u.jsxs)(r.ModalHeader,{children:["Token Generated",(0,u.jsx)(r.ModalCloseButton,{testId:"close-button",onClose:n})]}),(0,u.jsx)(r.ModalBody,{children:(0,u.jsxs)(r.Flex,{column:!0,gap:4,children:[(0,u.jsxs)(ue.FU,{children:[(0,u.jsx)("span",{"data-testid":"token",children:t}),(0,u.jsx)(ue.vE,{name:"copy",size:"small",color:"primary",onClick:ge(t),"data-ga":"profile::click-copytoken::all-pages::api-token"})]}),(0,u.jsxs)(r.Flex,{alignItems:"center",background:"warningBackground",gap:4,padding:[3,3],round:!0,children:[(0,u.jsx)(ue.RV,{"data-testid":"noNodesView-warningBannerIcon",name:"exclamation",color:"warning"}),(0,u.jsx)(ue.yB,{"data-testid":"warning-message",children:"Make sure to copy or store this token and add it where you need it. Once you close this modal you will not be able to retrieve it again."})]})]})}),(0,u.jsx)(r.ModalFooter,{children:(0,u.jsx)(r.Button,{label:"Close",onClick:n})})]})})};var ye=t(67916);const ve=e=>{let{onCloseModal:n,onTokenCreated:t,view:i,token:a}=e;const[s,c]=(0,o.useState)(i),[l,d]=(0,o.useState)(a);return(0,u.jsxs)(r.Modal,{onClickOutside:n,onEsc:n,children:["CreateView"===s&&(0,u.jsx)(pe,{"data-testid":"create-view",onCloseModal:n,onCreate:async e=>{let{description:n,scope:o}=e;const i=await(0,ye.Ey)({description:n,scope:o});(0,ce.H)("api-token","create-token","profile",{description:n,scope:o}),d(i.data.token),c("CopyTokenView"),t()}}),"CopyTokenView"===s&&l&&(0,u.jsx)(_e,{onCloseModal:n,token:l})]})},we=()=>{const[e,n]=(0,o.useState)([]),[t,,i,a]=(0,d.A)(!0),r=async()=>{i();const e=await(0,ye.li)();a(),n(e.data)};return(0,o.useEffect)(()=>{r()},[]),{isLoading:t,data:e,setData:n,fetchData:r}};t.dn(we);var Te=t(3319);const Se={right:["actions"]},xe=()=>{const{localeDateString:e}=(0,se.$j)(),n=(0,o.useMemo)(()=>(e=>[{id:"description",header:"Description",fullWidth:!0,size:150,wrap:!0,cell:e=>{let{getValue:n}=e;return(0,u.jsx)(E.A,{plain:!0,content:n()||"",isBasic:!0,children:(0,u.jsx)(r.TextSmall,{truncate:!0,children:n()||""})})}},{id:"scopes",header:"Scope",fullWidth:!0,size:150,wrap:!0,cell:e=>{let{getValue:n}=e;return(0,u.jsx)(r.TextSmall,{children:(Array.isArray(n())?n():[]).join(", ")})}},{id:"created_at",header:"Created at",cell:n=>{let{getValue:t}=n;return(0,u.jsx)(r.TextSmall,{children:t()?e(new Date(t())):"-"})},sortingFn:"datetime"},{id:"last_used_at",header:"Used at",cell:n=>{let{getValue:t}=n;return(0,u.jsx)(r.TextSmall,{children:t()?e(new Date(t())):"-"})},sortingFn:"datetime"},{id:"ends_with",header:"Token",cell:e=>{let{getValue:n}=e;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(r.TextSmall,{style:{verticalAlign:"sub"},children:"******"}),n()]})}}])(e),[e]),[t,i]=(0,o.useState)(!1),[a,s]=(0,o.useState)(!1),[c,l]=(0,o.useState)(null),{data:d,setData:p,fetchData:m}=we(),{sendButtonClickedLog:h}=(0,Te.A)(),f=(0,o.useMemo)(()=>({addEntry:{handleAction:()=>{i(!0),h({label:"Create new token"},!0)},tooltipText:"Create new token"}}),[h]),[,g]=(0,x.A)(),b=(0,o.useMemo)(()=>({delete:{handleAction:e=>{let{id:n}=e;(0,ye.ni)(n).then(()=>{p(e=>e.filter(e=>e.id!==n)),(0,ce.H)("api-token","delete-token","profile"),h({label:"Delete token"},!0)}).catch(g)},confirmationTitle:"Delete API Token",confirmationMessage:"You are about to delete API Token, are you sure you want to continue?"}}),[d]);return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(r.Table,{dataColumns:n,data:d,bulkActions:f,rowActions:b,enableResizing:!0,enableSorting:!0,columnPinning:Se,enableColumnPinning:!0}),t&&(0,u.jsx)(ve,{view:"CreateView",onCloseModal:()=>i(!1),onTokenCreated:m}),a&&(0,u.jsx)(ve,{view:"CopyTokenView",onCloseModal:()=>{s(!1),l(null)},token:c})]})};var Ie=t(48301),Me=t(78152),Pe=t(63950),Ne=t.n(Pe);const ke=(Ce=r.Toggle,e=>{let{disabledInfo:n="This setting is disabled",...t}=e;const{disabled:o}=t||{};return o?(0,u.jsx)(E.A,{content:n,children:(0,u.jsx)(r.Box,{children:(0,u.jsx)(Ce,{...t})})}):(0,u.jsx)(Ce,{...t})});var Ce;const Ae=e=>{let{title:n="",description:t="",label:o="",checked:i,onChange:a=Ne(),...s}=e;return(0,u.jsxs)(r.Flex,{justifyContent:"between",alignItems:"center",children:[(0,u.jsxs)(r.Flex,{gap:.5,column:!0,children:[(0,u.jsx)(r.Text,{strong:!0,children:n}),(0,u.jsx)(r.TextSmall,{color:"textLite",children:t})]}),(0,u.jsx)(ke,{colored:!0,onChange:a,checked:i,"data-testid":`profileNotifications-${o}NotificationsToggle`,"data-ga":"profile-ntab::click-toggle::global-view::"+(i?"enabled":"disabled"),...s})]})};t.dn(Ae);var De=t(194);const Ee=()=>{const{isLoading:e,data:n}=we(),[t,i]=(0,o.useState)(),[a,r]=(0,o.useState)(),[,s]=(0,x.A)();return(0,o.useEffect)(()=>{e||(async()=>{n?.length>0&&await Promise.all(n.map(e=>{let{id:n}=e;return(0,ye.ni)(n)})).catch(s),(0,ye.Ey)({description:"Mobile App",scope:"scope:mobile-app"}).then(e=>{let{data:n}=e;n?.token&&i(n.token)}).catch(e=>{s({header:"Error",text:"Something went wrong"}),r(!0)})})()},[e]),{token:t,error:a}};t.dn(Ee);const Be=e=>{let{value:n}=e;return(0,u.jsx)(r.Box,{width:"232px",height:"232px",background:"white",padding:[4],round:3,children:(0,u.jsx)(De.Ay,{size:200,value:n})})},Re=e=>{let{onClose:n=Ne()}=e;const{token:t,error:o}=Ee();return(0,u.jsx)(r.Modal,{children:(0,u.jsxs)(r.ModalContent,{width:{min:100,base:140},children:[(0,u.jsxs)(r.ModalHeader,{children:[(0,u.jsx)(r.Text,{children:"Scan QR Code"}),(0,u.jsx)(r.ModalCloseButton,{onClose:n,testId:"close-button"})]}),(0,u.jsx)(r.ModalBody,{children:(0,u.jsx)(r.Flex,{alignItems:"center",justifyContent:"center",height:100,children:t?(0,u.jsx)(Be,{value:t}):(0,u.jsx)(r.Flex,{width:"100%",height:"100%",alignItems:"center",justifyContent:"center",padding:[4],children:o?(0,u.jsx)(r.TextBigger,{children:"An error occurred"}):(0,u.jsx)(r.H3,{children:"Generating token"})})})}),(0,u.jsx)(r.ModalFooter,{children:(0,u.jsx)(r.Flex,{justifyContent:"end",padding:[1,2],children:(0,u.jsx)(r.Button,{label:"Done",onClick:n})})})]})})},je=()=>{const[e,n]=(0,Ie.j$)("email"),t=(0,o.useCallback)(()=>n(!e),[e,n]),[i,a]=(0,Ie.j$)("mobileApp"),s=(0,o.useCallback)(()=>{a(!i?.enabled)},[i,a]),[c,,l,p]=(0,d.A)();return(0,u.jsxs)(r.Flex,{column:!0,gap:2,children:[(0,u.jsx)(Ae,{title:"E-mail",description:"Netdata will send you health notifications via e-mails",label:"email",checked:e,onChange:t}),Me.Mh&&(0,u.jsxs)(r.Flex,{column:!0,children:[(0,u.jsx)(Ae,{title:"Mobile App Notifications",description:"Netdata will send you health notifications via mobile app notifications",label:"mobileApp",checked:i?.enabled,onChange:s,disabled:!i?.linked,disabledInfo:"You have to link a device first and then enable notifications"}),(0,u.jsx)(r.Flex,{justifyContent:"end",children:(0,u.jsx)(r.Button,{flavour:"borderless",icon:"qrCode",iconColor:"primary",iconSize:"small",onClick:l,children:(0,u.jsx)(r.Text,{color:"primary",children:"Show QR code"})})}),c&&(0,u.jsx)(Re,{onClose:p})]})]})};var Oe=t(62718),Le=t(99728),Ue=(t(72577),t(55093)),qe=t(76571),Fe=t(84060),ze=t(49916),He=t(84049),Ge=t(19186),Ye=t(71819);const Ve=k.default.div.withConfig({displayName:"styled__Row",componentId:"sc-lpc291-0"})(["width:100%;height:auto;display:flex;flex-flow:row nowrap;align-items:center;padding-left:",";padding-top:",";padding-bottom:",";margin-bottom:",";&:nth-child(odd){background-color:",";}"],(0,r.getSizeBy)(3),(0,r.getSizeBy)(1),(0,r.getSizeBy)(1),(0,r.getSizeBy)(2),(0,r.getColor)("modalTabsBackground")),We=(0,k.default)(r.Icon).withConfig({displayName:"styled__StyledIcon",componentId:"sc-lpc291-1"})(["width:20px;height:20px;margin-right:",";"],(0,r.getSizeBy)()),Je=(0,k.css)(["&&{width:250px;}margin-left:auto;"]),Xe=(0,k.default)(r.Select).withConfig({displayName:"styled__StyledSelect",componentId:"sc-lpc291-2"})(["",""],Je),Ke=(0,k.default)(r.Button).withConfig({displayName:"styled__SettingsLoader",componentId:"sc-lpc291-3"})([""," color:",";border:1px solid ",";.path{stroke:",";}"],Je,(0,r.getColor)("text"),(0,r.getColor)("border"),(0,r.getColor)("text")),Qe=e=>{let{roomId:n,spaceId:t}=e;const i=(0,Ye.A)(),[a,r]=(0,Ie.yP)({roomId:n,spaceId:t,key:"notification_options"}),[s,c]=(0,o.useState)(),l=(0,o.useMemo)(()=>a?i.filter(e=>a.includes(e.value)):[],[i,a]),d=(0,o.useCallback)(e=>{c(e)},[c]),p=(0,o.useCallback)(()=>{s&&Array.isArray(s)&&r(s.map(e=>{let{value:n}=e;return n}))},[s,r]);return(0,u.jsx)(Xe,{options:i,value:s||l,onChange:d,onMenuClose:p,isMulti:!0,closeMenuOnSelect:!1,menuPlacement:"auto"})},$e=e=>{let{roomId:n,spaceId:t}=e;const[i,a]=(0,o.useState)(),s=(0,He.th)(t,n,{onFail:()=>{a(!1)},onSuccess:()=>{a(!1)}}),c=(0,o.useCallback)(()=>{a(!0),s()},[s,n]);return(0,u.jsx)(r.Box,{margin:[0,2,0,"auto"],children:(0,u.jsx)(E.A,{content:"Join this room to activate notifications for it",isBasic:!0,children:(0,u.jsx)(r.Button,{isLoading:i,label:"Join",onClick:c,flavour:"hollow"})})})},Ze=e=>{let{isMember:n,roomId:t,spaceId:i}=e;const a=(0,Ge.wz)(t,"name");return(0,u.jsxs)(Ve,{"data-testid":`roomSettings-room-${a}`,"data-ga":`profile-ntab::click-join-room-${a}::global-view`,children:[(0,u.jsx)(We,{name:"room",color:"text"}),(0,u.jsx)(r.Text,{children:a}),n?(0,u.jsx)(o.Suspense,{fallback:(0,u.jsx)(Ke,{isLoading:!0,flavour:"hollow",label:"Loading settings.."}),children:(0,u.jsx)(Qe,{roomId:t,spaceId:i})}):(0,u.jsx)($e,{roomId:t,spaceId:i})]})},en=k.default.div.withConfig({displayName:"styled__CollapsibleRoot",componentId:"sc-1p8t8zr-0"})(["width:100%;height:",";display:flex;flex-flow:row nowrap;align-items:center;cursor:pointer;margin-bottom:",";"],(0,r.getSizeBy)(5),(0,r.getSizeBy)(2)),nn=(0,k.default)(r.Icon).withConfig({displayName:"styled__OpenerIcon",componentId:"sc-1p8t8zr-1"})(["height:5px;width:6px;margin-right:",";",";"],(0,r.getSizeBy)(2),e=>{let{expanded:n}=e;return n&&"transform: rotate(90deg)"}),tn=(0,k.default)(r.Icon).withConfig({displayName:"styled__SpaceIcon",componentId:"sc-1p8t8zr-2"})(["width:20px;height:20px;margin-right:",";"],(0,r.getSizeBy)()),on=(0,k.default)(r.Text).withConfig({displayName:"styled__SpaceLabel",componentId:"sc-1p8t8zr-3"})(["font-weight:bold;"]),an=(0,k.default)(r.TextSmall).withConfig({displayName:"styled__SettingsInfo",componentId:"sc-1p8t8zr-4"})(["margin-left:auto;opacity:0.8;"]);var rn=t(41258);const sn=e=>{let{expanded:n,onExpand:t,label:o,spaceId:i}=e;(0,rn.A)(i);const a=(0,qe.t5)(i,"loaded"),r=(0,qe.t5)(i,"channels").find(e=>"Email"===e.integration.slug)||{};return(0,u.jsxs)(en,{onClick:t,"data-testid":`spaceRoot-space-${o}`,children:[(0,u.jsx)(nn,{name:"chevron_right",expanded:n,color:"text"}),(0,u.jsx)(tn,{name:"space",color:"text"}),(0,u.jsx)(on,{children:o}),a&&!r.enabled&&(0,u.jsx)(an,{children:"E-mail notifications for this space has been disabled by admin"})]})},cn={width:"108px",height:"77px"},ln=e=>{let{spaceId:n,isCurrent:t,showAllRooms:i}=e;const[a,s]=(0,d.A)(t),c=(0,Fe.A)(n,{autorun:!1,polling:!1}),l=(0,ze.sC)(n,"loaded");(0,o.useEffect)(()=>{n&&a&&!l&&c()},[a,l,n,c]);const p=(0,g.ns)(n,"name"),m=(0,ze.CB)(n),h=(0,o.useMemo)(()=>i?m:m.filter(e=>{let{isMember:n}=e;return n}),[m,i]),f=(0,o.useRef)();return(0,o.useEffect)(()=>{a&&f.current&&f.current.scrollIntoView({behavior:"smooth",block:"start"})},[a]),(0,u.jsxs)(r.Flex,{column:!0,ref:f,children:[(0,u.jsx)(sn,{expanded:a,onExpand:s,label:p,spaceId:n}),(0,u.jsx)(r.Collapsible,{gap:0,open:a,children:()=>l?(0,u.jsx)(u.Fragment,{children:h.map(e=>{let{id:t,isMember:o}=e;return(0,u.jsx)(Ze,{isMember:o,roomId:t,spaceId:n},t)})}):(0,u.jsx)(Ue.A,{iconProps:cn,title:"Loading..."})})]})};var dn=t(64602);const pn=e=>{let{onFilterClick:n,showAllRooms:t,...o}=e;return(0,u.jsxs)(r.Flex,{gap:2,padding:[1,2],"data-testid":"roomFilterPills",...o,children:[(0,u.jsx)(dn.O,{flavour:t?"hollow":"default",onClick:n(!1),label:"My Rooms","data-ga":"roomFilterPills::click-my::global-view","data-testid":"roomFilterPills-showMy"}),(0,u.jsx)(dn.O,{flavour:t?"default":"hollow",onClick:n(!0),label:"All Rooms","data-ga":"roomFilterPills::click-show-all::global-view","data-testid":"roomFilterPills-showAll"})]})},un=()=>{const e=(0,g.vt)(),n=(e=>{const n=(0,g.UV)("ids");return(0,o.useMemo)(()=>n.reduce((n,t)=>t===e?[t,...n]:[...n,t],[]),[e,n])})(e),t=(0,Le.JT)("room:ReadAll"),[i,a]=(0,o.useState)(!1);return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(r.TextBig,{strong:!0,children:"Notifications for all your Netdata Spaces and all the Rooms you are in"}),t&&(0,u.jsx)(pn,{onFilterClick:e=>n=>{n.stopPropagation(),a(e)},showAllRooms:i,padding:[1,0]}),(0,u.jsx)(r.Flex,{overflow:{vertical:"auto"},column:!0,"data-testid":"spaceRoomNotifications-spacesContainer",padding:[3,3,3,0],children:(0,u.jsx)(o.Suspense,{fallback:(0,u.jsx)(Oe.aW,{}),children:n.map(n=>(0,u.jsx)(ln,{isCurrent:n===e,showAllRooms:i,spaceId:n},n))})})]})},mn=(0,o.memo)(()=>(0,u.jsxs)(r.Flex,{overflow:{vertical:"hidden"},column:!0,gap:4,children:[(0,u.jsx)(r.TextBig,{strong:!0,children:"Notification Methods"}),(0,u.jsx)(je,{}),(0,u.jsx)(r.Flex,{height:"1px",background:"border"}),(0,u.jsx)(un,{})]})),hn={offline:["theme","preferences"],online:["profile","theme","preferences","notifications","apiTokens"]},fn={profile:{Component:w,label:(0,u.jsx)(r.Text,{children:"Profile"}),order:0,testId:"profileTab"},theme:{Component:oe,label:(0,u.jsx)(r.Text,{children:"Appearance"}),order:1,testId:"themeTab"},preferences:{Component:re,label:(0,u.jsx)(r.Text,{children:"Preferences"}),order:2,testId:"preferencesTab"},notifications:{Component:mn,label:(0,u.jsx)(r.Text,{children:"Notifications"}),order:3,testId:"notificationsTab"},apiTokens:{Component:xe,label:(0,u.jsx)(r.Text,{children:"API tokens"}),order:4,testId:"apiTokensTab"}},gn=e=>(fn[e]||fn.profile).order,bn=function(){let{modalName:e="profile"}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=(0,a.uW)("isAnonymous"),t=(0,o.useMemo)(()=>Object.keys(fn).filter(e=>hn[n?"offline":"online"].includes(e)),[n]),{isModalOpen:r,currentModalTab:s,handleOpenModal:c,handleCloseModal:l,handleChangeModalTab:d}=(0,i.A)(e),[p,u]=(0,o.useState)(gn(s)),m=e=>{d(e)};return(0,o.useEffect)(()=>{u(gn(s))},[s]),{handleOpenProfileModal:function(){c(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"profile")},handleCloseProfileModal:()=>{l()},getPreselectedTab:gn,setCurrentTab:m,handleChangeTab:e=>{const n=t[e];u(e),m(n)},tabs:t,tabsByName:fn,activeTabIndex:p,isProfileModalOpen:r}}},67916(e,n,t){"use strict";t.d(n,{Ey:()=>i,li:()=>a,ni:()=>r});var o=t(91130);const i=e=>{let{description:n,scope:t}=e;return o.A.post("/api/v1/auth/account/api-token",{description:n,scopes:[t]})},a=()=>o.A.get("/api/v1/auth/account/api-token"),r=e=>o.A.delete(`/api/v1/auth/account/api-token/${e}`)},12273(e,n,t){"use strict";t.d(n,{FU:()=>r,RV:()=>s,vE:()=>l,yB:()=>c});var o=t(882),i=t(12720),a=t(74848);const r=o.default.div.withConfig({displayName:"styled__TokenContainer",componentId:"sc-s1axew-0"})(["display:flex;flex-direction:column;align-items:center;color:",";background:",";border:1px solid ",";border-radius:2px;overflow-wrap:anywhere;white-space:pre-wrap;padding:23px 27px 14px;width:100%;font-family:monospace;letter-spacing:0.09px;line-height:18px;font-size:14px;word-break:break-word;"],(0,i.getColor)("textDescription"),(0,i.getColor)("modalTabsBackground"),(0,i.getColor)("borderSecondary")),s=e=>(0,a.jsx)(i.Box,{...e,as:i.Icon,sx:{borderRadius:"50%",overflow:"hidden",background:(0,i.getColor)(["neutral","white"])}}),c=e=>(0,a.jsx)(i.Text,{...e,color:["neutral","grey35"]}),l=e=>(0,a.jsx)(i.Flex,{...e,as:i.Icon,sx:{alignSelf:"flex-end",cursor:"pointer"}})},78385(e,n,t){"use strict";t.d(n,{wz:()=>c,tD:()=>u,WM:()=>l,x3:()=>m,ww:()=>d});var o=t(96540),i=t(52035),a=t(34843);const r=(0,i.eU)({activePanel:null,isEditMode:!1}),s=(0,i.eU)(e=>e(r).activePanel,(e,n,t)=>{const o="function"===typeof t?t(e(r).activePanel):t;n(r,e=>({...e,activePanel:o}))}),c=()=>(0,a.md)(s),l=()=>(0,a.Xr)(s),d=()=>{const e=(0,a.Xr)(s);return(0,o.useCallback)(n=>{e(e=>e===n?null:n)},[e])},p=(0,i.eU)(e=>e(r).isEditMode,(e,n,t)=>n(r,e=>({...e,isEditMode:t}))),u=()=>(0,a.md)(p),m=()=>(0,a.Xr)(p)},22794(e,n,t){"use strict";t.d(n,{A:()=>F});var o=t(96540),i=t(54852),a=t(882),r=t(12720),s=t(79748),c=t(30005),l=t(37846),d=t(92318),p=t(74848);const u=a.default.article.withConfig({displayName:"nodes__StyledArticle",componentId:"sc-z8xzec-0"})(["padding-right:8px;padding-bottom:16px;"]),m=a.default.p.withConfig({displayName:"nodes__StyledParagraph",componentId:"sc-z8xzec-1"})(["margin-top:14px;line-height:1.5;"]),h=(0,a.default)(c.Ay).withConfig({displayName:"nodes__StyledCommand",componentId:"sc-z8xzec-2"})(["padding:8px;padding-right:32px;margin-top:8px;"]),f=a.default.ol.withConfig({displayName:"nodes__OrderedList",componentId:"sc-z8xzec-3"})(["list-style:roman;padding-left:16px;line-height:2;"]),g=a.default.ul.withConfig({displayName:"nodes__UnorderedList",componentId:"sc-z8xzec-4"})(['list-style-image:url("','/img/list-style-image.svg");padding-left:16px;line-height:2;'],d.A.assetsBaseURL),b={document:{render:u},heading:{render:e=>{let{level:n=1,...t}=e;const o={1:r.H1,2:r.H2,3:r.H3,4:r.H4,5:r.H5,6:r.H6}[n]||r.H1,i=n<=3?6-n:2;return(0,p.jsx)(o,{margin:[i,0,2,0],...t})},attributes:{id:{type:String},level:{type:Number}}},paragraph:{render:m},link:{render:e=>{let{children:n,href:t,...o}=e;return(0,p.jsx)(s.A,{href:t,rel:"noopener noreferrer",target:"_blank",...o,children:n})},attributes:{href:{type:String}}},code:{render:e=>{let{content:n,...t}=e;return(0,p.jsx)(c.R0,{as:"span",...t,children:n})},attributes:{content:{type:String}}},fence:{render:h,attributes:{content:{type:String}}},list:{render:e=>{let{ordered:n,children:t,...o}=e;const i=n?f:g;return(0,p.jsx)(i,{...o,children:t})},attributes:{ordered:{type:Boolean}}},table:{render:e=>{let{children:n,...t}=e;return(0,p.jsx)(l.gY,{...t,children:n})}},strong:{render:e=>{let{children:n,...t}=e;return(0,p.jsx)(r.Text,{strong:!0,fontSize:"14px",...t,children:n})}},blockquote:{render:e=>{let{children:n,...t}=e;return(0,p.jsx)(r.Flex,{padding:[0,4,3,4],background:"modalTabsBackground",border:{side:"left",size:"3px",color:"border"},...t,children:n})}}},_=e=>{let{summary:n="",open:t=!1,children:o}=e;return(0,p.jsx)(r.Flex,{margin:[2,0,0,0],children:(0,p.jsxs)("details",{open:t,children:[(0,p.jsx)("summary",{children:(0,p.jsx)(r.Text,{strong:!0,children:n})}),o]})})};t(33811),t(86994),t(98992),t(81454),t(41795);var y=t(67723);const v=e=>{let{children:n}=e;const[t,i]=(0,o.useState)(0),a=o.Children.toArray(n).map(e=>{let{props:n}=e;return n});return(0,p.jsxs)(r.Flex,{column:!0,width:"100%",margin:[4,0,0,0],children:[(0,p.jsx)(r.Flex,{border:{side:"bottom",size:"1px",color:"borderSecondary"},padding:[0,4],children:(0,p.jsx)(r.Tabs,{selected:t,onChange:i,children:a.map(e=>{let{label:n}=e;return(0,p.jsx)(r.Tab,{label:(0,p.jsx)(r.Text,{children:n}),minWidth:"auto",maxWidth:"auto",padding:[1,4],background:"mainBackground",small:!0},n)})})}),(0,p.jsx)(r.Flex,{flex:!0,children:(0,p.jsx)(y.A,{noMargin:!0,children:a[t].children})})]})};var w=t(42790),T=t(5981),S=t(24609),x=t(61661),I=t(32465);const M=e=>{let{children:n,onClick:t}=e;return(0,p.jsx)(r.Box,{as:"a",cursor:"pointer",onClick:t,children:n})},P=e=>{let{categoryId:n,navigateToSettings:t,children:i}=e;const a=(0,T.Zp)(),r=(0,w.rI)("selectedIntegrationCategory"),s=(0,S.bq)(),{pushCategory:c}=(0,x.b8)(),l=(0,I.A)(),d=(0,o.useCallback)(()=>{t?(r("deploy.docker-kubernetes"),a({pathname:`/spaces/${s}/settings/integrations`,replace:!0})):c(l(n))},[c,n,l,t]);return(0,p.jsx)(M,{onClick:d,children:i})},N=(0,o.memo)(P);t(72577);var k=t(46587),C=t(99728);const A=()=>{const e=(0,k.uW)("isAnonymous"),n=(0,C.JT)("node:Create");return{showClaimingOptions:!e&&n}};t.dn(A);const D=e=>{let{showClaimingOptions:n,command:t="",claimToken:o="",claimUrl:i="",claimRooms:a=""}=e;if(n)return t.replaceAll(/{% if \$showClaimingOptions %}\n?/gi,"").replaceAll(/{% \/if %}\n?/gi,"").replaceAll(/{% claim_token %}/gi,o).replaceAll(/{% claim_url %}/gi,i).replaceAll(/{% \$claim_rooms %}/gi,a);return t.replaceAll(/{%\s*if\s*\$showClaimingOptions\s*%}[\s\S]*?{%\s*\/if\s*%}\n?/gs,"")},E=e=>{let{methods:n,isNightly:t,claimToken:o="",claimUrl:i="",claimRooms:a=""}=e;const s=t?"nightly":"stable",{showClaimingOptions:c}=A();return n.length?c&&!o?(0,p.jsx)(r.Flex,{padding:[8,0],children:(0,p.jsx)(r.Text,{children:"Loading token..."})}):n.length>1?(0,p.jsx)(v,{children:n.map(e=>{let{method:n,commands:t}=e;const{command:l}=t.find(e=>e.channel==s)||{};return(0,p.jsx)(r.Tab,{label:n,children:D({showClaimingOptions:c,command:l,claimToken:o,claimUrl:i,claimRooms:a})},n)})}):(0,p.jsx)(y.A,{children:D({showClaimingOptions:c,command:(n[0]?.commands.find(e=>e.channel==s)||{}).command||"",claimToken:o,claimUrl:i,claimRooms:a})}):null};var B=t(55024),R=t(34412);const j=(0,a.default)(R.D).attrs(e=>({cursor:"pointer",...e})).withConfig({displayName:"aiCredits__AccessorText",componentId:"sc-1l3ljy4-0"})(["text-decoration:underline;"]),O=e=>{let{label:n,...t}=e;return(0,p.jsx)(j,{...t,children:n})},L=e=>{let{label:n}=e;return(0,p.jsx)(B.A,{Accessor:O,label:n})},U={nodes:b,tags:{details:{render:_,attributes:{summary:{type:String,default:""},open:{type:Boolean,default:!1}}},tabs:{render:v},tab:{render:r.Tab,attributes:{label:{type:String,default:""}}},terminal:{render:y.A},goToCategory:{render:N,attributes:{categoryId:{type:String,default:""},navigateToSettings:{type:Boolean,default:!1}}},command:{render:E,attributes:{methods:{type:Array,default:[]},isNightly:{type:Boolean,default:!1},claimToken:{type:String,default:""},claimUrl:{type:String,default:""},claimRooms:{type:String,default:""}}},aiCredits:{render:L,attributes:{label:{type:String,default:"AI Credits"}}}}},q=e=>{let{config:n={},children:t}=e;return(0,p.jsx)(i.A,{transformConfiguration:{...U,...n},children:t})},F=(0,o.memo)(q)},19844(e,n,t){"use strict";t.d(n,{f:()=>C,A:()=>B});var o=t(96540),i=t(12720),a=t(95565),r=t(38773),s=t(51262),c=t(60908),l=t(74848);const d=()=>{const{loaded:e,hasLimitations:n,maxNodes:t,preferredNodes:o}=(0,s.A)();return n&&e&&o.length==t?(0,l.jsx)(c.Ay,{feature:"ActiveNodesLimitWarning",children:(0,l.jsxs)(i.Flex,{alignItems:"center",gap:2,children:[(0,l.jsx)(i.Flex,{children:(0,l.jsx)(i.Icon,{color:"warning",name:"warning_triangle"})}),(0,l.jsxs)(i.TextBig,{children:["If you connect a new node you'll"," ",(0,l.jsxs)(i.TextBig,{strong:!0,children:["exceed the limit of ",t," active Nodes"]}),". To unblock the new node, either"," ",(0,l.jsx)(a.A,{children:(0,l.jsx)(i.TextBig,{color:"primary",children:"upgrade to the Business plan"})})," ","for unlimited access or"," ",(0,l.jsx)(r.A,{children:(0,l.jsx)(i.TextBig,{color:"primary",children:"review your Space active Nodes on the Setting page"})}),"."]})]})}):null},p=(0,o.memo)(d);var u=t(24609),m=t(99728),h=t(39175);const f=()=>{const e=(0,u.vt)(),n=(0,h.ES)(e),t=(0,m.JT)("node:Create");return n||t?null:(0,l.jsx)(c.Ay,{feature:"IntegrationsNodeCreatePermissionWarning",children:(0,l.jsxs)(i.Flex,{gap:2,background:"warningSemi",padding:[2],children:[(0,l.jsx)(i.Icon,{size:"medium",color:"text",name:"warning_triangle"}),(0,l.jsx)(i.TextBig,{children:"You don't have permissions to connect new nodes to the Space. Please contact an administrator to do it or just install Netdata on your node."})]})})};var g=t(22794),b=t(55429),_=t(19186),y=t(29645);const v=(0,t(882).default)(i.Collapsible).attrs(e=>({column:!0,...e})).withConfig({displayName:"group__StyledCollapsible",componentId:"sc-shp4vh-0"})(["border-style:solid;border-color:",";border-left-width:1px;border-right-width:1px;border-bottom-width:1px;",""],(0,i.getColor)("successSemi"),e=>{let{open:n}=e;return n?"":"border: none;"}),w=e=>{let{title:n,isOpen:t,onClick:o}=e;return(0,l.jsxs)(i.Flex,{alignItems:"center",justifyContent:"between",padding:[2],border:{side:"all",color:"successSemi"},cursor:"pointer",onClick:o,children:[(0,l.jsx)(i.Text,{color:"primary",children:n}),(0,l.jsx)(i.Icon,{name:"chevron_left",size:"small",color:"primary",rotate:t?1:3})]})},T=e=>{let{title:n,isOpen:t,toggleOpen:o,children:a}=e;return(0,l.jsxs)(i.Flex,{column:!0,children:[(0,l.jsx)(w,{title:n,isOpen:t,onClick:o}),(0,l.jsx)(v,{open:t,children:a})]})};t(98992),t(81454);var S=t(30005);const x={background:"pnlBackground",padding:[.5,8,.5,1],border:"none",iconContainerProps:{right:"0",bottom:"4px"}},I=e=>{let{items:n=[]}=e;return(0,l.jsx)(l.Fragment,{children:n.map(e=>{let{name:n,commandText:t}=e;return(0,l.jsxs)(i.Flex,{alignItems:"center",children:[(0,l.jsx)(i.Flex,{width:"90px",padding:[1,1,1,2],children:(0,l.jsx)(i.TextSmall,{color:"menuItem",children:n})}),(0,l.jsx)(i.Flex,{padding:[1,2,1,1],children:(0,l.jsx)(S.Ay,{commandText:t,...x,children:(0,l.jsx)(i.TextSmall,{color:"menuItem",children:t})})})]},n)})})},M=(0,o.memo)(I),P=e=>{let{items:n=[]}=e;return(0,l.jsx)(l.Fragment,{children:n.map(e=>{let{icon:n,text:t}=e;return(0,l.jsxs)(i.Flex,{padding:[1,2],gap:2,alignItems:"center",children:[(0,l.jsx)(i.Icon,{name:n,color:"menuItem",size:"small"}),(0,l.jsx)(i.TextSmall,{color:"menuItem",children:t})]},t)})})},N=(0,o.memo)(P);var k=t(6304);const C=(0,o.createContext)(),A=(D=g.A,e=>{let{startLoading:n,...t}=e;return"function"===typeof n?(0,l.jsx)(C.Provider,{value:{startLoading:n},children:(0,l.jsx)(D,{...t})}):(0,l.jsx)(D,{...t})});var D;const E=[{icon:"networkingStack",text:"Installs dependencies using your system's package manager."},{icon:"download",text:"Downloads Netdata and verifies checksum for security."},{icon:"gear",text:"Runs the installer and sets it up as a system service."}],B=e=>{let{integration:n={},rooms:t=[],navigateToSettings:a,startLoading:r,detailsOpen:s=!0}=e;const{deployContent:c,methods:d}=n,m=(0,u.vt)(),g=(0,_.pr)(),v=(0,_.XA)(),w=v?.loaded?v:g,S=w?.id,x=(0,b.A)(m),I=window.envSettings.apiUrl,P=(0,h.ng)(String(t.length?t.join(","):S)),[C,D]=(0,k.A)(),[B,R]=(0,k.A)(s),j=(0,y.a)(),O=(0,o.useMemo)(()=>"nightly"==j,[j]),L=(0,o.useMemo)(()=>({variables:{methods:d,isNightly:O,claimToken:x?.token,claimUrl:I,claimRooms:P,navigateToSettings:a}}),[d,O,x,I,P,a]),U=(0,o.useMemo)(()=>[{name:"Claim Token",commandText:x?.token},{name:"Claim URL",commandText:I},{name:"Room IDs",commandText:P}],[x,I,P]);return(0,l.jsxs)(i.Flex,{width:"100%",column:!0,padding:[4,0,0,0],children:[(0,l.jsx)(p,{}),(0,l.jsx)(f,{}),(0,l.jsx)(A,{config:L,startLoading:r,children:c}),(0,l.jsx)(T,{title:"What does this do?",isOpen:C,toggleOpen:D,children:(0,l.jsx)(N,{items:E})}),!!x?.token&&(0,l.jsx)(T,{title:"Show claiming details",isOpen:B,toggleOpen:R,children:(0,l.jsx)(M,{items:U})})]})}},29147(e,n,t){"use strict";t.d(n,{A:()=>x});var o=t(96540),i=t(12720),a=t(79748),r=t(45087),s=t(74891),c=t(77148),l=t(1174),d=t(30569),p=t(24609),u=t(84308),m=t(46391),h=t(6304),f=t(63872);const g=()=>{const e=(0,p.vt)(),[n,,t,i]=(0,h.A)(),[a,r]=(0,f.A)();return{loading:n,recycleToken:(0,d.yF)((0,o.useCallback)((n,o)=>{t(),(0,u.X)(e).then(n=>{let{data:t}=n;o((0,m.A)(e),t),a({text:"Successfully expired last token and created a new one."})}).catch(r).finally(()=>{i()})},[e,t,i,a,r]))}};var b=t(29645),_=t(52419),y=t(94404),v=t(74848);const w=(0,y.A)((0,s.A)(i.Button)),T={left:"stable",right:"nightly"},S=e=>{let{right:n}=e;const{title:t,description:o}=_.d[T[n?"right":"left"]]||{};return(0,v.jsx)(r.A,{content:o,align:"bottom",children:(0,v.jsx)(i.Text,{padding:n?[0,0,0,1]:[0,1,0,0],children:t})})},x=function(){let{vertical:e,nested:n}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const[t,r]=(0,b.$)(),{loading:s,recycleToken:d}=g(),p=(0,o.useMemo)(()=>({column:e,gap:e?2:4,...e?{width:"100%"}:{}}),[e]),u=(0,o.useCallback)(e=>{const n=e.target.checked?"nightly":"stable";r(n)},[r]);return(0,o.useEffect)(()=>{n||r(null)},[n,r]),(0,v.jsxs)(i.Flex,{...p,children:[(0,v.jsxs)(i.Flex,{column:!0,gap:1,children:[(0,v.jsx)(a.A,{href:"https://learn.netdata.cloud/docs/getting-started/install-netdata#nightly-vs-stable-releases",rel:"noopener noreferrer",target:"_blank",children:(0,v.jsxs)(i.Flex,{alignItems:"center",gap:1,children:[(0,v.jsx)(i.Text,{color:"primary",children:"Updates channel"}),(0,v.jsx)(i.Icon,{color:"primary",name:"goToNode",width:"18px",height:"18px"})]})}),(0,v.jsx)(i.Toggle,{labelLeft:"Stable",labelRight:"Nightly",Label:S,colored:!1,checked:"nightly"==t,disabled:!1,onChange:u})]}),(0,v.jsx)(c.A,{color:"border",vertical:!e}),(0,v.jsx)(l.A,{permission:"node:Create",children:e=>(0,v.jsx)(w,{width:"100%",feature:"ClaimingToken",label:"Regenerate Token",flavour:"hollow",icon:"refresh",onClick:d,tooltip:e?"Expire the current token and claim a new one.":"Only admins can regenerate the token.",disabled:s||!e})})]})}},67723(e,n,t){"use strict";t.d(n,{A:()=>h});var o=t(96540),i=t(882),a=t(12720);const r=(0,i.default)(a.Flex).attrs(e=>({column:!0,padding:[2,4,4,2],...e})).withConfig({displayName:"styled__StyledTerminalCommand",componentId:"sc-3zs5xg-0"})(["position:relative;top:-1px;color:",";background:",";border:1px solid ",";cursor:pointer;overflow-wrap:anywhere;white-space:pre-wrap;width:100%;font-family:monospace;font-weight:bold;letter-spacing:0.09px;line-height:16px;font-size:14px;word-break:break-word;overflow-y:auto;margin-top:",";"],(0,a.getColor)("primary"),(0,a.getColor)("terminalGreen"),(0,a.getColor)("terminalGreenBorder"),e=>{let{noMargin:n}=e;return n?"0":"16px"}),s=(0,i.default)(a.Icon).withConfig({displayName:"styled__StyledIcon",componentId:"sc-3zs5xg-1"})(["display:flex;align-self:flex-end;cursor:pointer;position:absolute;bottom:8px;right:8px;"]);var c=t(35184),l=t(74848);var d=t(93234),p=t(88307),u=t(3319),m=t(19844);const h=(f=e=>{let{children:n,logProps:t={},...i}=e;const a=(0,o.useContext)(m.f),c=(0,o.useMemo)(()=>(0,d.jU)(n),[n]),{sendLog:h,isReady:f}=(0,u.A)(),g=(0,o.useCallback)(()=>{(0,p.C)(c,{text:"Config copied to your clipboard."})(),a?.startLoading?.(),h({feature:"ConnectNode",isStart:!0,copyString:c,...t})},[f,c,a]);return(0,l.jsxs)(r,{onClick:g,...i,children:[n,(0,l.jsx)(s,{name:"copy",size:"small",color:"textLite"})]})},e=>{let{blurred:n,blurProps:t,...o}=e;return n?(0,l.jsx)(c.Ay,{...t,children:(0,l.jsx)(f,{...o})}):(0,l.jsx)(f,{...o})});var f},75616(e,n,t){"use strict";t.d(n,{A:()=>y});t(74423);var o=t(96540),i=t(882),a=t(63950),r=t.n(a),s=t(12720),c=t(24609),l=t(3561),d=t(6304),p=t(52353),u=t(74891),m=t(3319),h=t(74848);const f=(0,u.A)(s.Button),g=e=>{let{name:n,onEdit:t=r()}=e;return(0,h.jsxs)(s.Flex,{alignItems:"center",gap:2,children:[(0,h.jsx)(s.TextBig,{color:"pnlText",children:n}),(0,h.jsx)(f,{icon:"pencilOutline",flavour:"borderless",iconColor:"text",iconSize:"small",padding:[0],onClick:t,tooltip:"Edit space name"})]})},b=(0,i.default)(s.Flex).withConfig({displayName:"spaceInfo__StyledWrapper",componentId:"sc-166ce7m-0"})(["margin-top:-3px !important;margin-bottom:-3px !important;"]),_=e=>{let{name:n,setName:t=r(),onSave:i=r(),onCancel:a=r(),isLoading:c}=e;const[l,d]=(0,o.useState)(),u=(0,o.useMemo)(()=>(0,p.fc)(n),[n]);return(0,h.jsxs)(b,{gap:2,children:[(0,h.jsx)(s.TextInput,{value:n,onChange:e=>{d(!0),t(e.target.value)},onKeyDown:e=>{let{code:n}=e;["Enter","NumpadEnter"].includes(n)&&i()},disabled:c,size:"small",error:p.xc[u],isDirty:l,instantFeedback:"all",background:"pnlBackground",border:"none"}),(0,h.jsx)(s.Button,{label:"Save",flavour:"borderless",iconColor:"text",iconSize:"small",padding:[0],onClick:i,disabled:c||!!u}),(0,h.jsx)(s.Button,{label:"Cancel",flavour:"borderless",iconColor:"text",iconSize:"small",padding:[0],onClick:a,disabled:c})]})},y=function(){let{onStateChange:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{id:n,name:t}=(0,c.ap)(),i=(0,l.A)(n),[a,,r,s]=(0,d.A)(),[p,,u,f]=(0,d.A)(),[b,y]=(0,o.useState)(t),{sendLog:v}=(0,m.A)(),w=(0,o.useCallback)(e=>{s(),f(),e&&v(e)},[s,f,v]),T=(0,o.useCallback)(e=>{s(),e&&v(e)},[s,v]),S=(0,o.useCallback)(()=>{const e={feature:"SpaceInfo",oldName:t,newName:b};r(),i({name:b},{onSuccess:()=>w({...e,isSuccess:!0,description:"SUCCESS - Change space name"}),onFail:()=>T({...e,isFailure:!0,description:"ERROR - Change space name"})})},[t,b,i,r,w,T,v]);return(0,o.useEffect)(()=>{e&&e({isEditable:p})},[p,e]),p?(0,h.jsx)(_,{name:b,setName:y,onSave:S,onCancel:f,isLoading:a}):(0,h.jsx)(g,{name:t,onEdit:u})}},14815(e,n,t){"use strict";t.d(n,{V0:()=>F,vD:()=>J,jI:()=>X,qC:()=>z,Jr:()=>W,v2:()=>H,D_:()=>V,yI:()=>q,rP:()=>Y,aw:()=>G});var o=t(96540),i=t(63950),a=t.n(i),r=t(12720),s=t(32742),c=t(75616),l=t(45087),d=t(89590),p=t(79748),u=t(24609),m=t(19186),h=t(98545),f=t(30403),g=t(24285),b=t(99728),_=t(92862),y=t(6304),v=t(94404),w=t(74848);const T=(0,v.A)(r.Button),S={light:"primary",dark:"white",unspecified:"primary"},x=e=>{let{onClick:n}=e;const t={icon:"add_user",flavour:"borderless",onClick:n,label:"Invite your team","data-ga":"integrations::click-invite-team::header"};return(0,b.JT)("space:InviteUser")?(0,w.jsx)(T,{...t}):(0,w.jsx)(l.A,{content:"You can't invite a user with your current permissions",children:(0,w.jsx)(r.Flex,{children:(0,w.jsx)(T,{...t,disabled:!0})})})},I=e=>{let{nodesCount:n,onClick:t=a()}=e;const i=(0,b.JT)("node:Create"),s=(0,o.useMemo)(()=>({onClick:t,disabled:!i}),[i]),c=n>0?"Connect more!":"Connect a node";return i?(0,w.jsx)(p.A,{...s,children:c}):(0,w.jsx)(l.A,{content:"You don't have permission to connect new nodes. Please contact an administrator to do it",children:(0,w.jsx)(r.Box,{children:(0,w.jsx)(p.A,{...s,children:c})})})},M=e=>{let{nodesCount:n,onConnectClick:t=a()}=e;return(0,w.jsxs)(r.Flex,{gap:2,children:[(0,w.jsx)(I,{nodesCount:n,onClick:t}),(0,w.jsx)(r.Text,{children:"to get started"})]})},P=e=>{let{nodesCount:n,onConnectClick:t=a()}=e;return(0,w.jsxs)(r.Flex,{gap:2,children:[(0,w.jsxs)(r.Text,{children:["You have connected ",n," node",1===n?"":"s","."]}),(0,w.jsx)(I,{nodesCount:n,onClick:t})]})},N=(0,o.memo)(e=>{let{nodesCount:n,onConnectClick:t=a()}=e;return(0,w.jsxs)(r.Flex,{gap:2,children:[(0,w.jsx)(r.Text,{children:"This is your new space"}),n>0?(0,w.jsx)(P,{nodesCount:n,onConnectClick:t}):(0,w.jsx)(M,{nodesCount:n,onConnectClick:t})]})}),k=e=>{let{onInvite:n=a()}=e;const t=(0,g.xd)("theme"),i=(0,u.vt)(),l=(0,m.ID)(),p=(0,m.J_)(i,f.mL),[b,,v,I]=(0,y.A)(),M=(0,_.A)(),[P,k]=(0,o.useState)([]);(0,h.Ay)({spaceId:i,id:l||p,pollingInterval:3e3,keepPolling:!0,onNodeIdsChange:e=>{k(e?.nodeIds?.length||0)}});const C=(0,o.useCallback)(e=>{e.preventDefault,v()},[v]),A=(0,o.useMemo)(()=>P>0,[P]);return(0,o.useEffect)(()=>{A&&M()},[A]),(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(s.A,{height:"66px",width:"66px",color:S[t]}),(0,w.jsx)(r.H1,{strong:!1,children:"Welcome to Netdata!"}),(0,w.jsx)(N,{nodesCount:P,onConnectClick:C}),(0,w.jsx)(c.A,{}),(0,w.jsxs)(r.Flex,{gap:4,children:[(0,w.jsx)(x,{onClick:n}),(0,w.jsx)(T,{icon:"rocket",flavour:A?"default":"borderless",onClick:M,label:A?"Launch space":"Node Required for Launch",disabled:!A,fetaure:"LaunchSpace"})]}),b&&(0,w.jsx)(d.A,{onClose:I})]})};var C=t(882),A=t(5981),D=t(42790),E=t(37617);const B=(0,C.default)(r.Box).attrs(e=>({position:"absolute",top:"24px",left:"12px",...e})).withConfig({displayName:"settingsPageFlavour__AnchorContainer",componentId:"sc-1cb895j-0"})([""]),R=(j=()=>(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(r.H1,{strong:!1,children:"Integrations Made Easy!"}),(0,w.jsx)(r.Text,{children:"Unleash the Power of Connected Systems"})]}),e=>{const[n,t]=(0,D.N9)("onboarding"),{path:i}=(0,E.A)();return(0,o.useEffect)(()=>()=>t(""),[]),n&&i?(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(B,{children:(0,w.jsx)(p.A,{as:A.N_,to:i,children:(0,w.jsxs)(r.Flex,{alignItems:"center",gap:2,children:[(0,w.jsx)(r.Icon,{name:"arrow_left",color:"link"}),(0,w.jsx)(r.Text,{color:"link",children:"Back to node setup"})]})})}),(0,w.jsx)(j,{...e})]}):(0,w.jsx)(j,{...e})});var j,O=t(19844),L=t(22794);const U=e=>{let{integration:n={}}=e;return(0,w.jsx)(r.Flex,{width:"100%",column:!0,gap:2,padding:[4,0,0,0],children:(0,w.jsx)(L.A,{children:n.alerts})})},q="deploy.operating-systems",F=34,z="data-collection",H="deploy-kubernetes",G={deploy:"rocket","data-collection":"collect",notify:"alarmFilled",export:"importExport",logs:"logs",auth:"auth"},Y={deploy:O.A,"alert-notifications":U},V={homePage:"homePage",settingsPage:"settingsPage",addNodesModal:"addNodesModal"},W=V.homePage,J={homePage:{headerContent:k},settingsPage:{headerContent:R},addNodesModal:{headerContent:null}},X={homePage:{header:{height:284,wrapperProps:{padding:[4,0]}},search:{wrapperProps:{width:"500px",margin:[0]},inputProps:{containerStyles:{width:"100%"}}},cncf:{height:80},categoryCharacterWidth:9},settingsPage:{header:{height:210,wrapperProps:{padding:[4,0]}},search:{wrapperProps:{width:"500px",margin:[0]},inputProps:{containerStyles:{width:"100%"}}},cncf:{height:0},categoryCharacterWidth:9},addNodesModal:{header:{height:126,wrapperProps:{width:"100%",padding:[4]}},search:{wrapperProps:{width:"100%",margin:[0],flex:!0},inputProps:{containerStyles:{width:"500px"},size:"small"}},cncf:{height:16},categoryCharacterWidth:9}}},32465(e,n,t){"use strict";t.d(n,{A:()=>i});t(98992),t(72577);var o=t(61661);const i=()=>{const e=(0,o.j6)();return n=>e.find(e=>e.id==n)}},92862(e,n,t){"use strict";t.d(n,{A:()=>r});var o=t(96540),i=t(5981),a=t(24609);const r=()=>{const e=(0,i.Zp)(),n=(0,a.bq)();return(0,o.useCallback)(()=>{e(`/spaces/${n}`)},[n,e])}},61661(e,n,t){"use strict";t.d(n,{j6:()=>P,x9:()=>M,hh:()=>I,XL:()=>O,b8:()=>k,FF:()=>D,oE:()=>B,GT:()=>E,AR:()=>A,yv:()=>j,q2:()=>R,WB:()=>C,Ss:()=>N});t(98992),t(54520),t(72577),t(81454);var o=t(96540),i=t(34843),a=t(30569),r=t(42790),s=t(52035),c=t(84929);t(74423);const l=[{id:"deploy",name:"Deploy",description:"",children:[{id:"deploy.operating-systems",name:"Operating Systems",description:"",children:[]},{id:"deploy.docker-kubernetes",name:"Docker & Kubernetes",description:"",children:[]},{id:"deploy.provisioning-systems",name:"Provisioning Systems",description:"",children:[]}]},{id:"data-collection",name:"Data Collection",description:"",children:[{id:"data-collection.databases",name:"Databases",description:"",children:[]},{id:"data-collection.web-servers-and-proxies",name:"Web Servers and Proxies",description:"",children:[]},{id:"data-collection.containers-and-vms",name:"Containers and VMs",description:"",children:[]},{id:"data-collection.operating-systems",name:"Operating Systems",description:"",children:[]},{id:"data-collection.networking",name:"Networking",description:"",children:[]},{id:"data-collection.cloud-and-devops",name:"Cloud and DevOps",description:"",children:[]},{id:"data-collection.hardware-and-sensors",name:"Hardware and Sensors",description:"",children:[]},{id:"data-collection.applications",name:"Applications",description:"",collector_default:!0,children:[]},{id:"data-collection.storage",name:"Storage and Filesystems",description:"",children:[]},{id:"data-collection.synthetic-testing",name:"Synthetic Testing",description:"",children:[]}]},{id:"network-performance-monitoring",name:"Network Performance Monitoring",description:"Monitor the network fabric end to end with Netdata: per-vendor device metrics over SNMP and vendor APIs, BGP, licensing, network topologies, network flows, SNMP traps, and syslog from network devices.",children:[{id:"network-performance-monitoring.device-metrics",name:"Device Metrics",description:"Per-vendor metrics from routers, switches, firewalls, access points, load balancers, and other network devices, collected over SNMP profiles and vendor APIs.",children:[]},{id:"network-performance-monitoring.licensing",name:"Licensing Monitoring",description:"Track license state, entitlements, and expiry across supported network device vendors.",children:[]},{id:"network-performance-monitoring.topologies",name:"Topologies",description:"Discover and visualize how the network is connected: L2/L3 device topology, live network connections, streaming, and virtual infrastructure.",children:[]},{id:"network-performance-monitoring.bgp",name:"BGP Monitoring",description:"Monitor BGP peering and routing health across network devices and software routing stacks.",children:[]},{id:"network-performance-monitoring.flows",name:"Network Flows",description:"Network flow ingestion and enrichment data sources for NetFlow / IPFIX / sFlow analysis",children:[{id:"network-performance-monitoring.flows.sources",name:"Flow Protocols",description:"Flow protocols Netdata receives directly from routers, switches, and software exporters",children:[]},{id:"network-performance-monitoring.flows.enrichment-methods",name:"Enrichment Methods",description:"Configurable data sources that label flow records with operational context: geolocation, AS / BGP routing, network ownership, exporter / interface metadata, classifiers, and inner-packet decapsulation",children:[]}]},{id:"network-performance-monitoring.traps",name:"SNMP Traps",description:"Receive, decode, store, query, and forward SNMP Trap and INFORM events from network devices.",children:[]},{id:"network-performance-monitoring.syslog",name:"Syslog from Network Devices",description:"Ingest syslog from network devices via the OpenTelemetry Collector.",children:[]}]},{id:"logs",name:"Logs",description:"Monitoring logs on your infrastructure",children:[]},{id:"export",name:"exporters",description:"Exporter Integrations",children:[]},{id:"notify",name:"notifications",description:"Notification Integrations",children:[{id:"notify.agent",name:"Agent Dispatched Notifications",description:"",children:[]},{id:"notify.cloud",name:"Centralized Cloud Notifications",description:"",children:[]}]},{id:"auth",name:"authentication",description:"Authentication & Authorization",children:[]}],d=[{meta:{plugin_name:"apps.plugin",module_name:"apps",monitored_instance:{name:"Applications",link:"",categories:["data-collection.operating-systems"],icon_filename:"applications.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["applications","processes","os","host monitoring"]},overview:"# Applications\n\nPlugin: apps.plugin\nModule: apps\n\n## Overview\n\nMonitor Applications for optimal software performance and resource usage.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per applications group\n\nThese metrics refer to the application group.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| app_group | The name of the group defined in the configuration. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| app.cpu_utilization | user, system | percentage |\n| app.cpu_guest_utilization | guest | percentage |\n| app.cpu_context_switches | voluntary, involuntary | switches/s |\n| app.estimated_mem_usage | mem | MiB |\n| app.mem_usage | rss | MiB |\n| app.mem_private_usage | mem | MiB |\n| app.vmem_usage | vmem | MiB |\n| app.mem_page_faults | minor, major | pgfaults/s |\n| app.ebpf_cachestat_hit_ratio | ratio | % |\n| app.ebpf_cachestat_dirty_pages | pages | page/s |\n| app.ebpf_cachestat_access | hits | hits/s |\n| app.ebpf_cachestat_misses | misses | misses/s |\n| app.swap_usage | swap | MiB |\n| app.disk_physical_io | reads, writes | KiB/s |\n| app.disk_logical_io | reads, writes | KiB/s |\n| app.processes | processes | processes |\n| app.threads | threads | threads |\n| app.fds_open_limit | limit | percentage |\n| app.fds_open | files, sockets, pipes, inotifies, event, timer, signal, eventpolls, other | fds |\n| app.uptime | uptime | seconds |\n| app.uptime_summary | min, avg, max | seconds |\n\n### Per apps plugin IPC\n\napps.plugin netipc lookup-client and lookup-server health and latency.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| netdata.collector.ipc.cgroups_lookup.client.requests | requests_sent, requests_responded, requests_timeout, requests_error | requests/s |\n| netdata.collector.ipc.cgroups_lookup.client.cache | cache_hits, cache_misses_retry, cache_misses_permanent, cache_evictions | events/s |\n| netdata.collector.ipc.cgroups_lookup.client.peer | peer_connect_attempts, peer_disconnects | events/s |\n| netdata.collector.ipc.cgroups_lookup.client.request_duration_ms | le_1ms, le_5ms, le_10ms, le_50ms, le_100ms, le_500ms, le_1000ms, gt_1000ms | requests/s |\n| netdata.collector.ipc.cgroups_lookup.client.queue_depth | queue_depth | paths |\n| netdata.collector.ipc.apps_lookup.server.requests | requests_responded, requests_error | requests/s |\n| netdata.collector.ipc.apps_lookup.server.request_duration_ms | le_1ms, le_5ms, le_10ms, le_50ms, le_100ms, le_500ms, le_1000ms, gt_1000ms | requests/s |\n\n",integration_type:"collector",id:"apps.plugin-apps-Applications",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/apps.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"apps.plugin",module_name:"groups",monitored_instance:{name:"User Groups",link:"",categories:["data-collection.operating-systems"],icon_filename:"user.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["groups","processes","user auditing","authorization","os","host monitoring"]},overview:"# User Groups\n\nPlugin: apps.plugin\nModule: groups\n\n## Overview\n\nThis integration monitors resource utilization on a user groups context.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per user group\n\nThese metrics refer to the user group.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| user_group | The name of the user group. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| usergroup.cpu_utilization | user, system | percentage |\n| usergroup.cpu_guest_utilization | guest | percentage |\n| usergroup.cpu_context_switches | voluntary, involuntary | switches/s |\n| usergroup.estimated_mem_usage | mem | MiB |\n| usergroup.mem_usage | rss | MiB |\n| usergroup.mem_private_usage | mem | MiB |\n| usergroup.vmem_usage | vmem | MiB |\n| usergroup.mem_page_faults | minor, major | pgfaults/s |\n| usergroup.swap_usage | swap | MiB |\n| usergroup.disk_physical_io | reads, writes | KiB/s |\n| usergroup.disk_logical_io | reads, writes | KiB/s |\n| usergroup.processes | processes | processes |\n| usergroup.threads | threads | threads |\n| usergroup.fds_open_limit | limit | percentage |\n| usergroup.fds_open | files, sockets, pipes, inotifies, event, timer, signal, eventpolls, other | fds |\n| usergroup.uptime | uptime | seconds |\n| usergroup.uptime_summary | min, avg, max | seconds |\n\n",integration_type:"collector",id:"apps.plugin-groups-User_Groups",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/apps.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"apps.plugin",module_name:"services",monitored_instance:{name:"Windows Services",link:"",categories:["data-collection.operating-systems"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["windows","services","processes","os","host monitoring"]},overview:"# Windows Services\n\nPlugin: apps.plugin\nModule: services\n\n## Overview\n\nThis integration monitors resource utilization grouped by Windows Service.\n\nIt auto-discovers running Windows services via the Service Control Manager and groups each service's process tree to aggregate CPU, memory, I/O, and other metrics per service. Processes not belonging to any service are grouped under 'not-services'.\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAll running Windows services are automatically discovered. No configuration is needed.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nNo additional SCM query overhead. The service list is already queried by apps.plugin for process naming. Per-iteration work involves walking parent chains to assign service names.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nService charts are enabled by default. Use the `without-services` (or `no-services`) command line option to disable them.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per windows service\n\nThese metrics refer to the Windows Service.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| service | The display name of the Windows service. |\n\nMetrics:\n\n| Metric | Dimensions | Unit | windows |\n|:------|:----------|:----|:---:|\n| service.cpu_utilization | user, system | percentage | \u2022 |\n| service.mem_usage | rss | MiB | \u2022 |\n| service.vmem_usage | vmem | MiB | \u2022 |\n| service.mem_page_faults | minor | pgfaults/s | \u2022 |\n| service.swap_usage | swap | MiB | \u2022 |\n| service.disk_logical_io | reads, writes | KiB/s | \u2022 |\n| service.fds_open | handles | fds | \u2022 |\n| service.processes | processes | processes | \u2022 |\n| service.threads | threads | threads | \u2022 |\n| service.uptime | uptime | seconds | \u2022 |\n| service.uptime_summary | min, avg, max | seconds | \u2022 |\n\n",integration_type:"collector",id:"apps.plugin-services-Windows_Services",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/apps.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"apps.plugin",module_name:"users",monitored_instance:{name:"Users",link:"",categories:["data-collection.operating-systems"],icon_filename:"users.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["users","processes","os","host monitoring"]},overview:"# Users\n\nPlugin: apps.plugin\nModule: users\n\n## Overview\n\nThis integration monitors resource utilization on a user context.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per user\n\nThese metrics refer to the user.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| user | The name of the user. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| user.cpu_utilization | user, system | percentage |\n| user.cpu_guest_utilization | guest | percentage |\n| user.cpu_context_switches | voluntary, involuntary | switches/s |\n| user.estimated_mem_usage | mem | MiB |\n| user.mem_usage | rss | MiB |\n| user.mem_private_usage | mem | MiB |\n| user.vmem_usage | vmem | MiB |\n| user.mem_page_faults | minor, major | pgfaults/s |\n| user.swap_usage | swap | MiB |\n| user.disk_physical_io | reads, writes | KiB/s |\n| user.disk_logical_io | reads, writes | KiB/s |\n| user.processes | processes | processes |\n| user.threads | threads | threads |\n| user.fds_open_limit | limit | percentage |\n| user.fds_open | files, sockets, pipes, inotifies, event, timer, signal, eventpolls, other | fds |\n| user.uptime | uptime | seconds |\n| user.uptime_summary | min, avg, max | seconds |\n\n",integration_type:"collector",id:"apps.plugin-users-Users",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/apps.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance:{name:"AWS ECS Containers",link:"https://aws.amazon.com/ecs/",icon_filename:"aws.svg",categories:["data-collection.containers-and-vms"]},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["aws","ecs","elastic container service","amazon","containers"]},overview:"# AWS ECS Containers\n\nPlugin: cgroups.plugin\nModule: /sys/fs/cgroup\n\n## Overview\n\nMonitor AWS ECS container resource utilization \u2014 CPU, memory, disk I/O, and network \u2014 via Linux cgroups.\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ cgroup_10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.cpu_limit | average cgroup CPU utilization over the last 10 minutes |\n| [ cgroup_ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.mem_usage | cgroup memory utilization |\n| [ cgroup_1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ cgroup_10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.cpu_limit | used | percentage |\n| cgroup.cpu | user, system | percentage |\n| cgroup.cpu_per_core | a dimension per core | percentage |\n| cgroup.throttled | throttled | percentage |\n| cgroup.throttled_duration | duration | ms |\n| cgroup.cpu_shares | shares | shares |\n| cgroup.mem | cache, rss, swap, rss_huge, mapped_file | MiB |\n| cgroup.writeback | dirty, writeback | MiB |\n| cgroup.mem_activity | in, out | MiB/s |\n| cgroup.pgfaults | pgfault, swap | MiB/s |\n| cgroup.mem_usage | ram, swap | MiB |\n| cgroup.mem_usage_limit | available, used | MiB |\n| cgroup.mem_utilization | utilization | percentage |\n| cgroup.mem_failcnt | failures | count |\n| cgroup.io | read, write | KiB/s |\n| cgroup.serviced_ops | read, write | operations/s |\n| cgroup.throttle_io | read, write | KiB/s |\n| cgroup.throttle_serviced_ops | read, write | operations/s |\n| cgroup.queued_ops | read, write | operations |\n| cgroup.merged_ops | read, write | operations/s |\n| cgroup.cpu_some_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_some_pressure_stall_time | time | ms |\n| cgroup.cpu_full_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_full_pressure_stall_time | time | ms |\n| cgroup.memory_some_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_some_pressure_stall_time | time | ms |\n| cgroup.memory_full_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_full_pressure_stall_time | time | ms |\n| cgroup.io_some_pressure | some10, some60, some300 | percentage |\n| cgroup.io_some_pressure_stall_time | time | ms |\n| cgroup.io_full_pressure | some10, some60, some300 | percentage |\n| cgroup.io_full_pressure_stall_time | time | ms |\n| cgroup.pids_current | pids | pids |\n| cgroup.cachestat_ratio | ratio | % |\n| cgroup.cachestat_dirties | dirty | page/s |\n| cgroup.cachestat_hits | hit | hits/s |\n| cgroup.cachestat_misses | miss | misses/s |\n\n### Per cgroup network device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n| device | The name of the host network interface linked to the container\'s network interface. |\n| container_device | Container network interface name. |\n| interface_type | Network interface type. Always "virtual" for the containers. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.net_net | received, sent | kilobits/s |\n| cgroup.net_packets | received, sent, multicast | pps |\n| cgroup.net_errors | inbound, outbound | errors/s |\n| cgroup.net_drops | inbound, outbound | errors/s |\n| cgroup.net_fifo | receive, transmit | errors/s |\n| cgroup.net_compressed | receive, sent | pps |\n| cgroup.net_events | frames, collisions, carrier | events/s |\n| cgroup.net_operstate | up, down, notpresent, lowerlayerdown, testing, dormant, unknown | state |\n| cgroup.net_carrier | up, down | state |\n| cgroup.net_mtu | mtu | octets |\n\n',integration_type:"collector",id:"cgroups.plugin-/sys/fs/cgroup-AWS_ECS_Containers",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cgroups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance:{name:"Containers",link:"",categories:["data-collection.containers-and-vms"],icon_filename:"container.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["containers","docker","podman","containerd","cri-o","lxc","lxd","incus","nomad","ecs","systemd-nspawn","nspawn","cgroups","linux containers"]},overview:"# Containers\n\nPlugin: cgroups.plugin\nModule: /sys/fs/cgroup\n\n## Overview\n\nMonitor containers and virtual machines resource utilization \u2014 CPU, memory, disk I/O, network, and page cache activity \u2014 via Linux cgroups.\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ cgroup_10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.cpu_limit | average cgroup CPU utilization over the last 10 minutes |\n| [ cgroup_ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.mem_usage | cgroup memory utilization |\n| [ cgroup_1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ cgroup_10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.cpu_limit | used | percentage |\n| cgroup.cpu | user, system | percentage |\n| cgroup.cpu_per_core | a dimension per core | percentage |\n| cgroup.throttled | throttled | percentage |\n| cgroup.throttled_duration | duration | ms |\n| cgroup.cpu_shares | shares | shares |\n| cgroup.mem | cache, rss, swap, rss_huge, mapped_file | MiB |\n| cgroup.writeback | dirty, writeback | MiB |\n| cgroup.mem_activity | in, out | MiB/s |\n| cgroup.pgfaults | pgfault, swap | MiB/s |\n| cgroup.mem_usage | ram, swap | MiB |\n| cgroup.mem_usage_limit | available, used | MiB |\n| cgroup.mem_utilization | utilization | percentage |\n| cgroup.mem_failcnt | failures | count |\n| cgroup.io | read, write | KiB/s |\n| cgroup.serviced_ops | read, write | operations/s |\n| cgroup.throttle_io | read, write | KiB/s |\n| cgroup.throttle_serviced_ops | read, write | operations/s |\n| cgroup.queued_ops | read, write | operations |\n| cgroup.merged_ops | read, write | operations/s |\n| cgroup.cpu_some_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_some_pressure_stall_time | time | ms |\n| cgroup.cpu_full_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_full_pressure_stall_time | time | ms |\n| cgroup.memory_some_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_some_pressure_stall_time | time | ms |\n| cgroup.memory_full_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_full_pressure_stall_time | time | ms |\n| cgroup.io_some_pressure | some10, some60, some300 | percentage |\n| cgroup.io_some_pressure_stall_time | time | ms |\n| cgroup.io_full_pressure | some10, some60, some300 | percentage |\n| cgroup.io_full_pressure_stall_time | time | ms |\n| cgroup.pids_current | pids | pids |\n| cgroup.cachestat_ratio | ratio | % |\n| cgroup.cachestat_dirties | dirty | page/s |\n| cgroup.cachestat_hits | hit | hits/s |\n| cgroup.cachestat_misses | miss | misses/s |\n\n### Per cgroup network device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n| device | The name of the host network interface linked to the container\'s network interface. |\n| container_device | Container network interface name. |\n| interface_type | Network interface type. Always "virtual" for the containers. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.net_net | received, sent | kilobits/s |\n| cgroup.net_packets | received, sent, multicast | pps |\n| cgroup.net_errors | inbound, outbound | errors/s |\n| cgroup.net_drops | inbound, outbound | errors/s |\n| cgroup.net_fifo | receive, transmit | errors/s |\n| cgroup.net_compressed | receive, sent | pps |\n| cgroup.net_events | frames, collisions, carrier | events/s |\n| cgroup.net_operstate | up, down, notpresent, lowerlayerdown, testing, dormant, unknown | state |\n| cgroup.net_carrier | up, down | state |\n| cgroup.net_mtu | mtu | octets |\n\n',integration_type:"collector",id:"cgroups.plugin-/sys/fs/cgroup-Containers",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cgroups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance:{name:"Docker Containers",link:"https://www.docker.com/",icon_filename:"docker.svg",categories:["data-collection.containers-and-vms"]},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["docker","containers","docker compose","docker swarm","moby","containerd","runc"]},overview:"# Docker Containers\n\nPlugin: cgroups.plugin\nModule: /sys/fs/cgroup\n\n## Overview\n\nMonitor Docker container resource utilization \u2014 CPU, memory, disk I/O, and network \u2014 via Linux cgroups.\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ cgroup_10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.cpu_limit | average cgroup CPU utilization over the last 10 minutes |\n| [ cgroup_ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.mem_usage | cgroup memory utilization |\n| [ cgroup_1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ cgroup_10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.cpu_limit | used | percentage |\n| cgroup.cpu | user, system | percentage |\n| cgroup.cpu_per_core | a dimension per core | percentage |\n| cgroup.throttled | throttled | percentage |\n| cgroup.throttled_duration | duration | ms |\n| cgroup.cpu_shares | shares | shares |\n| cgroup.mem | cache, rss, swap, rss_huge, mapped_file | MiB |\n| cgroup.writeback | dirty, writeback | MiB |\n| cgroup.mem_activity | in, out | MiB/s |\n| cgroup.pgfaults | pgfault, swap | MiB/s |\n| cgroup.mem_usage | ram, swap | MiB |\n| cgroup.mem_usage_limit | available, used | MiB |\n| cgroup.mem_utilization | utilization | percentage |\n| cgroup.mem_failcnt | failures | count |\n| cgroup.io | read, write | KiB/s |\n| cgroup.serviced_ops | read, write | operations/s |\n| cgroup.throttle_io | read, write | KiB/s |\n| cgroup.throttle_serviced_ops | read, write | operations/s |\n| cgroup.queued_ops | read, write | operations |\n| cgroup.merged_ops | read, write | operations/s |\n| cgroup.cpu_some_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_some_pressure_stall_time | time | ms |\n| cgroup.cpu_full_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_full_pressure_stall_time | time | ms |\n| cgroup.memory_some_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_some_pressure_stall_time | time | ms |\n| cgroup.memory_full_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_full_pressure_stall_time | time | ms |\n| cgroup.io_some_pressure | some10, some60, some300 | percentage |\n| cgroup.io_some_pressure_stall_time | time | ms |\n| cgroup.io_full_pressure | some10, some60, some300 | percentage |\n| cgroup.io_full_pressure_stall_time | time | ms |\n| cgroup.pids_current | pids | pids |\n| cgroup.cachestat_ratio | ratio | % |\n| cgroup.cachestat_dirties | dirty | page/s |\n| cgroup.cachestat_hits | hit | hits/s |\n| cgroup.cachestat_misses | miss | misses/s |\n\n### Per cgroup network device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n| device | The name of the host network interface linked to the container\'s network interface. |\n| container_device | Container network interface name. |\n| interface_type | Network interface type. Always "virtual" for the containers. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.net_net | received, sent | kilobits/s |\n| cgroup.net_packets | received, sent, multicast | pps |\n| cgroup.net_errors | inbound, outbound | errors/s |\n| cgroup.net_drops | inbound, outbound | errors/s |\n| cgroup.net_fifo | receive, transmit | errors/s |\n| cgroup.net_compressed | receive, sent | pps |\n| cgroup.net_events | frames, collisions, carrier | events/s |\n| cgroup.net_operstate | up, down, notpresent, lowerlayerdown, testing, dormant, unknown | state |\n| cgroup.net_carrier | up, down | state |\n| cgroup.net_mtu | mtu | octets |\n\n',integration_type:"collector",id:"cgroups.plugin-/sys/fs/cgroup-Docker_Containers",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cgroups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance:{name:"Kubernetes Containers",link:"https://kubernetes.io/",icon_filename:"kubernetes.svg",categories:["data-collection.containers-and-vms"]},related_resources:{integrations:{list:[{plugin_name:"go.d.plugin",module_name:"k8s_state"},{plugin_name:"go.d.plugin",module_name:"k8s_apiserver"},{plugin_name:"go.d.plugin",module_name:"k8s_kubelet"},{plugin_name:"go.d.plugin",module_name:"k8s_kubeproxy"},{plugin_name:"go.d.plugin",module_name:"coredns"}]}},info_provided_to_referring_integrations:{description:""},keywords:["k8s","kubernetes","pods","containers","openshift","rancher","rke","rke2","k3s","microk8s","eks","gke","aks","tanzu","minikube","kind","containerd","cri-o","kubelet","kubepods"]},overview:'# Kubernetes Containers\n\nPlugin: cgroups.plugin\nModule: /sys/fs/cgroup\n\n## Overview\n\nMonitor containers and virtual machines resource utilization \u2014 CPU, memory, disk I/O, network, and page cache activity \u2014 via Linux cgroups.\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nKubernetes Containers can be monitored further using the following other integrations:\n\n- {% relatedResource id="go.d.plugin-k8s_state-Kubernetes_Cluster_State" %}Kubernetes Cluster State{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-k8s_apiserver-Kubernetes_API_Server" %}Kubernetes API Server{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-k8s_kubelet-Kubelet" %}Kubelet{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-k8s_kubeproxy-Kubeproxy" %}Kubeproxy{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-coredns-CoreDNS" %}CoreDNS{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn\'t support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ k8s_cgroup_10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | k8s.cgroup.cpu_limit | average cgroup CPU utilization over the last 10 minutes |\n| [ k8s_cgroup_ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | k8s.cgroup.mem_usage | cgroup memory utilization |\n| [ k8s_cgroup_1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | k8s.cgroup.net_packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ k8s_cgroup_10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | k8s.cgroup.net_packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per k8s cgroup\n\nThese metrics refer to the Pod container.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| k8s_node_name | Node name. The value of _pod.spec.nodeName_. |\n| k8s_namespace | Namespace name. The value of _pod.metadata.namespace_. |\n| k8s_controller_kind | Controller kind (ReplicaSet, DaemonSet, StatefulSet, Job, etc.). The value of _pod.OwnerReferences.Controller.Kind_. |\n| k8s_controller_name | Controller name.The value of _pod.OwnerReferences.Controller.Name_. |\n| k8s_pod_name | Pod name. The value of _pod.metadata.name_. |\n| k8s_container_name | Container name. The value of _pod.spec.containers.name_. |\n| k8s_kind | Instance kind: "pod" or "container". |\n| k8s_qos_class | QoS class (guaranteed, burstable, besteffort). |\n| k8s_cluster_id | Cluster ID. The value of kube-system namespace _namespace.metadata.uid_. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| k8s.cgroup.cpu_limit | used | percentage |\n| k8s.cgroup.cpu | user, system | percentage |\n| k8s.cgroup.cpu_per_core | a dimension per core | percentage |\n| k8s.cgroup.throttled | throttled | percentage |\n| k8s.cgroup.throttled_duration | duration | ms |\n| k8s.cgroup.cpu_shares | shares | shares |\n| k8s.cgroup.mem | cache, rss, swap, rss_huge, mapped_file | MiB |\n| k8s.cgroup.writeback | dirty, writeback | MiB |\n| k8s.cgroup.mem_activity | in, out | MiB/s |\n| k8s.cgroup.pgfaults | pgfault, swap | MiB/s |\n| k8s.cgroup.mem_usage | ram, swap | MiB |\n| k8s.cgroup.mem_usage_limit | available, used | MiB |\n| k8s.cgroup.mem_utilization | utilization | percentage |\n| k8s.cgroup.mem_failcnt | failures | count |\n| k8s.cgroup.io | read, write | KiB/s |\n| k8s.cgroup.serviced_ops | read, write | operations/s |\n| k8s.cgroup.throttle_io | read, write | KiB/s |\n| k8s.cgroup.throttle_serviced_ops | read, write | operations/s |\n| k8s.cgroup.queued_ops | read, write | operations |\n| k8s.cgroup.merged_ops | read, write | operations/s |\n| k8s.cgroup.cpu_some_pressure | some10, some60, some300 | percentage |\n| k8s.cgroup.cpu_some_pressure_stall_time | time | ms |\n| k8s.cgroup.cpu_full_pressure | some10, some60, some300 | percentage |\n| k8s.cgroup.cpu_full_pressure_stall_time | time | ms |\n| k8s.cgroup.memory_some_pressure | some10, some60, some300 | percentage |\n| k8s.cgroup.memory_some_pressure_stall_time | time | ms |\n| k8s.cgroup.memory_full_pressure | some10, some60, some300 | percentage |\n| k8s.cgroup.memory_full_pressure_stall_time | time | ms |\n| k8s.cgroup.io_some_pressure | some10, some60, some300 | percentage |\n| k8s.cgroup.io_some_pressure_stall_time | time | ms |\n| k8s.cgroup.io_full_pressure | some10, some60, some300 | percentage |\n| k8s.cgroup.io_full_pressure_stall_time | time | ms |\n| k8s.cgroup.pids_current | pids | pids |\n\n### Per k8s cgroup network device\n\nThese metrics refer to the Pod container network interface.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device | The name of the host network interface linked to the container\'s network interface. |\n| container_device | Container network interface name. |\n| interface_type | Network interface type. Always "virtual" for the containers. |\n| k8s_node_name | Node name. The value of _pod.spec.nodeName_. |\n| k8s_namespace | Namespace name. The value of _pod.metadata.namespace_. |\n| k8s_controller_kind | Controller kind (ReplicaSet, DaemonSet, StatefulSet, Job, etc.). The value of _pod.OwnerReferences.Controller.Kind_. |\n| k8s_controller_name | Controller name.The value of _pod.OwnerReferences.Controller.Name_. |\n| k8s_pod_name | Pod name. The value of _pod.metadata.name_. |\n| k8s_container_name | Container name. The value of _pod.spec.containers.name_. |\n| k8s_kind | Instance kind: "pod" or "container". |\n| k8s_qos_class | QoS class (guaranteed, burstable, besteffort). |\n| k8s_cluster_id | Cluster ID. The value of kube-system namespace _namespace.metadata.uid_. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| k8s.cgroup.net_net | received, sent | kilobits/s |\n| k8s.cgroup.net_packets | received, sent, multicast | pps |\n| k8s.cgroup.net_errors | inbound, outbound | errors/s |\n| k8s.cgroup.net_drops | inbound, outbound | errors/s |\n| k8s.cgroup.net_fifo | receive, transmit | errors/s |\n| k8s.cgroup.net_compressed | receive, sent | pps |\n| k8s.cgroup.net_events | frames, collisions, carrier | events/s |\n| k8s.cgroup.net_operstate | up, down, notpresent, lowerlayerdown, testing, dormant, unknown | state |\n| k8s.cgroup.net_carrier | up, down | state |\n| k8s.cgroup.net_mtu | mtu | octets |\n\n### Per cgroups plugin IPC\n\ncgroups.plugin netipc lookup-server and discovery signal health.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| netdata.collector.ipc.cgroups_lookup.server.requests | requests_responded, requests_error, lookup_miss_signals_sent, lookup_miss_signals_coalesced | requests/s |\n| netdata.collector.ipc.cgroups_lookup.server.request_duration_ms | le_1ms, le_5ms, le_10ms, le_50ms, le_100ms, le_500ms, le_1000ms, gt_1000ms | requests/s |\n| netdata.collector.cgroups.discovery.scans | discovery_scans_natural, discovery_scans_opportunistic | scans/s |\n\n',integration_type:"collector",id:"cgroups.plugin-/sys/fs/cgroup-Kubernetes_Containers",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cgroups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance:{name:"LXC Containers",link:"",icon_filename:"lxc.png",categories:["data-collection.containers-and-vms"]},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["lxc","lxd","incus","linux containers","system containers","container"]},overview:"# LXC Containers\n\nPlugin: cgroups.plugin\nModule: /sys/fs/cgroup\n\n## Overview\n\nMonitor LXC/LXD/Incus container resource utilization \u2014 CPU, memory, disk I/O, and network \u2014 via Linux cgroups.\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ cgroup_10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.cpu_limit | average cgroup CPU utilization over the last 10 minutes |\n| [ cgroup_ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.mem_usage | cgroup memory utilization |\n| [ cgroup_1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ cgroup_10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.cpu_limit | used | percentage |\n| cgroup.cpu | user, system | percentage |\n| cgroup.cpu_per_core | a dimension per core | percentage |\n| cgroup.throttled | throttled | percentage |\n| cgroup.throttled_duration | duration | ms |\n| cgroup.cpu_shares | shares | shares |\n| cgroup.mem | cache, rss, swap, rss_huge, mapped_file | MiB |\n| cgroup.writeback | dirty, writeback | MiB |\n| cgroup.mem_activity | in, out | MiB/s |\n| cgroup.pgfaults | pgfault, swap | MiB/s |\n| cgroup.mem_usage | ram, swap | MiB |\n| cgroup.mem_usage_limit | available, used | MiB |\n| cgroup.mem_utilization | utilization | percentage |\n| cgroup.mem_failcnt | failures | count |\n| cgroup.io | read, write | KiB/s |\n| cgroup.serviced_ops | read, write | operations/s |\n| cgroup.throttle_io | read, write | KiB/s |\n| cgroup.throttle_serviced_ops | read, write | operations/s |\n| cgroup.queued_ops | read, write | operations |\n| cgroup.merged_ops | read, write | operations/s |\n| cgroup.cpu_some_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_some_pressure_stall_time | time | ms |\n| cgroup.cpu_full_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_full_pressure_stall_time | time | ms |\n| cgroup.memory_some_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_some_pressure_stall_time | time | ms |\n| cgroup.memory_full_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_full_pressure_stall_time | time | ms |\n| cgroup.io_some_pressure | some10, some60, some300 | percentage |\n| cgroup.io_some_pressure_stall_time | time | ms |\n| cgroup.io_full_pressure | some10, some60, some300 | percentage |\n| cgroup.io_full_pressure_stall_time | time | ms |\n| cgroup.pids_current | pids | pids |\n| cgroup.cachestat_ratio | ratio | % |\n| cgroup.cachestat_dirties | dirty | page/s |\n| cgroup.cachestat_hits | hit | hits/s |\n| cgroup.cachestat_misses | miss | misses/s |\n\n### Per cgroup network device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n| device | The name of the host network interface linked to the container\'s network interface. |\n| container_device | Container network interface name. |\n| interface_type | Network interface type. Always "virtual" for the containers. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.net_net | received, sent | kilobits/s |\n| cgroup.net_packets | received, sent, multicast | pps |\n| cgroup.net_errors | inbound, outbound | errors/s |\n| cgroup.net_drops | inbound, outbound | errors/s |\n| cgroup.net_fifo | receive, transmit | errors/s |\n| cgroup.net_compressed | receive, sent | pps |\n| cgroup.net_events | frames, collisions, carrier | events/s |\n| cgroup.net_operstate | up, down, notpresent, lowerlayerdown, testing, dormant, unknown | state |\n| cgroup.net_carrier | up, down | state |\n| cgroup.net_mtu | mtu | octets |\n\n',integration_type:"collector",id:"cgroups.plugin-/sys/fs/cgroup-LXC_Containers",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cgroups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance:{name:"Libvirt VMs and Containers",link:"",icon_filename:"libvirt.png",categories:["data-collection.containers-and-vms"]},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["libvirt","kvm","qemu","virsh","virt-manager","virtual machine","vm","container"]},overview:"# Libvirt VMs and Containers\n\nPlugin: cgroups.plugin\nModule: /sys/fs/cgroup\n\n## Overview\n\nMonitor libvirt-managed VM and container resource utilization \u2014 CPU, memory, disk I/O, and network \u2014 via Linux cgroups.\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ cgroup_10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.cpu_limit | average cgroup CPU utilization over the last 10 minutes |\n| [ cgroup_ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.mem_usage | cgroup memory utilization |\n| [ cgroup_1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ cgroup_10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.cpu_limit | used | percentage |\n| cgroup.cpu | user, system | percentage |\n| cgroup.cpu_per_core | a dimension per core | percentage |\n| cgroup.throttled | throttled | percentage |\n| cgroup.throttled_duration | duration | ms |\n| cgroup.cpu_shares | shares | shares |\n| cgroup.mem | cache, rss, swap, rss_huge, mapped_file | MiB |\n| cgroup.writeback | dirty, writeback | MiB |\n| cgroup.mem_activity | in, out | MiB/s |\n| cgroup.pgfaults | pgfault, swap | MiB/s |\n| cgroup.mem_usage | ram, swap | MiB |\n| cgroup.mem_usage_limit | available, used | MiB |\n| cgroup.mem_utilization | utilization | percentage |\n| cgroup.mem_failcnt | failures | count |\n| cgroup.io | read, write | KiB/s |\n| cgroup.serviced_ops | read, write | operations/s |\n| cgroup.throttle_io | read, write | KiB/s |\n| cgroup.throttle_serviced_ops | read, write | operations/s |\n| cgroup.queued_ops | read, write | operations |\n| cgroup.merged_ops | read, write | operations/s |\n| cgroup.cpu_some_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_some_pressure_stall_time | time | ms |\n| cgroup.cpu_full_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_full_pressure_stall_time | time | ms |\n| cgroup.memory_some_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_some_pressure_stall_time | time | ms |\n| cgroup.memory_full_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_full_pressure_stall_time | time | ms |\n| cgroup.io_some_pressure | some10, some60, some300 | percentage |\n| cgroup.io_some_pressure_stall_time | time | ms |\n| cgroup.io_full_pressure | some10, some60, some300 | percentage |\n| cgroup.io_full_pressure_stall_time | time | ms |\n| cgroup.pids_current | pids | pids |\n| cgroup.cachestat_ratio | ratio | % |\n| cgroup.cachestat_dirties | dirty | page/s |\n| cgroup.cachestat_hits | hit | hits/s |\n| cgroup.cachestat_misses | miss | misses/s |\n\n### Per cgroup network device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n| device | The name of the host network interface linked to the container\'s network interface. |\n| container_device | Container network interface name. |\n| interface_type | Network interface type. Always "virtual" for the containers. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.net_net | received, sent | kilobits/s |\n| cgroup.net_packets | received, sent, multicast | pps |\n| cgroup.net_errors | inbound, outbound | errors/s |\n| cgroup.net_drops | inbound, outbound | errors/s |\n| cgroup.net_fifo | receive, transmit | errors/s |\n| cgroup.net_compressed | receive, sent | pps |\n| cgroup.net_events | frames, collisions, carrier | events/s |\n| cgroup.net_operstate | up, down, notpresent, lowerlayerdown, testing, dormant, unknown | state |\n| cgroup.net_carrier | up, down | state |\n| cgroup.net_mtu | mtu | octets |\n\n',integration_type:"collector",id:"cgroups.plugin-/sys/fs/cgroup-Libvirt_VMs_and_Containers",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cgroups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance:{name:"Nomad Containers",link:"https://www.nomadproject.io/",icon_filename:"nomad.png",categories:["data-collection.containers-and-vms"]},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["nomad","hashicorp","containers","orchestrator"]},overview:"# Nomad Containers\n\nPlugin: cgroups.plugin\nModule: /sys/fs/cgroup\n\n## Overview\n\nMonitor HashiCorp Nomad container resource utilization \u2014 CPU, memory, disk I/O, and network \u2014 via Linux cgroups.\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ cgroup_10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.cpu_limit | average cgroup CPU utilization over the last 10 minutes |\n| [ cgroup_ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.mem_usage | cgroup memory utilization |\n| [ cgroup_1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ cgroup_10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.cpu_limit | used | percentage |\n| cgroup.cpu | user, system | percentage |\n| cgroup.cpu_per_core | a dimension per core | percentage |\n| cgroup.throttled | throttled | percentage |\n| cgroup.throttled_duration | duration | ms |\n| cgroup.cpu_shares | shares | shares |\n| cgroup.mem | cache, rss, swap, rss_huge, mapped_file | MiB |\n| cgroup.writeback | dirty, writeback | MiB |\n| cgroup.mem_activity | in, out | MiB/s |\n| cgroup.pgfaults | pgfault, swap | MiB/s |\n| cgroup.mem_usage | ram, swap | MiB |\n| cgroup.mem_usage_limit | available, used | MiB |\n| cgroup.mem_utilization | utilization | percentage |\n| cgroup.mem_failcnt | failures | count |\n| cgroup.io | read, write | KiB/s |\n| cgroup.serviced_ops | read, write | operations/s |\n| cgroup.throttle_io | read, write | KiB/s |\n| cgroup.throttle_serviced_ops | read, write | operations/s |\n| cgroup.queued_ops | read, write | operations |\n| cgroup.merged_ops | read, write | operations/s |\n| cgroup.cpu_some_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_some_pressure_stall_time | time | ms |\n| cgroup.cpu_full_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_full_pressure_stall_time | time | ms |\n| cgroup.memory_some_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_some_pressure_stall_time | time | ms |\n| cgroup.memory_full_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_full_pressure_stall_time | time | ms |\n| cgroup.io_some_pressure | some10, some60, some300 | percentage |\n| cgroup.io_some_pressure_stall_time | time | ms |\n| cgroup.io_full_pressure | some10, some60, some300 | percentage |\n| cgroup.io_full_pressure_stall_time | time | ms |\n| cgroup.pids_current | pids | pids |\n| cgroup.cachestat_ratio | ratio | % |\n| cgroup.cachestat_dirties | dirty | page/s |\n| cgroup.cachestat_hits | hit | hits/s |\n| cgroup.cachestat_misses | miss | misses/s |\n\n### Per cgroup network device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n| device | The name of the host network interface linked to the container\'s network interface. |\n| container_device | Container network interface name. |\n| interface_type | Network interface type. Always "virtual" for the containers. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.net_net | received, sent | kilobits/s |\n| cgroup.net_packets | received, sent, multicast | pps |\n| cgroup.net_errors | inbound, outbound | errors/s |\n| cgroup.net_drops | inbound, outbound | errors/s |\n| cgroup.net_fifo | receive, transmit | errors/s |\n| cgroup.net_compressed | receive, sent | pps |\n| cgroup.net_events | frames, collisions, carrier | events/s |\n| cgroup.net_operstate | up, down, notpresent, lowerlayerdown, testing, dormant, unknown | state |\n| cgroup.net_carrier | up, down | state |\n| cgroup.net_mtu | mtu | octets |\n\n',integration_type:"collector",id:"cgroups.plugin-/sys/fs/cgroup-Nomad_Containers",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cgroups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance:{name:"OpenShift Containers",link:"https://www.redhat.com/en/technologies/cloud-computing/openshift",icon_filename:"openshift.png",categories:["data-collection.containers-and-vms"]},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["openshift","red hat openshift","okd","kubernetes","k8s","containers","pods"]},overview:"# OpenShift Containers\n\nPlugin: cgroups.plugin\nModule: /sys/fs/cgroup\n\n## Overview\n\nMonitor Red Hat OpenShift container resource utilization \u2014 CPU, memory, disk I/O, and network \u2014 via Linux cgroups.\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ k8s_cgroup_10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | k8s.cgroup.cpu_limit | average cgroup CPU utilization over the last 10 minutes |\n| [ k8s_cgroup_ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | k8s.cgroup.mem_usage | cgroup memory utilization |\n| [ k8s_cgroup_1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | k8s.cgroup.net_packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ k8s_cgroup_10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | k8s.cgroup.net_packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per k8s cgroup\n\nThese metrics refer to the Pod container.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| k8s_node_name | Node name. The value of _pod.spec.nodeName_. |\n| k8s_namespace | Namespace name. The value of _pod.metadata.namespace_. |\n| k8s_controller_kind | Controller kind (ReplicaSet, DaemonSet, StatefulSet, Job, etc.). The value of _pod.OwnerReferences.Controller.Kind_. |\n| k8s_controller_name | Controller name.The value of _pod.OwnerReferences.Controller.Name_. |\n| k8s_pod_name | Pod name. The value of _pod.metadata.name_. |\n| k8s_container_name | Container name. The value of _pod.spec.containers.name_. |\n| k8s_kind | Instance kind: "pod" or "container". |\n| k8s_qos_class | QoS class (guaranteed, burstable, besteffort). |\n| k8s_cluster_id | Cluster ID. The value of kube-system namespace _namespace.metadata.uid_. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| k8s.cgroup.cpu_limit | used | percentage |\n| k8s.cgroup.cpu | user, system | percentage |\n| k8s.cgroup.cpu_per_core | a dimension per core | percentage |\n| k8s.cgroup.throttled | throttled | percentage |\n| k8s.cgroup.throttled_duration | duration | ms |\n| k8s.cgroup.cpu_shares | shares | shares |\n| k8s.cgroup.mem | cache, rss, swap, rss_huge, mapped_file | MiB |\n| k8s.cgroup.writeback | dirty, writeback | MiB |\n| k8s.cgroup.mem_activity | in, out | MiB/s |\n| k8s.cgroup.pgfaults | pgfault, swap | MiB/s |\n| k8s.cgroup.mem_usage | ram, swap | MiB |\n| k8s.cgroup.mem_usage_limit | available, used | MiB |\n| k8s.cgroup.mem_utilization | utilization | percentage |\n| k8s.cgroup.mem_failcnt | failures | count |\n| k8s.cgroup.io | read, write | KiB/s |\n| k8s.cgroup.serviced_ops | read, write | operations/s |\n| k8s.cgroup.throttle_io | read, write | KiB/s |\n| k8s.cgroup.throttle_serviced_ops | read, write | operations/s |\n| k8s.cgroup.queued_ops | read, write | operations |\n| k8s.cgroup.merged_ops | read, write | operations/s |\n| k8s.cgroup.cpu_some_pressure | some10, some60, some300 | percentage |\n| k8s.cgroup.cpu_some_pressure_stall_time | time | ms |\n| k8s.cgroup.cpu_full_pressure | some10, some60, some300 | percentage |\n| k8s.cgroup.cpu_full_pressure_stall_time | time | ms |\n| k8s.cgroup.memory_some_pressure | some10, some60, some300 | percentage |\n| k8s.cgroup.memory_some_pressure_stall_time | time | ms |\n| k8s.cgroup.memory_full_pressure | some10, some60, some300 | percentage |\n| k8s.cgroup.memory_full_pressure_stall_time | time | ms |\n| k8s.cgroup.io_some_pressure | some10, some60, some300 | percentage |\n| k8s.cgroup.io_some_pressure_stall_time | time | ms |\n| k8s.cgroup.io_full_pressure | some10, some60, some300 | percentage |\n| k8s.cgroup.io_full_pressure_stall_time | time | ms |\n| k8s.cgroup.pids_current | pids | pids |\n\n### Per k8s cgroup network device\n\nThese metrics refer to the Pod container network interface.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device | The name of the host network interface linked to the container\'s network interface. |\n| container_device | Container network interface name. |\n| interface_type | Network interface type. Always "virtual" for the containers. |\n| k8s_node_name | Node name. The value of _pod.spec.nodeName_. |\n| k8s_namespace | Namespace name. The value of _pod.metadata.namespace_. |\n| k8s_controller_kind | Controller kind (ReplicaSet, DaemonSet, StatefulSet, Job, etc.). The value of _pod.OwnerReferences.Controller.Kind_. |\n| k8s_controller_name | Controller name.The value of _pod.OwnerReferences.Controller.Name_. |\n| k8s_pod_name | Pod name. The value of _pod.metadata.name_. |\n| k8s_container_name | Container name. The value of _pod.spec.containers.name_. |\n| k8s_kind | Instance kind: "pod" or "container". |\n| k8s_qos_class | QoS class (guaranteed, burstable, besteffort). |\n| k8s_cluster_id | Cluster ID. The value of kube-system namespace _namespace.metadata.uid_. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| k8s.cgroup.net_net | received, sent | kilobits/s |\n| k8s.cgroup.net_packets | received, sent, multicast | pps |\n| k8s.cgroup.net_errors | inbound, outbound | errors/s |\n| k8s.cgroup.net_drops | inbound, outbound | errors/s |\n| k8s.cgroup.net_fifo | receive, transmit | errors/s |\n| k8s.cgroup.net_compressed | receive, sent | pps |\n| k8s.cgroup.net_events | frames, collisions, carrier | events/s |\n| k8s.cgroup.net_operstate | up, down, notpresent, lowerlayerdown, testing, dormant, unknown | state |\n| k8s.cgroup.net_carrier | up, down | state |\n| k8s.cgroup.net_mtu | mtu | octets |\n\n### Per cgroups plugin IPC\n\ncgroups.plugin netipc lookup-server and discovery signal health.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| netdata.collector.ipc.cgroups_lookup.server.requests | requests_responded, requests_error, lookup_miss_signals_sent, lookup_miss_signals_coalesced | requests/s |\n| netdata.collector.ipc.cgroups_lookup.server.request_duration_ms | le_1ms, le_5ms, le_10ms, le_50ms, le_100ms, le_500ms, le_1000ms, gt_1000ms | requests/s |\n| netdata.collector.cgroups.discovery.scans | discovery_scans_natural, discovery_scans_opportunistic | scans/s |\n\n',integration_type:"collector",id:"cgroups.plugin-/sys/fs/cgroup-OpenShift_Containers",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cgroups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance:{name:"OpenStack VMs",link:"https://www.openstack.org/",icon_filename:"openstack.svg",categories:["data-collection.containers-and-vms"]},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["openstack","openstack nova","openstack compute","kvm","qemu","libvirt","virtual machine","vm","cloud"]},overview:"# OpenStack VMs\n\nPlugin: cgroups.plugin\nModule: /sys/fs/cgroup\n\n## Overview\n\nMonitor OpenStack Nova virtual machine resource utilization \u2014 CPU, memory, disk I/O, and network \u2014 via Linux cgroups.\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ cgroup_10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.cpu_limit | average cgroup CPU utilization over the last 10 minutes |\n| [ cgroup_ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.mem_usage | cgroup memory utilization |\n| [ cgroup_1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ cgroup_10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.cpu_limit | used | percentage |\n| cgroup.cpu | user, system | percentage |\n| cgroup.cpu_per_core | a dimension per core | percentage |\n| cgroup.throttled | throttled | percentage |\n| cgroup.throttled_duration | duration | ms |\n| cgroup.cpu_shares | shares | shares |\n| cgroup.mem | cache, rss, swap, rss_huge, mapped_file | MiB |\n| cgroup.writeback | dirty, writeback | MiB |\n| cgroup.mem_activity | in, out | MiB/s |\n| cgroup.pgfaults | pgfault, swap | MiB/s |\n| cgroup.mem_usage | ram, swap | MiB |\n| cgroup.mem_usage_limit | available, used | MiB |\n| cgroup.mem_utilization | utilization | percentage |\n| cgroup.mem_failcnt | failures | count |\n| cgroup.io | read, write | KiB/s |\n| cgroup.serviced_ops | read, write | operations/s |\n| cgroup.throttle_io | read, write | KiB/s |\n| cgroup.throttle_serviced_ops | read, write | operations/s |\n| cgroup.queued_ops | read, write | operations |\n| cgroup.merged_ops | read, write | operations/s |\n| cgroup.cpu_some_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_some_pressure_stall_time | time | ms |\n| cgroup.cpu_full_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_full_pressure_stall_time | time | ms |\n| cgroup.memory_some_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_some_pressure_stall_time | time | ms |\n| cgroup.memory_full_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_full_pressure_stall_time | time | ms |\n| cgroup.io_some_pressure | some10, some60, some300 | percentage |\n| cgroup.io_some_pressure_stall_time | time | ms |\n| cgroup.io_full_pressure | some10, some60, some300 | percentage |\n| cgroup.io_full_pressure_stall_time | time | ms |\n| cgroup.pids_current | pids | pids |\n| cgroup.cachestat_ratio | ratio | % |\n| cgroup.cachestat_dirties | dirty | page/s |\n| cgroup.cachestat_hits | hit | hits/s |\n| cgroup.cachestat_misses | miss | misses/s |\n\n### Per cgroup network device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n| device | The name of the host network interface linked to the container\'s network interface. |\n| container_device | Container network interface name. |\n| interface_type | Network interface type. Always "virtual" for the containers. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.net_net | received, sent | kilobits/s |\n| cgroup.net_packets | received, sent, multicast | pps |\n| cgroup.net_errors | inbound, outbound | errors/s |\n| cgroup.net_drops | inbound, outbound | errors/s |\n| cgroup.net_fifo | receive, transmit | errors/s |\n| cgroup.net_compressed | receive, sent | pps |\n| cgroup.net_events | frames, collisions, carrier | events/s |\n| cgroup.net_operstate | up, down, notpresent, lowerlayerdown, testing, dormant, unknown | state |\n| cgroup.net_carrier | up, down | state |\n| cgroup.net_mtu | mtu | octets |\n\n',integration_type:"collector",id:"cgroups.plugin-/sys/fs/cgroup-OpenStack_VMs",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cgroups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance:{name:"Podman Containers",link:"https://podman.io/",icon_filename:"podman.png",categories:["data-collection.containers-and-vms"]},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["podman","containers","pods","oci","crun","runc"]},overview:"# Podman Containers\n\nPlugin: cgroups.plugin\nModule: /sys/fs/cgroup\n\n## Overview\n\nMonitor Podman container resource utilization \u2014 CPU, memory, disk I/O, and network \u2014 via Linux cgroups.\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ cgroup_10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.cpu_limit | average cgroup CPU utilization over the last 10 minutes |\n| [ cgroup_ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.mem_usage | cgroup memory utilization |\n| [ cgroup_1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ cgroup_10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.cpu_limit | used | percentage |\n| cgroup.cpu | user, system | percentage |\n| cgroup.cpu_per_core | a dimension per core | percentage |\n| cgroup.throttled | throttled | percentage |\n| cgroup.throttled_duration | duration | ms |\n| cgroup.cpu_shares | shares | shares |\n| cgroup.mem | cache, rss, swap, rss_huge, mapped_file | MiB |\n| cgroup.writeback | dirty, writeback | MiB |\n| cgroup.mem_activity | in, out | MiB/s |\n| cgroup.pgfaults | pgfault, swap | MiB/s |\n| cgroup.mem_usage | ram, swap | MiB |\n| cgroup.mem_usage_limit | available, used | MiB |\n| cgroup.mem_utilization | utilization | percentage |\n| cgroup.mem_failcnt | failures | count |\n| cgroup.io | read, write | KiB/s |\n| cgroup.serviced_ops | read, write | operations/s |\n| cgroup.throttle_io | read, write | KiB/s |\n| cgroup.throttle_serviced_ops | read, write | operations/s |\n| cgroup.queued_ops | read, write | operations |\n| cgroup.merged_ops | read, write | operations/s |\n| cgroup.cpu_some_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_some_pressure_stall_time | time | ms |\n| cgroup.cpu_full_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_full_pressure_stall_time | time | ms |\n| cgroup.memory_some_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_some_pressure_stall_time | time | ms |\n| cgroup.memory_full_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_full_pressure_stall_time | time | ms |\n| cgroup.io_some_pressure | some10, some60, some300 | percentage |\n| cgroup.io_some_pressure_stall_time | time | ms |\n| cgroup.io_full_pressure | some10, some60, some300 | percentage |\n| cgroup.io_full_pressure_stall_time | time | ms |\n| cgroup.pids_current | pids | pids |\n| cgroup.cachestat_ratio | ratio | % |\n| cgroup.cachestat_dirties | dirty | page/s |\n| cgroup.cachestat_hits | hit | hits/s |\n| cgroup.cachestat_misses | miss | misses/s |\n\n### Per cgroup network device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n| device | The name of the host network interface linked to the container\'s network interface. |\n| container_device | Container network interface name. |\n| interface_type | Network interface type. Always "virtual" for the containers. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.net_net | received, sent | kilobits/s |\n| cgroup.net_packets | received, sent, multicast | pps |\n| cgroup.net_errors | inbound, outbound | errors/s |\n| cgroup.net_drops | inbound, outbound | errors/s |\n| cgroup.net_fifo | receive, transmit | errors/s |\n| cgroup.net_compressed | receive, sent | pps |\n| cgroup.net_events | frames, collisions, carrier | events/s |\n| cgroup.net_operstate | up, down, notpresent, lowerlayerdown, testing, dormant, unknown | state |\n| cgroup.net_carrier | up, down | state |\n| cgroup.net_mtu | mtu | octets |\n\n',integration_type:"collector",id:"cgroups.plugin-/sys/fs/cgroup-Podman_Containers",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cgroups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance:{name:"Proxmox VMs and Containers",link:"",icon_filename:"proxmox.png",categories:["data-collection.containers-and-vms"]},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["proxmox","proxmox ve","pve","kvm","qemu","lxc","libvirt","virtual machine","vm","container"]},overview:"# Proxmox VMs and Containers\n\nPlugin: cgroups.plugin\nModule: /sys/fs/cgroup\n\n## Overview\n\nMonitor Proxmox VE virtual machine and container resource utilization \u2014 CPU, memory, disk I/O, and network \u2014 via Linux cgroups.\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ cgroup_10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.cpu_limit | average cgroup CPU utilization over the last 10 minutes |\n| [ cgroup_ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.mem_usage | cgroup memory utilization |\n| [ cgroup_1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ cgroup_10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.cpu_limit | used | percentage |\n| cgroup.cpu | user, system | percentage |\n| cgroup.cpu_per_core | a dimension per core | percentage |\n| cgroup.throttled | throttled | percentage |\n| cgroup.throttled_duration | duration | ms |\n| cgroup.cpu_shares | shares | shares |\n| cgroup.mem | cache, rss, swap, rss_huge, mapped_file | MiB |\n| cgroup.writeback | dirty, writeback | MiB |\n| cgroup.mem_activity | in, out | MiB/s |\n| cgroup.pgfaults | pgfault, swap | MiB/s |\n| cgroup.mem_usage | ram, swap | MiB |\n| cgroup.mem_usage_limit | available, used | MiB |\n| cgroup.mem_utilization | utilization | percentage |\n| cgroup.mem_failcnt | failures | count |\n| cgroup.io | read, write | KiB/s |\n| cgroup.serviced_ops | read, write | operations/s |\n| cgroup.throttle_io | read, write | KiB/s |\n| cgroup.throttle_serviced_ops | read, write | operations/s |\n| cgroup.queued_ops | read, write | operations |\n| cgroup.merged_ops | read, write | operations/s |\n| cgroup.cpu_some_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_some_pressure_stall_time | time | ms |\n| cgroup.cpu_full_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_full_pressure_stall_time | time | ms |\n| cgroup.memory_some_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_some_pressure_stall_time | time | ms |\n| cgroup.memory_full_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_full_pressure_stall_time | time | ms |\n| cgroup.io_some_pressure | some10, some60, some300 | percentage |\n| cgroup.io_some_pressure_stall_time | time | ms |\n| cgroup.io_full_pressure | some10, some60, some300 | percentage |\n| cgroup.io_full_pressure_stall_time | time | ms |\n| cgroup.pids_current | pids | pids |\n| cgroup.cachestat_ratio | ratio | % |\n| cgroup.cachestat_dirties | dirty | page/s |\n| cgroup.cachestat_hits | hit | hits/s |\n| cgroup.cachestat_misses | miss | misses/s |\n\n### Per cgroup network device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n| device | The name of the host network interface linked to the container\'s network interface. |\n| container_device | Container network interface name. |\n| interface_type | Network interface type. Always "virtual" for the containers. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.net_net | received, sent | kilobits/s |\n| cgroup.net_packets | received, sent, multicast | pps |\n| cgroup.net_errors | inbound, outbound | errors/s |\n| cgroup.net_drops | inbound, outbound | errors/s |\n| cgroup.net_fifo | receive, transmit | errors/s |\n| cgroup.net_compressed | receive, sent | pps |\n| cgroup.net_events | frames, collisions, carrier | events/s |\n| cgroup.net_operstate | up, down, notpresent, lowerlayerdown, testing, dormant, unknown | state |\n| cgroup.net_carrier | up, down | state |\n| cgroup.net_mtu | mtu | octets |\n\n',integration_type:"collector",id:"cgroups.plugin-/sys/fs/cgroup-Proxmox_VMs_and_Containers",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cgroups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance:{name:"Systemd Services",link:"",icon_filename:"systemd.svg",categories:["data-collection.operating-systems"]},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["systemd","services","units","daemons","systemctl","cgroups"]},overview:"# Systemd Services\n\nPlugin: cgroups.plugin\nModule: /sys/fs/cgroup\n\n## Overview\n\nMonitor containers and virtual machines resource utilization \u2014 CPU, memory, disk I/O, network, and page cache activity \u2014 via Linux cgroups.\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per systemd service\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| service_name | Service name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| systemd.service.cpu.utilization | user, system | percentage |\n| systemd.service.memory.usage | ram, swap | MiB |\n| systemd.service.memory.failcnt | fail | failures/s |\n| systemd.service.memory.ram.usage | rss, cache, mapped_file, rss_huge | MiB |\n| systemd.service.memory.writeback | writeback, dirty | MiB |\n| systemd.service.memory.paging.faults | minor, major | MiB/s |\n| systemd.service.memory.paging.io | in, out | MiB/s |\n| systemd.service.disk.io | read, write | KiB/s |\n| systemd.service.disk.iops | read, write | operations/s |\n| systemd.service.disk.throttle.io | read, write | KiB/s |\n| systemd.service.disk.throttle.iops | read, write | operations/s |\n| systemd.service.disk.queued_iops | read, write | operations/s |\n| systemd.service.disk.merged_iops | read, write | operations/s |\n| systemd.service.pids.current | pids | pids |\n| systemd.service.cachestat_ratio | ratio | % |\n| systemd.service.cachestat_dirties | dirty | page/s |\n| systemd.service.cachestat_hits | hit | hits/s |\n| systemd.service.cachestat_misses | miss | misses/s |\n\n",integration_type:"collector",id:"cgroups.plugin-/sys/fs/cgroup-Systemd_Services",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cgroups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance:{name:"Virtual Machines",link:"",icon_filename:"container.svg",categories:["data-collection.containers-and-vms"]},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["vms","virtual machines","virtualization","hypervisor","kvm","qemu","libvirt","proxmox","proxmox ve","ovirt","openstack","openstack nova","cgroups"]},overview:"# Virtual Machines\n\nPlugin: cgroups.plugin\nModule: /sys/fs/cgroup\n\n## Overview\n\nMonitor virtual machine resource utilization \u2014 CPU, memory, disk I/O, and network \u2014 via Linux cgroups.\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ cgroup_10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.cpu_limit | average cgroup CPU utilization over the last 10 minutes |\n| [ cgroup_ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.mem_usage | cgroup memory utilization |\n| [ cgroup_1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ cgroup_10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.cpu_limit | used | percentage |\n| cgroup.cpu | user, system | percentage |\n| cgroup.cpu_per_core | a dimension per core | percentage |\n| cgroup.throttled | throttled | percentage |\n| cgroup.throttled_duration | duration | ms |\n| cgroup.cpu_shares | shares | shares |\n| cgroup.mem | cache, rss, swap, rss_huge, mapped_file | MiB |\n| cgroup.writeback | dirty, writeback | MiB |\n| cgroup.mem_activity | in, out | MiB/s |\n| cgroup.pgfaults | pgfault, swap | MiB/s |\n| cgroup.mem_usage | ram, swap | MiB |\n| cgroup.mem_usage_limit | available, used | MiB |\n| cgroup.mem_utilization | utilization | percentage |\n| cgroup.mem_failcnt | failures | count |\n| cgroup.io | read, write | KiB/s |\n| cgroup.serviced_ops | read, write | operations/s |\n| cgroup.throttle_io | read, write | KiB/s |\n| cgroup.throttle_serviced_ops | read, write | operations/s |\n| cgroup.queued_ops | read, write | operations |\n| cgroup.merged_ops | read, write | operations/s |\n| cgroup.cpu_some_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_some_pressure_stall_time | time | ms |\n| cgroup.cpu_full_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_full_pressure_stall_time | time | ms |\n| cgroup.memory_some_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_some_pressure_stall_time | time | ms |\n| cgroup.memory_full_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_full_pressure_stall_time | time | ms |\n| cgroup.io_some_pressure | some10, some60, some300 | percentage |\n| cgroup.io_some_pressure_stall_time | time | ms |\n| cgroup.io_full_pressure | some10, some60, some300 | percentage |\n| cgroup.io_full_pressure_stall_time | time | ms |\n| cgroup.pids_current | pids | pids |\n| cgroup.cachestat_ratio | ratio | % |\n| cgroup.cachestat_dirties | dirty | page/s |\n| cgroup.cachestat_hits | hit | hits/s |\n| cgroup.cachestat_misses | miss | misses/s |\n\n### Per cgroup network device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n| device | The name of the host network interface linked to the container\'s network interface. |\n| container_device | Container network interface name. |\n| interface_type | Network interface type. Always "virtual" for the containers. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.net_net | received, sent | kilobits/s |\n| cgroup.net_packets | received, sent, multicast | pps |\n| cgroup.net_errors | inbound, outbound | errors/s |\n| cgroup.net_drops | inbound, outbound | errors/s |\n| cgroup.net_fifo | receive, transmit | errors/s |\n| cgroup.net_compressed | receive, sent | pps |\n| cgroup.net_events | frames, collisions, carrier | events/s |\n| cgroup.net_operstate | up, down, notpresent, lowerlayerdown, testing, dormant, unknown | state |\n| cgroup.net_carrier | up, down | state |\n| cgroup.net_mtu | mtu | octets |\n\n',integration_type:"collector",id:"cgroups.plugin-/sys/fs/cgroup-Virtual_Machines",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cgroups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance:{name:"containerd Containers",link:"https://containerd.io/",icon_filename:"containerd.png",categories:["data-collection.containers-and-vms"]},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["containerd","containers","cri","container runtime","nerdctl"]},overview:"# containerd Containers\n\nPlugin: cgroups.plugin\nModule: /sys/fs/cgroup\n\n## Overview\n\nMonitor containerd container resource utilization \u2014 CPU, memory, disk I/O, and network \u2014 via Linux cgroups.\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ cgroup_10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.cpu_limit | average cgroup CPU utilization over the last 10 minutes |\n| [ cgroup_ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.mem_usage | cgroup memory utilization |\n| [ cgroup_1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ cgroup_10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.cpu_limit | used | percentage |\n| cgroup.cpu | user, system | percentage |\n| cgroup.cpu_per_core | a dimension per core | percentage |\n| cgroup.throttled | throttled | percentage |\n| cgroup.throttled_duration | duration | ms |\n| cgroup.cpu_shares | shares | shares |\n| cgroup.mem | cache, rss, swap, rss_huge, mapped_file | MiB |\n| cgroup.writeback | dirty, writeback | MiB |\n| cgroup.mem_activity | in, out | MiB/s |\n| cgroup.pgfaults | pgfault, swap | MiB/s |\n| cgroup.mem_usage | ram, swap | MiB |\n| cgroup.mem_usage_limit | available, used | MiB |\n| cgroup.mem_utilization | utilization | percentage |\n| cgroup.mem_failcnt | failures | count |\n| cgroup.io | read, write | KiB/s |\n| cgroup.serviced_ops | read, write | operations/s |\n| cgroup.throttle_io | read, write | KiB/s |\n| cgroup.throttle_serviced_ops | read, write | operations/s |\n| cgroup.queued_ops | read, write | operations |\n| cgroup.merged_ops | read, write | operations/s |\n| cgroup.cpu_some_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_some_pressure_stall_time | time | ms |\n| cgroup.cpu_full_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_full_pressure_stall_time | time | ms |\n| cgroup.memory_some_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_some_pressure_stall_time | time | ms |\n| cgroup.memory_full_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_full_pressure_stall_time | time | ms |\n| cgroup.io_some_pressure | some10, some60, some300 | percentage |\n| cgroup.io_some_pressure_stall_time | time | ms |\n| cgroup.io_full_pressure | some10, some60, some300 | percentage |\n| cgroup.io_full_pressure_stall_time | time | ms |\n| cgroup.pids_current | pids | pids |\n| cgroup.cachestat_ratio | ratio | % |\n| cgroup.cachestat_dirties | dirty | page/s |\n| cgroup.cachestat_hits | hit | hits/s |\n| cgroup.cachestat_misses | miss | misses/s |\n\n### Per cgroup network device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n| device | The name of the host network interface linked to the container\'s network interface. |\n| container_device | Container network interface name. |\n| interface_type | Network interface type. Always "virtual" for the containers. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.net_net | received, sent | kilobits/s |\n| cgroup.net_packets | received, sent, multicast | pps |\n| cgroup.net_errors | inbound, outbound | errors/s |\n| cgroup.net_drops | inbound, outbound | errors/s |\n| cgroup.net_fifo | receive, transmit | errors/s |\n| cgroup.net_compressed | receive, sent | pps |\n| cgroup.net_events | frames, collisions, carrier | events/s |\n| cgroup.net_operstate | up, down, notpresent, lowerlayerdown, testing, dormant, unknown | state |\n| cgroup.net_carrier | up, down | state |\n| cgroup.net_mtu | mtu | octets |\n\n',integration_type:"collector",id:"cgroups.plugin-/sys/fs/cgroup-containerd_Containers",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cgroups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance:{name:"oVirt VMs",link:"",icon_filename:"ovirt.svg",categories:["data-collection.containers-and-vms"]},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["ovirt","rhev","red hat virtualization","red hat enterprise virtualization","kvm","qemu","libvirt","virtual machine","vm"]},overview:"# oVirt VMs\n\nPlugin: cgroups.plugin\nModule: /sys/fs/cgroup\n\n## Overview\n\nMonitor oVirt/RHEV virtual machine resource utilization \u2014 CPU, memory, disk I/O, and network \u2014 via Linux cgroups.\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ cgroup_10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.cpu_limit | average cgroup CPU utilization over the last 10 minutes |\n| [ cgroup_ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.mem_usage | cgroup memory utilization |\n| [ cgroup_1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ cgroup_10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.cpu_limit | used | percentage |\n| cgroup.cpu | user, system | percentage |\n| cgroup.cpu_per_core | a dimension per core | percentage |\n| cgroup.throttled | throttled | percentage |\n| cgroup.throttled_duration | duration | ms |\n| cgroup.cpu_shares | shares | shares |\n| cgroup.mem | cache, rss, swap, rss_huge, mapped_file | MiB |\n| cgroup.writeback | dirty, writeback | MiB |\n| cgroup.mem_activity | in, out | MiB/s |\n| cgroup.pgfaults | pgfault, swap | MiB/s |\n| cgroup.mem_usage | ram, swap | MiB |\n| cgroup.mem_usage_limit | available, used | MiB |\n| cgroup.mem_utilization | utilization | percentage |\n| cgroup.mem_failcnt | failures | count |\n| cgroup.io | read, write | KiB/s |\n| cgroup.serviced_ops | read, write | operations/s |\n| cgroup.throttle_io | read, write | KiB/s |\n| cgroup.throttle_serviced_ops | read, write | operations/s |\n| cgroup.queued_ops | read, write | operations |\n| cgroup.merged_ops | read, write | operations/s |\n| cgroup.cpu_some_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_some_pressure_stall_time | time | ms |\n| cgroup.cpu_full_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_full_pressure_stall_time | time | ms |\n| cgroup.memory_some_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_some_pressure_stall_time | time | ms |\n| cgroup.memory_full_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_full_pressure_stall_time | time | ms |\n| cgroup.io_some_pressure | some10, some60, some300 | percentage |\n| cgroup.io_some_pressure_stall_time | time | ms |\n| cgroup.io_full_pressure | some10, some60, some300 | percentage |\n| cgroup.io_full_pressure_stall_time | time | ms |\n| cgroup.pids_current | pids | pids |\n| cgroup.cachestat_ratio | ratio | % |\n| cgroup.cachestat_dirties | dirty | page/s |\n| cgroup.cachestat_hits | hit | hits/s |\n| cgroup.cachestat_misses | miss | misses/s |\n\n### Per cgroup network device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n| device | The name of the host network interface linked to the container\'s network interface. |\n| container_device | Container network interface name. |\n| interface_type | Network interface type. Always "virtual" for the containers. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.net_net | received, sent | kilobits/s |\n| cgroup.net_packets | received, sent, multicast | pps |\n| cgroup.net_errors | inbound, outbound | errors/s |\n| cgroup.net_drops | inbound, outbound | errors/s |\n| cgroup.net_fifo | receive, transmit | errors/s |\n| cgroup.net_compressed | receive, sent | pps |\n| cgroup.net_events | frames, collisions, carrier | events/s |\n| cgroup.net_operstate | up, down, notpresent, lowerlayerdown, testing, dormant, unknown | state |\n| cgroup.net_carrier | up, down | state |\n| cgroup.net_mtu | mtu | octets |\n\n',integration_type:"collector",id:"cgroups.plugin-/sys/fs/cgroup-oVirt_VMs",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cgroups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance:{name:"systemd-nspawn Containers",link:"https://www.freedesktop.org/software/systemd/man/systemd-nspawn.html",icon_filename:"systemd.svg",categories:["data-collection.containers-and-vms"]},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["systemd-nspawn","nspawn","machinectl","systemd","containers"]},overview:"# systemd-nspawn Containers\n\nPlugin: cgroups.plugin\nModule: /sys/fs/cgroup\n\n## Overview\n\nMonitor systemd-nspawn container resource utilization \u2014 CPU, memory, disk I/O, and network \u2014 via Linux cgroups.\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ cgroup_10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.cpu_limit | average cgroup CPU utilization over the last 10 minutes |\n| [ cgroup_ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.mem_usage | cgroup memory utilization |\n| [ cgroup_1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ cgroup_10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cgroups.conf) | cgroup.net_packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.cpu_limit | used | percentage |\n| cgroup.cpu | user, system | percentage |\n| cgroup.cpu_per_core | a dimension per core | percentage |\n| cgroup.throttled | throttled | percentage |\n| cgroup.throttled_duration | duration | ms |\n| cgroup.cpu_shares | shares | shares |\n| cgroup.mem | cache, rss, swap, rss_huge, mapped_file | MiB |\n| cgroup.writeback | dirty, writeback | MiB |\n| cgroup.mem_activity | in, out | MiB/s |\n| cgroup.pgfaults | pgfault, swap | MiB/s |\n| cgroup.mem_usage | ram, swap | MiB |\n| cgroup.mem_usage_limit | available, used | MiB |\n| cgroup.mem_utilization | utilization | percentage |\n| cgroup.mem_failcnt | failures | count |\n| cgroup.io | read, write | KiB/s |\n| cgroup.serviced_ops | read, write | operations/s |\n| cgroup.throttle_io | read, write | KiB/s |\n| cgroup.throttle_serviced_ops | read, write | operations/s |\n| cgroup.queued_ops | read, write | operations |\n| cgroup.merged_ops | read, write | operations/s |\n| cgroup.cpu_some_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_some_pressure_stall_time | time | ms |\n| cgroup.cpu_full_pressure | some10, some60, some300 | percentage |\n| cgroup.cpu_full_pressure_stall_time | time | ms |\n| cgroup.memory_some_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_some_pressure_stall_time | time | ms |\n| cgroup.memory_full_pressure | some10, some60, some300 | percentage |\n| cgroup.memory_full_pressure_stall_time | time | ms |\n| cgroup.io_some_pressure | some10, some60, some300 | percentage |\n| cgroup.io_some_pressure_stall_time | time | ms |\n| cgroup.io_full_pressure | some10, some60, some300 | percentage |\n| cgroup.io_full_pressure_stall_time | time | ms |\n| cgroup.pids_current | pids | pids |\n| cgroup.cachestat_ratio | ratio | % |\n| cgroup.cachestat_dirties | dirty | page/s |\n| cgroup.cachestat_hits | hit | hits/s |\n| cgroup.cachestat_misses | miss | misses/s |\n\n### Per cgroup network device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container name or group path if name resolution fails. |\n| image | Docker/Podman container image name. |\n| device | The name of the host network interface linked to the container\'s network interface. |\n| container_device | Container network interface name. |\n| interface_type | Network interface type. Always "virtual" for the containers. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.net_net | received, sent | kilobits/s |\n| cgroup.net_packets | received, sent, multicast | pps |\n| cgroup.net_errors | inbound, outbound | errors/s |\n| cgroup.net_drops | inbound, outbound | errors/s |\n| cgroup.net_fifo | receive, transmit | errors/s |\n| cgroup.net_compressed | receive, sent | pps |\n| cgroup.net_events | frames, collisions, carrier | events/s |\n| cgroup.net_operstate | up, down, notpresent, lowerlayerdown, testing, dormant, unknown | state |\n| cgroup.net_carrier | up, down | state |\n| cgroup.net_mtu | mtu | octets |\n\n',integration_type:"collector",id:"cgroups.plugin-/sys/fs/cgroup-systemd-nspawn_Containers",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cgroups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"charts.d.plugin",module_name:"libreswan",monitored_instance:{name:"Libreswan",link:"https://libreswan.org/",categories:["data-collection.networking"],icon_filename:"libreswan.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["vpn","libreswan","network","ipsec"]},overview:"# Libreswan\n\nPlugin: charts.d.plugin\nModule: libreswan\n\n## Overview\n\nMonitor Libreswan performance for optimal IPsec VPN operations. Improve your VPN operations with Netdata''s real-time metrics and built-in alerts.\n\nThe collector uses the `ipsec` command to collect the information it needs.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Install charts.d plugin\n\nIf [using our official native DEB/RPM packages](https://github.com/netdata/netdata/blob/master/packaging/installer/UPDATE.md#determine-which-installation-method-you-used), make sure `netdata-plugin-chartsd` is installed.\n\n\n#### Permissions to execute `ipsec`\n\nThe plugin executes 2 commands to collect all the information it needs:\n\n```sh\nipsec whack --status\nipsec whack --trafficstatus\n```\n\nThe first command is used to extract the currently established tunnels, their IDs and their names.\nThe second command is used to extract the current uptime and traffic.\n\nMost probably user `netdata` will not be able to query libreswan, so the `ipsec` commands will be denied.\nThe plugin attempts to run `ipsec` as `sudo ipsec ...`, to get access to libreswan statistics.\n\nTo allow user `netdata` execute `sudo ipsec ...`, create the file `/etc/sudoers.d/netdata` with this content:\n\n```\nnetdata ALL = (root) NOPASSWD: /sbin/ipsec whack --status\nnetdata ALL = (root) NOPASSWD: /sbin/ipsec whack --trafficstatus\n```\n\nMake sure the path `/sbin/ipsec` matches your setup (execute `which ipsec` to find the right path).\n\n\n\n### Configuration\n\n#### Options\n\nThe config file is sourced by the charts.d plugin. It\'s a standard bash file.\n\nThe following collapsed table contains all the options that can be configured for the libreswan collector.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| libreswan_update_every | The data collection frequency. If unset, will inherit the netdata update frequency. | 1 | no |\n| libreswan_priority | The charts priority on the dashboard | 90000 | no |\n| libreswan_retries | The number of retries to do in case of failure before disabling the collector. | 10 | no |\n| libreswan_sudo | Whether to run `ipsec` with `sudo` or not. | 1 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `charts.d/libreswan.conf`.\n\nThe file format is POSIX shell script. Generally, the structure is:\n\n```sh\nOPTION_1="some value"\nOPTION_2="some other value"\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config charts.d/libreswan.conf\n```\n\n##### Examples\n\n###### Run `ipsec` without sudo\n\nRun the `ipsec` utility without sudo\n\n```yaml\n# the data collection frequency\n# if unset, will inherit the netdata update frequency\n#libreswan_update_every=1\n\n# the charts priority on the dashboard\n#libreswan_priority=90000\n\n# the number of retries to do in case of failure\n# before disabling the module\n#libreswan_retries=10\n\n# set to 1, to run ipsec with sudo (the default)\n# set to 0, to run ipsec without sudo\nlibreswan_sudo=0\n\n```\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n\nTo troubleshoot issues with the `libreswan` collector, run the `charts.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `charts.d.plugin` to debug the collector:\n\n ```bash\n ./charts.d.plugin debug 1 libreswan\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `libreswan` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep libreswan\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep libreswan /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep libreswan\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per IPSEC tunnel\n\nMetrics related to IPSEC tunnels. Each tunnel provides its own set of the following metrics.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| libreswan.net | in, out | kilobits/s |\n| libreswan.uptime | uptime | seconds |\n\n",integration_type:"collector",id:"charts.d.plugin-libreswan-Libreswan",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/charts.d.plugin/libreswan/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"charts.d.plugin",module_name:"opensips",monitored_instance:{name:"OpenSIPS",link:"https://opensips.org/",categories:["data-collection.applications"],icon_filename:"opensips.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["opensips","sip","voice","video","stream"]},overview:"# OpenSIPS\n\nPlugin: charts.d.plugin\nModule: opensips\n\n## Overview\n\nExamine OpenSIPS metrics for insights into SIP server operations. Study call rates, error rates, and response times for reliable voice over IP services.\n\nThe collector uses the `opensipsctl` command line utility to gather OpenSIPS metrics.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector will attempt to call `opensipsctl` along with a default number of parameters, even without any configuration.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Install charts.d plugin\n\nIf [using our official native DEB/RPM packages](https://github.com/netdata/netdata/blob/master/packaging/installer/UPDATE.md#determine-which-installation-method-you-used), make sure `netdata-plugin-chartsd` is installed.\n\n\n#### Required software\n\nThe collector requires the `opensipsctl` to be installed.\n\n\n### Configuration\n\n#### Options\n\nThe config file is sourced by the charts.d plugin. It\'s a standard bash file.\n\nThe following collapsed table contains all the options that can be configured for the opensips collector.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| opensips_opts | Specify parameters to the `opensipsctl` command. If the default value fails to get global status, set here whatever options are needed to connect to the opensips server. | fifo get_statistics all | no |\n| opensips_cmd | If `opensipsctl` is not in $PATH, specify it\'s full path here. | | no |\n| opensips_timeout | How long to wait for `opensipsctl` to respond. | 2 | no |\n| opensips_update_every | The data collection frequency. If unset, will inherit the netdata update frequency. | 5 | no |\n| opensips_priority | The charts priority on the dashboard. | 80000 | no |\n| opensips_retries | The number of retries to do in case of failure before disabling the collector. | 10 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `charts.d/opensips.conf`.\n\nThe file format is POSIX shell script. Generally, the structure is:\n\n```sh\nOPTION_1="some value"\nOPTION_2="some other value"\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config charts.d/opensips.conf\n```\n\n##### Examples\n\n###### Custom `opensipsctl` command\n\nSet a custom path to the `opensipsctl` command\n\n```yaml\n#opensips_opts="fifo get_statistics all"\nopensips_cmd=/opt/opensips/bin/opensipsctl\n#opensips_timeout=2\n\n# the data collection frequency\n# if unset, will inherit the netdata update frequency\n#opensips_update_every=5\n\n# the charts priority on the dashboard\n#opensips_priority=80000\n\n# the number of retries to do in case of failure\n# before disabling the module\n#opensips_retries=10\n\n```\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n\nTo troubleshoot issues with the `opensips` collector, run the `charts.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `charts.d.plugin` to debug the collector:\n\n ```bash\n ./charts.d.plugin debug 1 opensips\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `opensips` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep opensips\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep opensips /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep opensips\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per OpenSIPS instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| opensips.dialogs_active | active, early | dialogs |\n| opensips.users | registered, location, contacts, expires | users |\n| opensips.registrar | accepted, rejected | registrations/s |\n| opensips.transactions | UAS, UAC | transactions/s |\n| opensips.core_rcv | requests, replies | queries/s |\n| opensips.core_fwd | requests, replies | queries/s |\n| opensips.core_drop | requests, replies | queries/s |\n| opensips.core_err | requests, replies | queries/s |\n| opensips.core_bad | bad_URIs_rcvd, unsupported_methods, bad_msg_hdr | queries/s |\n| opensips.tm_replies | received, relayed, local | replies/s |\n| opensips.transactions_status | 2xx, 3xx, 4xx, 5xx, 6xx | transactions/s |\n| opensips.transactions_inuse | inuse | transactions |\n| opensips.sl_replies | 1xx, 2xx, 3xx, 4xx, 5xx, 6xx, sent, error, ACKed | replies/s |\n| opensips.dialogs | processed, expire, failed | dialogs/s |\n| opensips.net_waiting | UDP, TCP | kilobytes |\n| opensips.uri_checks | positive, negative | checks / sec |\n| opensips.traces | requests, replies | traces / sec |\n| opensips.shmem | total, used, real_used, max_used, free | kilobytes |\n| opensips.shmem_fragment | fragments | fragments |\n\n",integration_type:"collector",id:"charts.d.plugin-opensips-OpenSIPS",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/charts.d.plugin/opensips/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"cups.plugin",module_name:"cups.plugin",monitored_instance:{name:"CUPS",link:"https://www.cups.org/",categories:["data-collection.applications"],icon_filename:"cups.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# CUPS\n\nPlugin: cups.plugin\nModule: cups.plugin\n\n## Overview\n\nMonitor CUPS performance for achieving optimal printing system operations. Monitor job statuses, queue lengths, and error rates to ensure smooth printing tasks.\n\nThe plugin uses CUPS shared library to connect and monitor the server.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs to access the server. Netdata sets permissions during installation time to reach the server through its library.\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin detects when CUPS server is running and tries to connect to it.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Minimum setup\n\nThe CUPS server must be installed and running. If you installed `netdata` using a package manager, it is also necessary to install the package `netdata-plugin-cups`.\n\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n| command options | Additional parameters for the collector | | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:cups]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per CUPS instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cups.dests_state | idle, printing, stopped | dests |\n| cups.dests_option | total, acceptingjobs, shared | dests |\n| cups.job_num | pending, held, processing | jobs |\n| cups.job_size | pending, held, processing | KB |\n\n### Per destination\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cups.destination_job_num | pending, held, processing | jobs |\n| cups.destination_job_size | pending, held, processing | KB |\n\n",integration_type:"collector",id:"cups.plugin-cups.plugin-CUPS",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/cups.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"debugfs.plugin",module_name:"/sys/kernel/debug/extfrag",monitored_instance:{name:"System Memory Fragmentation",link:"https://www.kernel.org/doc/html/next/admin-guide/sysctl/vm.html",categories:["data-collection.operating-systems"],icon_filename:"microchip.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["extfrag","extfrag_threshold","memory fragmentation"]},overview:"# System Memory Fragmentation\n\nPlugin: debugfs.plugin\nModule: /sys/kernel/debug/extfrag\n\n## Overview\n\nCollects memory fragmentation statistics from the Linux kernel\n\nParse data from `debugfs` file\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\nThis integration requires read access to files under `/sys/kernel/debug/extfrag`, which are accessible only to the root user by default. Netdata uses Linux Capabilities to give the plugin access to debugfs. `CAP_DAC_READ_SEARCH` is added automatically during installation. This capability allows bypassing file read permission checks and directory read and execute permission checks. If file capabilities are not usable, then the plugin is instead installed with the SUID bit set in permissions so that it runs as root.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAssuming that debugfs is mounted and the required permissions are available, this integration will automatically run by default.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### filesystem\n\nThe debugfs filesystem must be mounted on your host for plugin to collect data. You can run the command-line (`sudo mount -t debugfs none /sys/kernel/debug/`) to mount it locally. It is also recommended to modify your fstab (5) avoiding necessity to mount the filesystem before starting netdata.\n\n\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n| command options | Additinal parameters for collector | | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:debugfs]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\nMonitor the overall memory fragmentation of the system.\n\n### Per node\n\nMemory fragmentation statistics for each NUMA node in the system.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| numa_node | The NUMA node the metrics are associated with. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.fragmentation_index_dma | order0, order1, order2, order3, order4, order5, order6, order7, order8, order9, order10 | index |\n| mem.fragmentation_index_dma32 | order0, order1, order2, order3, order4, order5, order6, order7, order8, order9, order10 | index |\n| mem.fragmentation_index_normal | order0, order1, order2, order3, order4, order5, order6, order7, order8, order9, order10 | index |\n\n",integration_type:"collector",id:"debugfs.plugin-/sys/kernel/debug/extfrag-System_Memory_Fragmentation",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/debugfs.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"debugfs.plugin",module_name:"/sys/kernel/debug/zswap",monitored_instance:{name:"Linux ZSwap",link:"https://www.kernel.org/doc/html/latest/admin-guide/mm/zswap.html",categories:["data-collection.operating-systems"],icon_filename:"microchip.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["swap","zswap","frontswap","swap cache"]},overview:"# Linux ZSwap\n\nPlugin: debugfs.plugin\nModule: /sys/kernel/debug/zswap\n\n## Overview\n\nCollects zswap performance metrics on Linux systems.\n\n\nParse data from `debugfs file.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\nThis integration requires read access to files under `/sys/kernel/debug/zswap`, which are accessible only to the root user by default. Netdata uses Linux Capabilities to give the plugin access to debugfs. `CAP_DAC_READ_SEARCH` is added automatically during installation. This capability allows bypassing file read permission checks and directory read and execute permission checks. If file capabilities are not usable, then the plugin is instead installed with the SUID bit set in permissions so that it runs as root.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAssuming that debugfs is mounted and the required permissions are available, this integration will automatically detect whether or not the system is using zswap.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### filesystem\n\nThe debugfs filesystem must be mounted on your host for plugin to collect data. You can run the command-line (`sudo mount -t debugfs none /sys/kernel/debug/`) to mount it locally. It is also recommended to modify your fstab (5) avoiding necessity to mount the filesystem before starting netdata.\n\n\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n| command options | Additinal parameters for collector | | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:debugfs]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\nMonitor the performance statistics of zswap.\n\n### Per Linux ZSwap instance\n\nGlobal zswap performance metrics.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.zswap_pool_compression_ratio | compression_ratio | ratio |\n| system.zswap_pool_compressed_size | compressed_size | bytes |\n| system.zswap_pool_raw_size | uncompressed_size | bytes |\n| system.zswap_rejections | compress_poor, kmemcache_fail, alloc_fail, reclaim_fail | rejections/s |\n| system.zswap_pool_limit_hit | limit | events/s |\n| system.zswap_written_back_raw_bytes | written_back | bytes/s |\n| system.zswap_same_filled_raw_size | same_filled | bytes |\n| system.zswap_duplicate_entry | duplicate | entries/s |\n\n",integration_type:"collector",id:"debugfs.plugin-/sys/kernel/debug/zswap-Linux_ZSwap",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/debugfs.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"debugfs.plugin",module_name:"audit",monitored_instance:{name:"Linux Audit Subsystem",link:"https://man7.org/linux/man-pages/man8/auditd.8.html",categories:["data-collection.operating-systems"],icon_filename:"linux.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["audit","auditd","backlog","security","kernel panic","compliance"]},overview:"# Linux Audit Subsystem\n\nPlugin: debugfs.plugin\nModule: audit\n\n## Overview\n\nMonitors Linux kernel audit subsystem status via NETLINK_AUDIT. Tracks audit backlog depth, backlog utilization, lost events, and configuration (failure mode, enabled state). Critical for detecting audit backlog overflow conditions that cause kernel panics when failure mode is set to 2 (panic).\n\n\nQuery kernel audit status via NETLINK_AUDIT socket (AUDIT_GET)\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\nThis integration requires root privileges or CAP_AUDIT_CONTROL capability to query the kernel audit subsystem via netlink. The Netdata installer grants this capability to debugfs.plugin automatically. The module detects missing privileges and disables itself gracefully.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAutomatically detects and monitors the Linux audit subsystem when the kernel supports NETLINK_AUDIT. Gracefully disables itself if audit is not available.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nMinimal. Performs a single netlink query per collection cycle. No file I/O, no process forking.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Linux kernel with audit support\n\nThe Linux kernel must have audit support enabled (CONFIG_AUDIT=y). Most distribution kernels include this by default.\n\n\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:debugfs]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ audit_backlog_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/audit.conf) | audit.backlog_utilization | Linux audit backlog utilization has exceeded the warning threshold while failure mode is set to panic. Kernel panic is imminent if backlog overflows. |\n| [ audit_lost_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/audit.conf) | audit.lost | Linux audit subsystem is losing events (backlog overflow, rate limiting, or memory pressure). |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\nMonitor the Linux kernel audit subsystem status and backlog health.\n\n### Per Linux Audit Subsystem instance\n\nAudit subsystem status for the entire system.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| audit.backlog | used, free | events |\n| audit.backlog_utilization | utilization | % |\n| audit.lost | lost | events/s |\n| audit.enabled | disabled, enabled, immutable | state |\n| audit.failure | silent, printk, panic | state |\n\n",integration_type:"collector",id:"debugfs.plugin-audit-Linux_Audit_Subsystem",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/debugfs.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"debugfs.plugin",module_name:"intel_rapl",monitored_instance:{name:"Power Capping",link:"https://www.kernel.org/doc/html/next/power/powercap/powercap.html",categories:["data-collection.hardware-and-sensors"],icon_filename:"powersupply.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["power capping","energy"]},overview:"# Power Capping\n\nPlugin: debugfs.plugin\nModule: intel_rapl\n\n## Overview\n\nCollects power capping performance metrics on Linux systems.\n\n\nParse data from `debugfs file.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\nThis integration requires read access to files under `/sys/devices/virtual/powercap`, which are accessible only to the root user by default. Netdata uses Linux Capabilities to give the plugin access to debugfs. `CAP_DAC_READ_SEARCH` is added automatically during installation. This capability allows bypassing file read permission checks and directory read and execute permission checks. If file capabilities are not usable, then the plugin is instead installed with the SUID bit set in permissions so that it runs as root.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAssuming that debugfs is mounted and the required permissions are available, this integration will automatically detect whether or not the system is using zswap.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### filesystem\n\nThe debugfs filesystem must be mounted on your host for plugin to collect data. You can run the command-line (`sudo mount -t debugfs none /sys/kernel/debug/`) to mount it locally. It is also recommended to modify your fstab (5) avoiding necessity to mount the filesystem before starting netdata.\n\n\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n| command options | Additinal parameters for collector | | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:debugfs]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\nMonitor the Intel RAPL zones Consumption.\n\n### Per Power Capping instance\n\nGlobal Intel RAPL zones.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cpu.powercap_intel_rapl_zone | Power | Watts |\n| cpu.powercap_intel_rapl_subzones | dram, core, uncore | Watts |\n\n",integration_type:"collector",id:"debugfs.plugin-intel_rapl-Power_Capping",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/debugfs.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"diskspace.plugin",module_name:"diskspace.plugin",monitored_instance:{name:"Disk space",link:"",categories:["data-collection.storage"],icon_filename:"hard-drive.svg"},related_resources:{integrations:{list:[{plugin_name:"ebpf.plugin",module_name:"disk"}]}},info_provided_to_referring_integrations:{description:""},keywords:["disk","I/O","space","inode"]},overview:'# Disk space\n\nPlugin: diskspace.plugin\nModule: diskspace.plugin\n\n## Overview\n\nMonitor Disk space metrics for proficient storage management. Keep track of usage, free space, and error rates to prevent disk space issues.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nDisk space can be monitored further using the following other integrations:\n\n- {% relatedResource id="ebpf.plugin-disk-eBPF_Disk" %}eBPF Disk{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin reads data from `/proc/self/mountinfo` and `/proc/diskstats file`.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nYou can also specify per mount point `[plugin:proc:diskspace:mountpoint]`\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n| remove charts of unmounted disks | Remove chart when a device is unmounted on host. | yes | no |\n| check for new mount points every | Parse proc files frequency. | 15s | no |\n| exclude space metrics on paths | Do not show metrics (charts) for listed paths. This option accepts netdata simple pattern. | /proc/* /sys/* /var/run/user/* /run/user/* /snap/* /var/lib/docker/* | no |\n| exclude space metrics on filesystems | Do not show metrics (charts) for listed filesystems. This option accepts netdata simple pattern. | *gvfs *gluster* *s3fs *ipfs *davfs2 *httpfs *sshfs *gdfs *moosefs fusectl autofs | no |\n| exclude inode metrics on filesystems | Do not show metrics (charts) for listed filesystems. This option accepts netdata simple pattern. | msdosfs msdos vfat overlayfs aufs* *unionfs | no |\n| space usage for all disks | Define if plugin will show metrics for space usage. When value is set to `auto` plugin will try to access information to display if filesystem or path was not discarded with previous option. | auto | no |\n| inodes usage for all disks | Define if plugin will show metrics for inode usage. When value is set to `auto` plugin will try to access information to display if filesystem or path was not discarded with previous option. | auto | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:proc:diskspace]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ disk_space_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/disks.conf) | disk.space | disk ${label:mount_point} space utilization |\n| [ disk_inode_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/disks.conf) | disk.inodes | disk ${label:mount_point} inode utilization |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per mount point\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| mount_point | Path used to mount a filesystem |\n| filesystem | The filesystem used to format a partition. |\n| mount_root | Root directory where mount points are present. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| disk.space | avail, used, reserved_for_root | GiB |\n| disk.inodes | avail, used, reserved_for_root | inodes |\n\n",integration_type:"collector",id:"diskspace.plugin-diskspace.plugin-Disk_space",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/diskspace.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"cachestat",monitored_instance:{name:"eBPF Cachestat",link:"https://kernel.org/",categories:["data-collection.operating-systems"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},info_provided_to_referring_integrations:{description:""},keywords:["Page cache","Hit ratio","eBPF"]},overview:'# eBPF Cachestat\n\nPlugin: ebpf.plugin\nModule: cachestat\n\n## Overview\n\nMonitor Linux page cache events giving for users a general vision about how his kernel is manipulating files.\n\nAttach tracing (kprobe, trampoline) to internal kernel functions according options used to compile kernel.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid because it loads data inside kernel. Netada sets necessary permission during installation time.\n\neBPF Cachestat can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin checks kernel compilation flags (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) and presence of BTF files to decide which eBPF program will be attached.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThis thread will add overhead every time that an internal kernel function monitored by this thread is called. The estimated additional period of time is between 90-200ns per call on kernels that do not have BTF technology.\n',setup:'## Setup\n\n\n### Prerequisites\n\n#### Compile kernel\n\nCheck if your kernel was compiled with necessary options (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) in `/proc/config.gz` or inside /boot/config file. Some cited names can be different accoring preferences of Linux distributions.\nWhen you do not have options set, it is necessary to get the kernel source code from https://kernel.org or a kernel package from your distribution, this last is preferred. The kernel compilation has a well definedd pattern, but distributions can deliver their configuration files\nwith different names.\n\nNow follow steps:\n1. Copy the configuration file to /usr/src/linux/.config.\n2. Select the necessary options: make oldconfig\n3. Compile your kernel image: make bzImage\n4. Compile your modules: make modules\n5. Copy your new kernel image for boot loader directory\n6. Install the new modules: make modules_install\n7. Generate an initial ramdisk image (`initrd`) if it is necessary.\n8. Update your boot loader\n\n\n\n### Configuration\n\n#### Options\n\nAll options are defined inside section `[global]`.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n| ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |\n| apps | Enable or disable integration with apps.plugin | no | no |\n| cgroups | Enable or disable integration with cgroup.plugin | no | no |\n| pid table size | Number of elements stored inside hash tables used to monitor calls per PID. | 32768 | no |\n| ebpf type format | Define the file type to load an eBPF program. Three options are available: `legacy` (Attach only `kprobe`), `co-re` (Plugin tries to use `trampoline` when available), and `auto` (plugin check OS configuration before to load). | auto | no |\n| ebpf co-re tracing | Select the attach method used by plugin when `co-re` is defined in previous option. Two options are available: `trampoline` (Option with lowest overhead), and `probe` (the same of legacy code). | trampoline | no |\n| maps per core | Define how plugin will load their hash maps. When enabled (`yes`) plugin will load one hash table per core, instead to have centralized information. | yes | no |\n| lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ebpf.d/cachestat.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ebpf.d/cachestat.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.cachestat_ratio | ratio | % |\n| cgroup.cachestat_dirties | dirty | page/s |\n| cgroup.cachestat_hits | hit | hits/s |\n| cgroup.cachestat_misses | miss | misses/s |\n| services.cachestat_ratio | a dimension per systemd service | % |\n| services.cachestat_dirties | a dimension per systemd service | page/s |\n| services.cachestat_hits | a dimension per systemd service | hits/s |\n| services.cachestat_misses | a dimension per systemd service | misses/s |\n\n",integration_type:"collector",id:"ebpf.plugin-cachestat-eBPF_Cachestat",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"dcstat",monitored_instance:{name:"eBPF DCstat",link:"https://kernel.org/",categories:["data-collection.operating-systems"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},info_provided_to_referring_integrations:{description:""},keywords:["Directory Cache","File system","eBPF"]},overview:'# eBPF DCstat\n\nPlugin: ebpf.plugin\nModule: dcstat\n\n## Overview\n\nMonitor directory cache events per application given an overall vision about files on memory or storage device.\n\nAttach tracing (kprobe, trampoline) to internal kernel functions according options used to compile kernel.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid because it loads data inside kernel. Netada sets necessary permission during installation time.\n\neBPF DCstat can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin checks kernel compilation flags (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) and presence of BTF files to decide which eBPF program will be attached.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThis thread will add overhead every time that an internal kernel function monitored by this thread is called. The estimated additional period of time is between 90-200ns per call on kernels that do not have BTF technology.\n',setup:'## Setup\n\n\n### Prerequisites\n\n#### Compile kernel\n\nCheck if your kernel was compiled with necessary options (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) in `/proc/config.gz` or inside /boot/config file. Some cited names can be different accoring preferences of Linux distributions.\nWhen you do not have options set, it is necessary to get the kernel source code from https://kernel.org or a kernel package from your distribution, this last is preferred. The kernel compilation has a well definedd pattern, but distributions can deliver their configuration files\nwith different names.\n\nNow follow steps:\n1. Copy the configuration file to /usr/src/linux/.config.\n2. Select the necessary options: make oldconfig\n3. Compile your kernel image: make bzImage\n4. Compile your modules: make modules\n5. Copy your new kernel image for boot loader directory\n6. Install the new modules: make modules_install\n7. Generate an initial ramdisk image (`initrd`) if it is necessary.\n8. Update your boot loader\n\n\n\n### Configuration\n\n#### Options\n\nAll options are defined inside section `[global]`.\n\n\n{% details open=true summary="Config option" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n| ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |\n| apps | Enable or disable integration with apps.plugin | no | no |\n| cgroups | Enable or disable integration with cgroup.plugin | no | no |\n| pid table size | Number of elements stored inside hash tables used to monitor calls per PID. | 32768 | no |\n| ebpf type format | Define the file type to load an eBPF program. Three options are available: `legacy` (Attach only `kprobe`), `co-re` (Plugin tries to use `trampoline` when available), and `auto` (plugin check OS configuration before to load). | auto | no |\n| ebpf co-re tracing | Select the attach method used by plugin when `co-re` is defined in previous option. Two options are available: `trampoline` (Option with lowest overhead), and `probe` (the same of legacy code). | trampoline | no |\n| maps per core | Define how plugin will load their hash maps. When enabled (`yes`) plugin will load one hash table per core, instead to have centralized information. | yes | no |\n| lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ebpf.d/dcstat.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ebpf.d/dcstat.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per apps\n\nThese Metrics show grouped information per apps group.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| app_group | The name of the group defined in the configuration. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| app.ebpf_dc_ratio | ratio | % |\n| app.ebpf_dc_reference | files | files |\n| app.ebpf_dc_not_cache | files | files |\n| app.ebpf_dc_not_found | files | files |\n\n### Per filesystem\n\nThese metrics show total number of calls to functions inside kernel.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| filesystem.dc_reference | reference, slow, miss | files |\n| filesystem.dc_hit_ratio | ratio | % |\n\n### Per cgroup\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.dc_ratio | ratio | % |\n| cgroup.dc_reference | reference | files |\n| cgroup.dc_not_cache | slow | files |\n| cgroup.dc_not_found | miss | files |\n| services.dc_ratio | a dimension per systemd service | % |\n| services.dc_reference | a dimension per systemd service | files |\n| services.dc_not_cache | a dimension per systemd service | files |\n| services.dc_not_found | a dimension per systemd service | files |\n\n",integration_type:"collector",id:"ebpf.plugin-dcstat-eBPF_DCstat",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"disk",monitored_instance:{name:"eBPF Disk",link:"https://kernel.org/",categories:["data-collection.storage"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["hard Disk","eBPF","latency","partition"]},overview:"# eBPF Disk\n\nPlugin: ebpf.plugin\nModule: disk\n\n## Overview\n\nMeasure latency for I/O events on disk.\n\nAttach tracepoints to internal kernel functions.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid because it loads data inside kernel. Netada sets necessary permission during installation time.\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin checks kernel compilation flags (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT), files inside debugfs, and presence of BTF files to decide which eBPF program will be attached.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThis thread will add overhead every time that an internal kernel function monitored by this thread is called.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Compile kernel\n\nCheck if your kernel was compiled with necessary options (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) in `/proc/config.gz` or inside /boot/config file. Some cited names can be different accoring preferences of Linux distributions.\nWhen you do not have options set, it is necessary to get the kernel source code from https://kernel.org or a kernel package from your distribution, this last is preferred. The kernel compilation has a well definedd pattern, but distributions can deliver their configuration files\nwith different names.\n\nNow follow steps:\n1. Copy the configuration file to /usr/src/linux/.config.\n2. Select the necessary options: make oldconfig\n3. Compile your kernel image: make bzImage\n4. Compile your modules: make modules\n5. Copy your new kernel image for boot loader directory\n6. Install the new modules: make modules_install\n7. Generate an initial ramdisk image (`initrd`) if it is necessary.\n8. Update your boot loader\n\n\n#### Debug Filesystem\n\nThis thread needs to attach a tracepoint to monitor when a process schedule an exit event. To allow this specific feaure, it is necessary to mount `debugfs` (`mount -t debugfs none /sys/kernel/debug/`).`\n\n\n\n### Configuration\n\n#### Options\n\nAll options are defined inside section `[global]`.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n| ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |\n| lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ebpf.d/disk.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ebpf.d/disk.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per disk\n\nThese metrics measure latency for I/O events on every hard disk present on host.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| disk.latency_io | latency | calls/s |\n\n",integration_type:"collector",id:"ebpf.plugin-disk-eBPF_Disk",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"filedescriptor",monitored_instance:{name:"eBPF Filedescriptor",link:"https://kernel.org/",categories:["data-collection.operating-systems"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},info_provided_to_referring_integrations:{description:""},keywords:["file","eBPF","fd","open","close"]},overview:'# eBPF Filedescriptor\n\nPlugin: ebpf.plugin\nModule: filedescriptor\n\n## Overview\n\nMonitor calls for functions responsible to open or close a file descriptor and possible errors.\n\nAttach tracing (kprobe and trampoline) to internal kernel functions according options used to compile kernel.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid because it loads data inside kernel. Netdata sets necessary permissions during installation time.\n\neBPF Filedescriptor can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin checks kernel compilation flags (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) and presence of BTF files to decide which eBPF program will be attached.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nDepending of kernel version and frequency that files are open and close, this thread will add overhead every time that an internal kernel function monitored by this thread is called. The estimated additional period of time is between 90-200ns per call on kernels that do not have BTF technology.\n',setup:'## Setup\n\n\n### Prerequisites\n\n#### Compile kernel\n\nCheck if your kernel was compiled with necessary options (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) in `/proc/config.gz` or inside /boot/config file. Some cited names can be different accoring preferences of Linux distributions.\nWhen you do not have options set, it is necessary to get the kernel source code from https://kernel.org or a kernel package from your distribution, this last is preferred. The kernel compilation has a well definedd pattern, but distributions can deliver their configuration files\nwith different names.\n\nNow follow steps:\n1. Copy the configuration file to /usr/src/linux/.config.\n2. Select the necessary options: make oldconfig\n3. Compile your kernel image: make bzImage\n4. Compile your modules: make modules\n5. Copy your new kernel image for boot loader directory\n6. Install the new modules: make modules_install\n7. Generate an initial ramdisk image (`initrd`) if it is necessary.\n8. Update your boot loader\n\n\n\n### Configuration\n\n#### Options\n\nAll options are defined inside section `[global]`.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n| ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |\n| apps | Enable or disable integration with apps.plugin | no | no |\n| cgroups | Enable or disable integration with cgroup.plugin | no | no |\n| pid table size | Number of elements stored inside hash tables used to monitor calls per PID. | 32768 | no |\n| ebpf type format | Define the file type to load an eBPF program. Three options are available: `legacy` (Attach only `kprobe`), `co-re` (Plugin tries to use `trampoline` when available), and `auto` (plugin check OS configuration before to load). | auto | no |\n| ebpf co-re tracing | Select the attach method used by plugin when `co-re` is defined in previous option. Two options are available: `trampoline` (Option with lowest overhead), and `probe` (the same of legacy code). | trampoline | no |\n| maps per core | Define how plugin will load their hash maps. When enabled (`yes`) plugin will load one hash table per core, instead to have centralized information. | yes | no |\n| lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ebpf.d/fd.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ebpf.d/fd.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\nThese Metrics show grouped information per cgroup/service.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.fd_open | open | calls/s |\n| cgroup.fd_open_error | open | calls/s |\n| cgroup.fd_closed | close | calls/s |\n| cgroup.fd_close_error | close | calls/s |\n| services.file_open | a dimension per systemd service | calls/s |\n| services.file_open_error | a dimension per systemd service | calls/s |\n| services.file_closed | a dimension per systemd service | calls/s |\n| services.file_close_error | a dimension per systemd service | calls/s |\n\n### Per eBPF Filedescriptor instance\n\nThese metrics show total number of calls to functions inside kernel.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| filesystem.file_descriptor | open, close | calls/s |\n| filesystem.file_error | open, close | calls/s |\n\n### Per apps\n\nThese Metrics show grouped information per apps group.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| app_group | The name of the group defined in the configuration. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| app.ebpf_file_open | calls | calls/s |\n| app.ebpf_file_open_error | calls | calls/s |\n| app.ebpf_file_closed | calls | calls/s |\n| app.ebpf_file_close_error | calls | calls/s |\n\n",integration_type:"collector",id:"ebpf.plugin-filedescriptor-eBPF_Filedescriptor",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"filesystem",monitored_instance:{name:"eBPF Filesystem",link:"https://kernel.org/",categories:["data-collection.storage"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["Filesystem","ext4","btrfs","nfs","xfs","zfs","eBPF","latency","I/O"]},overview:"# eBPF Filesystem\n\nPlugin: ebpf.plugin\nModule: filesystem\n\n## Overview\n\nMonitor latency for main actions on filesystem like I/O events.\n\nAttach tracing (kprobe, trampoline) to internal kernel functions according options used to compile kernel.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid because it loads data inside kernel. Netada sets necessary permission during installation time.\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin checks kernel compilation flags (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT), files inside debugfs, and presence of BTF files to decide which eBPF program will be attached.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Compile kernel\n\nCheck if your kernel was compiled with necessary options (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) in `/proc/config.gz` or inside /boot/config file. Some cited names can be different accoring preferences of Linux distributions.\nWhen you do not have options set, it is necessary to get the kernel source code from https://kernel.org or a kernel package from your distribution, this last is preferred. The kernel compilation has a well definedd pattern, but distributions can deliver their configuration files\nwith different names.\n\nNow follow steps:\n1. Copy the configuration file to /usr/src/linux/.config.\n2. Select the necessary options: make oldconfig\n3. Compile your kernel image: make bzImage\n4. Compile your modules: make modules\n5. Copy your new kernel image for boot loader directory\n6. Install the new modules: make modules_install\n7. Generate an initial ramdisk image (`initrd`) if it is necessary.\n8. Update your boot loader\n\n\n\n### Configuration\n\n#### Options\n\nThis configuration file have two different sections. The `[global]` overwrites default options, while `[filesystem]` allow user to select the filesystems to monitor.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n| ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |\n| lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |\n| btrfsdist | Enable or disable latency monitoring for functions associated with btrfs filesystem. | yes | no |\n| ext4dist | Enable or disable latency monitoring for functions associated with ext4 filesystem. | yes | no |\n| nfsdist | Enable or disable latency monitoring for functions associated with nfs filesystem. | yes | no |\n| xfsdist | Enable or disable latency monitoring for functions associated with xfs filesystem. | yes | no |\n| zfsdist | Enable or disable latency monitoring for functions associated with zfs filesystem. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ebpf.d/filesystem.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ebpf.d/filesystem.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per filesystem\n\nLatency charts associate with filesystem actions.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| filesystem.read_latency | latency period | calls/s |\n| filesystem.open_latency | latency period | calls/s |\n| filesystem.sync_latency | latency period | calls/s |\n\n### Per iilesystem\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| filesystem.write_latency | latency period | calls/s |\n\n### Per eBPF Filesystem instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| filesystem.attributte_latency | latency period | calls/s |\n\n",integration_type:"collector",id:"ebpf.plugin-filesystem-eBPF_Filesystem",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"hardirq",monitored_instance:{name:"eBPF Hardirq",link:"https://kernel.org/",categories:["data-collection.operating-systems"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["HardIRQ","eBPF"]},overview:"# eBPF Hardirq\n\nPlugin: ebpf.plugin\nModule: hardirq\n\n## Overview\n\nMonitor latency for each HardIRQ available.\n\nAttach tracepoints to internal kernel functions.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid because it loads data inside kernel. Netada sets necessary permission during installation time.\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin checks kernel compilation flags (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT), files inside debugfs, and presence of BTF files to decide which eBPF program will be attached.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThis thread will add overhead every time that an internal kernel function monitored by this thread is called.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Compile kernel\n\nCheck if your kernel was compiled with necessary options (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) in `/proc/config.gz` or inside /boot/config file. Some cited names can be different accoring preferences of Linux distributions.\nWhen you do not have options set, it is necessary to get the kernel source code from https://kernel.org or a kernel package from your distribution, this last is preferred. The kernel compilation has a well definedd pattern, but distributions can deliver their configuration files\nwith different names.\n\nNow follow steps:\n1. Copy the configuration file to /usr/src/linux/.config.\n2. Select the necessary options: make oldconfig\n3. Compile your kernel image: make bzImage\n4. Compile your modules: make modules\n5. Copy your new kernel image for boot loader directory\n6. Install the new modules: make modules_install\n7. Generate an initial ramdisk image (`initrd`) if it is necessary.\n8. Update your boot loader\n\n\n#### Debug Filesystem\n\nThis thread needs to attach a tracepoint to monitor when a process schedule an exit event. To allow this specific feaure, it is necessary to mount `debugfs` (`mount -t debugfs none /sys/kernel/debug/`).\n\n\n\n### Configuration\n\n#### Options\n\nAll options are defined inside section `[global]`.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n| ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |\n| lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ebpf.d/hardirq.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ebpf.d/hardirq.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per eBPF Hardirq instance\n\nThese metrics show latest timestamp for each hardIRQ available on host.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.hardirq_latency | hardirq names | milliseconds |\n\n",integration_type:"collector",id:"ebpf.plugin-hardirq-eBPF_Hardirq",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"mdflush",monitored_instance:{name:"eBPF MDflush",link:"https://kernel.org/",categories:["data-collection.storage"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["MD","RAID","eBPF"]},overview:"# eBPF MDflush\n\nPlugin: ebpf.plugin\nModule: mdflush\n\n## Overview\n\nMonitor when flush events happen between disks.\n\nAttach tracing (kprobe, trampoline) to internal kernel functions according options used to compile kernel.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid because it loads data inside kernel. Netada sets necessary permission during installation time.\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin checks kernel compilation flags (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) and presence of BTF files to decide which eBPF program will be attached.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThis thread will add overhead every time that `md_flush_request` is called. The estimated additional period of time is between 90-200ns per call on kernels that do not have BTF technology.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Compile kernel\n\nCheck if your kernel was compiled with necessary options (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) in `/proc/config.gz` or inside /boot/config file. Some cited names can be different accoring preferences of Linux distributions.\nWhen you do not have options set, it is necessary to get the kernel source code from https://kernel.org or a kernel package from your distribution, this last is preferred. The kernel compilation has a well definedd pattern, but distributions can deliver their configuration files\nwith different names.\n\nNow follow steps:\n1. Copy the configuration file to /usr/src/linux/.config.\n2. Select the necessary options: make oldconfig\n3. Compile your kernel image: make bzImage\n4. Compile your modules: make modules\n5. Copy your new kernel image for boot loader directory\n6. Install the new modules: make modules_install\n7. Generate an initial ramdisk image (`initrd`) if it is necessary.\n8. Update your boot loader\n\n\n\n### Configuration\n\n#### Options\n\nAll options are defined inside section `[global]`.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n| ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |\n| lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ebpf.d/mdflush.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ebpf.d/mdflush.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per eBPF MDflush instance\n\nNumber of times md_flush_request was called since last time.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mdstat.mdstat_flush | disk | flushes |\n\n",integration_type:"collector",id:"ebpf.plugin-mdflush-eBPF_MDflush",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"mount",monitored_instance:{name:"eBPF Mount",link:"https://kernel.org/",categories:["data-collection.storage"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["mount","umount","device","eBPF"]},overview:"# eBPF Mount\n\nPlugin: ebpf.plugin\nModule: mount\n\n## Overview\n\nMonitor calls for mount and umount syscall.\n\nAttach tracing (kprobe, trampoline) to internal kernel functions according options used to compile kernel.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid because it loads data inside kernel. Netada sets necessary permission during installation time.\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin checks kernel compilation flags (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT, CONFIG_HAVE_SYSCALL_TRACEPOINTS), files inside debugfs, and presence of BTF files to decide which eBPF program will be attached.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThis thread will add overhead every time that an internal kernel function monitored by this thread is called. The estimated additional period of time is between 90-200ns per call on kernels that do not have BTF technology.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Compile kernel\n\nCheck if your kernel was compiled with necessary options (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) in `/proc/config.gz` or inside /boot/config file. Some cited names can be different accoring preferences of Linux distributions.\nWhen you do not have options set, it is necessary to get the kernel source code from https://kernel.org or a kernel package from your distribution, this last is preferred. The kernel compilation has a well definedd pattern, but distributions can deliver their configuration files\nwith different names.\n\nNow follow steps:\n1. Copy the configuration file to /usr/src/linux/.config.\n2. Select the necessary options: make oldconfig\n3. Compile your kernel image: make bzImage\n4. Compile your modules: make modules\n5. Copy your new kernel image for boot loader directory\n6. Install the new modules: make modules_install\n7. Generate an initial ramdisk image (`initrd`) if it is necessary.\n8. Update your boot loader\n\n\n#### Debug Filesystem\n\nThis thread needs to attach a tracepoint to monitor when a process schedule an exit event. To allow this specific feaure, it is necessary to mount `debugfs` (`mount -t debugfs none /sys/kernel/debug/`).`\n\n\n\n### Configuration\n\n#### Options\n\nAll options are defined inside section `[global]`.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n| ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |\n| ebpf type format | Define the file type to load an eBPF program. Three options are available: `legacy` (Attach only `kprobe`), `co-re` (Plugin tries to use `trampoline` when available), and `auto` (plugin check OS configuration before to load). | auto | no |\n| ebpf co-re tracing | Select the attach method used by plugin when `co-re` is defined in previous option. Two options are available: `trampoline` (Option with lowest overhead), and `probe` (the same of legacy code). | trampoline | no |\n| lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ebpf.d/mount.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ebpf.d/mount.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per eBPF Mount instance\n\nCalls for syscalls mount an umount.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mount_points.call | mount, umount | calls/s |\n| mount_points.error | mount, umount | calls/s |\n\n",integration_type:"collector",id:"ebpf.plugin-mount-eBPF_Mount",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"oomkill",monitored_instance:{name:"eBPF OOMkill",link:"https://kernel.org/",categories:["data-collection.operating-systems"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},info_provided_to_referring_integrations:{description:""},keywords:["application","memory"]},overview:'# eBPF OOMkill\n\nPlugin: ebpf.plugin\nModule: oomkill\n\n## Overview\n\nMonitor applications that reach out of memory.\n\nAttach tracepoint to internal kernel functions.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid because it loads data inside kernel. Netada sets necessary permission during installation time.\n\neBPF OOMkill can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin checks kernel compilation flags (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT), files inside debugfs, and presence of BTF files to decide which eBPF program will be attached.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThis thread will add overhead every time that an internal kernel function monitored by this thread is called.\n',setup:"## Setup\n\n\n### Prerequisites\n\n#### Compile kernel\n\nCheck if your kernel was compiled with necessary options (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) in `/proc/config.gz` or inside /boot/config file. Some cited names can be different accoring preferences of Linux distributions.\nWhen you do not have options set, it is necessary to get the kernel source code from https://kernel.org or a kernel package from your distribution, this last is preferred. The kernel compilation has a well definedd pattern, but distributions can deliver their configuration files\nwith different names.\n\nNow follow steps:\n1. Copy the configuration file to /usr/src/linux/.config.\n2. Select the necessary options: make oldconfig\n3. Compile your kernel image: make bzImage\n4. Compile your modules: make modules\n5. Copy your new kernel image for boot loader directory\n6. Install the new modules: make modules_install\n7. Generate an initial ramdisk image (`initrd`) if it is necessary.\n8. Update your boot loader\n\n\n#### Debug Filesystem\n\nThis thread needs to attach a tracepoint to monitor when a process schedule an exit event. To allow this specific feaure, it is necessary to mount `debugfs` (`mount -t debugfs none /sys/kernel/debug/`).\n\n\n\n### Configuration\n\n#### Options\n\nOverwrite default configuration reducing number of I/O events\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `ebpf.d/oomkill.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ebpf.d/oomkill.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"## Troubleshooting\n\n### update every\n\nData collection frequency.\n\n### ebpf load mode\n\nDefine whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`).\n\n### lifetime\n\nSet default lifetime for thread when enabled by cloud.\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\nThese metrics show cgroup/service that reached OOM.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.oomkills | cgroup name | kills |\n| services.oomkills | a dimension per systemd service | kills |\n\n### Per apps\n\nThese metrics show cgroup/service that reached OOM.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| app_group | The name of the group defined in the configuration. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| app.oomkill | kills | kills |\n\n",integration_type:"collector",id:"ebpf.plugin-oomkill-eBPF_OOMkill",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"process",monitored_instance:{name:"eBPF Process",link:"https://github.com/netdata/netdata/",categories:["data-collection.operating-systems"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["Memory","plugin","eBPF"]},overview:"# eBPF Process\n\nPlugin: ebpf.plugin\nModule: process\n\n## Overview\n\nMonitor internal memory usage.\n\nUses netdata internal statistic to monitor memory management by plugin.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\n#### Netdata flags.\n\nTo have these charts you need to compile netdata with flag `NETDATA_DEV_MODE`.\n\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per eBPF Process instance\n\nHow plugin is allocating memory.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| netdata.ebpf_aral_stat_size | memory | bytes |\n| netdata.ebpf_aral_stat_alloc | aral | calls |\n| netdata.ebpf_threads | total, running | threads |\n| netdata.ebpf_pids | user, kernel | pids |\n| netdata.ebpf_load_methods | legacy, co-re | methods |\n| netdata.ebpf_kernel_memory | memory_locked | bytes |\n| netdata.ebpf_hash_tables_count | hash_table | hash tables |\n| netdata.ebpf_hash_tables_insert_pid_elements | thread | rows |\n| netdata.ebpf_hash_tables_remove_pid_elements | thread | rows |\n| netdata.ebpf_ipc_usage | positions | % |\n\n",integration_type:"collector",id:"ebpf.plugin-process-eBPF_Process",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"processes",monitored_instance:{name:"eBPF Processes",link:"https://kernel.org/",categories:["data-collection.operating-systems"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},info_provided_to_referring_integrations:{description:""},keywords:["thread","fork","process","eBPF"]},overview:'# eBPF Processes\n\nPlugin: ebpf.plugin\nModule: processes\n\n## Overview\n\nMonitor calls for function creating tasks (threads and processes) inside Linux kernel.\n\nAttach tracing (kprobe or tracepoint, and trampoline) to internal kernel functions.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid because it loads data inside kernel. Netada sets necessary permission during installation time.\n\neBPF Processes can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin checks kernel compilation flags (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT), files inside debugfs, and presence of BTF files to decide which eBPF program will be attached.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThis thread will add overhead every time that an internal kernel function monitored by this thread is called.\n',setup:'## Setup\n\n\n### Prerequisites\n\n#### Compile kernel\n\nCheck if your kernel was compiled with necessary options (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) in `/proc/config.gz` or inside /boot/config file. Some cited names can be different accoring preferences of Linux distributions.\nWhen you do not have options set, it is necessary to get the kernel source code from https://kernel.org or a kernel package from your distribution, this last is preferred. The kernel compilation has a well definedd pattern, but distributions can deliver their configuration files\nwith different names.\n\nNow follow steps:\n1. Copy the configuration file to /usr/src/linux/.config.\n2. Select the necessary options: make oldconfig\n3. Compile your kernel image: make bzImage\n4. Compile your modules: make modules\n5. Copy your new kernel image for boot loader directory\n6. Install the new modules: make modules_install\n7. Generate an initial ramdisk image (`initrd`) if it is necessary.\n8. Update your boot loader\n\n\n#### Debug Filesystem\n\nThis thread needs to attach a tracepoint to monitor when a process schedule an exit event. To allow this specific feaure, it is necessary to mount `debugfs` (`mount -t debugfs none /sys/kernel/debug/`).\n\n\n\n### Configuration\n\n#### Options\n\nAll options are defined inside section `[global]`.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n| ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |\n| apps | Enable or disable integration with apps.plugin | no | no |\n| cgroups | Enable or disable integration with cgroup.plugin | no | no |\n| pid table size | Number of elements stored inside hash tables used to monitor calls per PID. | 32768 | no |\n| ebpf type format | Define the file type to load an eBPF program. Three options are available: `legacy` (Attach only `kprobe`), `co-re` (Plugin tries to use `trampoline` when available), and `auto` (plugin check OS configuration before to load). | auto | no |\n| ebpf co-re tracing | Select the attach method used by plugin when `co-re` is defined in previous option. Two options are available: `trampoline` (Option with lowest overhead), and `probe` (the same of legacy code). This plugin will always try to attach a tracepoint, so option here will impact only function used to monitor task (thread and process) creation. | trampoline | no |\n| maps per core | Define how plugin will load their hash maps. When enabled (`yes`) plugin will load one hash table per core, instead to have centralized information. | yes | no |\n| lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ebpf.d/process.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ebpf.d/process.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per eBPF Processes instance\n\nThese metrics show total number of calls to functions inside kernel.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.process_thread | process | calls/s |\n| system.process_status | process, zombie | difference |\n| system.exit | process | calls/s |\n| system.task_error | task | calls/s |\n\n### Per apps\n\nThese Metrics show grouped information per apps group.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| app_group | The name of the group defined in the configuration. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| app.process_create | calls | calls/s |\n| app.thread_create | call | calls/s |\n| app.task_exit | call | calls/s |\n| app.task_close | call | calls/s |\n| app.task_error | app | calls/s |\n\n### Per cgroup\n\nThese Metrics show grouped information per cgroup/service.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.process_create | process | calls/s |\n| cgroup.thread_create | thread | calls/s |\n| cgroup.task_exit | exit | calls/s |\n| cgroup.task_close | process | calls/s |\n| cgroup.task_error | process | calls/s |\n| services.process_create | a dimension per systemd service | calls/s |\n| services.thread_create | a dimension per systemd service | calls/s |\n| services.task_close | a dimension per systemd service | calls/s |\n| services.task_exit | a dimension per systemd service | calls/s |\n| services.task_error | a dimension per systemd service | calls/s |\n\n",integration_type:"collector",id:"ebpf.plugin-processes-eBPF_Processes",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"shm",monitored_instance:{name:"eBPF SHM",link:"https://kernel.org/",categories:["data-collection.operating-systems"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},info_provided_to_referring_integrations:{description:""},keywords:["syscall","shared memory","eBPF"]},overview:'# eBPF SHM\n\nPlugin: ebpf.plugin\nModule: shm\n\n## Overview\n\nMonitor syscall responsible to manipulate shared memory.\n\nAttach tracing (kprobe, trampoline) to internal kernel functions according options used to compile kernel.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid because it loads data inside kernel. Netada sets necessary permission during installation time.\n\neBPF SHM can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin checks kernel compilation flags (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) and presence of BTF files to decide which eBPF program will be attached.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThis thread will add overhead every time that an internal kernel function monitored by this thread is called. The estimated additional period of time is between 90-200ns per call on kernels that do not have BTF technology.\n',setup:'## Setup\n\n\n### Prerequisites\n\n#### Compile kernel\n\nCheck if your kernel was compiled with necessary options (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) in `/proc/config.gz` or inside /boot/config file. Some cited names can be different accoring preferences of Linux distributions.\nWhen you do not have options set, it is necessary to get the kernel source code from https://kernel.org or a kernel package from your distribution, this last is preferred. The kernel compilation has a well definedd pattern, but distributions can deliver their configuration files\nwith different names.\n\nNow follow steps:\n1. Copy the configuration file to /usr/src/linux/.config.\n2. Select the necessary options: make oldconfig\n3. Compile your kernel image: make bzImage\n4. Compile your modules: make modules\n5. Copy your new kernel image for boot loader directory\n6. Install the new modules: make modules_install\n7. Generate an initial ramdisk image (`initrd`) if it is necessary.\n8. Update your boot loader\n\n\n#### Debug Filesystem\n\nThis thread needs to attach a tracepoint to monitor when a process schedule an exit event. To allow this specific feaure, it is necessary to mount `debugfs` (`mount -t debugfs none /sys/kernel/debug/`).`\n\n\n\n### Configuration\n\n#### Options\n\nThis configuration file have two different sections. The `[global]` overwrites all default options, while `[syscalls]` allow user to select the syscall to monitor.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n| ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |\n| apps | Enable or disable integration with apps.plugin | no | no |\n| cgroups | Enable or disable integration with cgroup.plugin | no | no |\n| pid table size | Number of elements stored inside hash tables used to monitor calls per PID. | 32768 | no |\n| ebpf type format | Define the file type to load an eBPF program. Three options are available: `legacy` (Attach only `kprobe`), `co-re` (Plugin tries to use `trampoline` when available), and `auto` (plugin check OS configuration before to load). | auto | no |\n| ebpf co-re tracing | Select the attach method used by plugin when `co-re` is defined in previous option. Two options are available: `trampoline` (Option with lowest overhead), and `probe` (the same of legacy code). | trampoline | no |\n| maps per core | Define how plugin will load their hash maps. When enabled (`yes`) plugin will load one hash table per core, instead to have centralized information. | yes | no |\n| lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |\n| shmget | Enable or disable monitoring for syscall `shmget` | yes | no |\n| shmat | Enable or disable monitoring for syscall `shmat` | yes | no |\n| shmdt | Enable or disable monitoring for syscall `shmdt` | yes | no |\n| shmctl | Enable or disable monitoring for syscall `shmctl` | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ebpf.d/shm.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ebpf.d/shm.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\nThese Metrics show grouped information per cgroup/service.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.shmget | get | calls/s |\n| cgroup.shmat | at | calls/s |\n| cgroup.shmdt | dt | calls/s |\n| cgroup.shmctl | ctl | calls/s |\n| services.shmget | a dimension per systemd service | calls/s |\n| services.shmat | a dimension per systemd service | calls/s |\n| services.shmdt | a dimension per systemd service | calls/s |\n| services.shmctl | a dimension per systemd service | calls/s |\n\n### Per apps\n\nThese Metrics show grouped information per apps group.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| app_group | The name of the group defined in the configuration. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| app.ebpf_shmget_call | calls | calls/s |\n| app.ebpf_shmat_call | calls | calls/s |\n| app.ebpf_shmdt_call | calls | calls/s |\n| app.ebpf_shmctl_call | calls | calls/s |\n\n### Per eBPF SHM instance\n\nThese Metrics show number of calls for specified syscall.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.shared_memory_calls | get, at, dt, ctl | calls/s |\n\n",integration_type:"collector",id:"ebpf.plugin-shm-eBPF_SHM",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"socket",monitored_instance:{name:"eBPF Socket",link:"https://kernel.org/",categories:["data-collection.networking"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},info_provided_to_referring_integrations:{description:""},keywords:["TCP","UDP","bandwidth","server","connection","socket"]},overview:'# eBPF Socket\n\nPlugin: ebpf.plugin\nModule: socket\n\n## Overview\n\nMonitor bandwidth consumption per application for protocols TCP and UDP.\n\nAttach tracing (kprobe, trampoline) to internal kernel functions according options used to compile kernel.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid because it loads data inside kernel. Netada sets necessary permission during installation time.\n\neBPF Socket can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin checks kernel compilation flags (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) and presence of BTF files to decide which eBPF program will be attached.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThis thread will add overhead every time that an internal kernel function monitored by this thread is called. The estimated additional period of time is between 90-200ns per call on kernels that do not have BTF technology.\n',setup:'## Setup\n\n\n### Prerequisites\n\n#### Compile kernel\n\nCheck if your kernel was compiled with necessary options (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) in `/proc/config.gz` or inside /boot/config file. Some cited names can be different accoring preferences of Linux distributions.\nWhen you do not have options set, it is necessary to get the kernel source code from https://kernel.org or a kernel package from your distribution, this last is preferred. The kernel compilation has a well definedd pattern, but distributions can deliver their configuration files\nwith different names.\n\nNow follow steps:\n1. Copy the configuration file to /usr/src/linux/.config.\n2. Select the necessary options: make oldconfig\n3. Compile your kernel image: make bzImage\n4. Compile your modules: make modules\n5. Copy your new kernel image for boot loader directory\n6. Install the new modules: make modules_install\n7. Generate an initial ramdisk image (`initrd`) if it is necessary.\n8. Update your boot loader\n\n\n\n### Configuration\n\n#### Options\n\nAll options are defined inside section `[global]`. Options inside `network connections` are ignored for while.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n| ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |\n| apps | Enable or disable integration with apps.plugin | no | no |\n| cgroups | Enable or disable integration with cgroup.plugin | no | no |\n| bandwidth table size | Number of elements stored inside hash tables used to monitor calls per PID. | 16384 | no |\n| ipv4 connection table size | Number of elements stored inside hash tables used to monitor calls per IPV4 connections. | 16384 | no |\n| ipv6 connection table size | Number of elements stored inside hash tables used to monitor calls per IPV6 connections. | 16384 | no |\n| udp connection table size | Number of temporary elements stored inside hash tables used to monitor UDP connections. | 4096 | no |\n| ebpf type format | Define the file type to load an eBPF program. Three options are available: `legacy` (Attach only `kprobe`), `co-re` (Plugin tries to use `trampoline` when available), and `auto` (plugin check OS configuration before to load). | auto | no |\n| ebpf co-re tracing | Select the attach method used by plugin when `co-re` is defined in previous option. Two options are available: `trampoline` (Option with lowest overhead), and `probe` (the same of legacy code). | trampoline | no |\n| maps per core | Define how plugin will load their hash maps. When enabled (`yes`) plugin will load one hash table per core, instead to have centralized information. | yes | no |\n| lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ebpf.d/network.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ebpf.d/network.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per eBPF Socket instance\n\nThese metrics show total number of calls to functions inside kernel.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ip.inbound_conn | connected_tcp, connected_udp | connections/s |\n| ip.tcp_outbound_conn | received | connections/s |\n| ip.tcp_functions | received, send, closed | calls/s |\n| ip.total_tcp_bandwidth | received, send | kilobits/s |\n| ip.tcp_error | received, send | calls/s |\n| ip.tcp_retransmit | retransmitted | calls/s |\n| ip.udp_functions | received, send | calls/s |\n| ip.total_udp_bandwidth | received, send | kilobits/s |\n| ip.udp_error | received, send | calls/s |\n\n### Per apps\n\nThese metrics show grouped information per apps group.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| app_group | The name of the group defined in the configuration. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| app.ebpf_call_tcp_v4_connection | connections | connections/s |\n| app.ebpf_call_tcp_v6_connection | connections | connections/s |\n| app.ebpf_sock_total_bandwidth | received, sent | kilobits/s |\n| app.ebpf_call_tcp_sendmsg | calls | calls/s |\n| app.ebpf_call_tcp_cleanup_rbuf | calls | calls/s |\n| app.ebpf_call_tcp_retransmit | calls | calls/s |\n| app.ebpf_call_udp_sendmsg | calls | calls/s |\n| app.ebpf_call_udp_recvmsg | calls | calls/s |\n\n### Per cgroup\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.net_conn_ipv4 | connections | connections/s |\n| cgroup.net_conn_ipv6 | connections | connections/s |\n| cgroup.net_total_bandwidth | received, sent | kilobits/s |\n| cgroup.net_tcp_recv | calls | calls/s |\n| cgroup.net_tcp_send | calls | calls/s |\n| cgroup.net_retransmit | calls | calls/s |\n| cgroup.net_udp_send | calls | calls/s |\n| cgroup.net_udp_recv | calls | calls/s |\n| services.net_conn_ipv4 | connections | connections/s |\n| services.net_conn_ipv6 | connections | connections/s |\n| services.net_total_bandwidth | received, sent | kilobits/s |\n| services.net_tcp_recv | calls | calls/s |\n| services.net_tcp_send | calls | calls/s |\n| services.net_tcp_retransmit | calls | calls/s |\n| services.net_udp_send | calls | calls/s |\n| services.net_udp_recv | calls | calls/s |\n\n",integration_type:"collector",id:"ebpf.plugin-socket-eBPF_Socket",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"softirq",monitored_instance:{name:"eBPF SoftIRQ",link:"https://kernel.org/",categories:["data-collection.operating-systems"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["SoftIRQ","eBPF"]},overview:"# eBPF SoftIRQ\n\nPlugin: ebpf.plugin\nModule: softirq\n\n## Overview\n\nMonitor latency for each SoftIRQ available.\n\nAttach kprobe to internal kernel functions.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid because it loads data inside kernel. Netada sets necessary permission during installation time.\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin checks kernel compilation flags (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT), files inside debugfs, and presence of BTF files to decide which eBPF program will be attached.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThis thread will add overhead every time that an internal kernel function monitored by this thread is called.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Compile kernel\n\nCheck if your kernel was compiled with necessary options (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) in `/proc/config.gz` or inside /boot/config file. Some cited names can be different accoring preferences of Linux distributions.\nWhen you do not have options set, it is necessary to get the kernel source code from https://kernel.org or a kernel package from your distribution, this last is preferred. The kernel compilation has a well definedd pattern, but distributions can deliver their configuration files\nwith different names.\n\nNow follow steps:\n1. Copy the configuration file to /usr/src/linux/.config.\n2. Select the necessary options: make oldconfig\n3. Compile your kernel image: make bzImage\n4. Compile your modules: make modules\n5. Copy your new kernel image for boot loader directory\n6. Install the new modules: make modules_install\n7. Generate an initial ramdisk image (`initrd`) if it is necessary.\n8. Update your boot loader\n\n\n#### Debug Filesystem\n\nThis thread needs to attach a tracepoint to monitor when a process schedule an exit event. To allow this specific feaure, it is necessary to mount `debugfs` (`mount -t debugfs none /sys/kernel/debug/`).`\n\n\n\n### Configuration\n\n#### Options\n\nAll options are defined inside section `[global]`.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n| ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |\n| lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ebpf.d/softirq.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ebpf.d/softirq.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per eBPF SoftIRQ instance\n\nThese metrics show latest timestamp for each softIRQ available on host.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.softirq_latency | soft IRQs | milliseconds |\n\n",integration_type:"collector",id:"ebpf.plugin-softirq-eBPF_SoftIRQ",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"swap",monitored_instance:{name:"eBPF SWAP",link:"https://kernel.org/",categories:["data-collection.operating-systems"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},info_provided_to_referring_integrations:{description:""},keywords:["SWAP","memory","eBPF","Hard Disk"]},overview:'# eBPF SWAP\n\nPlugin: ebpf.plugin\nModule: swap\n\n## Overview\n\nMonitors when swap has I/O events and applications executing events.\n\nAttach tracing (kprobe, trampoline) to internal kernel functions according options used to compile kernel.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid because it loads data inside kernel. Netada sets necessary permission during installation time.\n\neBPF SWAP can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin checks kernel compilation flags (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) and presence of BTF files to decide which eBPF program will be attached.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThis thread will add overhead every time that an internal kernel function monitored by this thread is called. The estimated additional period of time is between 90-200ns per call on kernels that do not have BTF technology.\n',setup:'## Setup\n\n\n### Prerequisites\n\n#### Compile kernel\n\nCheck if your kernel was compiled with necessary options (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) in `/proc/config.gz` or inside /boot/config file. Some cited names can be different accoring preferences of Linux distributions.\nWhen you do not have options set, it is necessary to get the kernel source code from https://kernel.org or a kernel package from your distribution, this last is preferred. The kernel compilation has a well definedd pattern, but distributions can deliver their configuration files\nwith different names.\n\nNow follow steps:\n1. Copy the configuration file to /usr/src/linux/.config.\n2. Select the necessary options: make oldconfig\n3. Compile your kernel image: make bzImage\n4. Compile your modules: make modules\n5. Copy your new kernel image for boot loader directory\n6. Install the new modules: make modules_install\n7. Generate an initial ramdisk image (`initrd`) if it is necessary.\n8. Update your boot loader\n\n\n\n### Configuration\n\n#### Options\n\nAll options are defined inside section `[global]`.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n| ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |\n| apps | Enable or disable integration with apps.plugin | no | no |\n| cgroups | Enable or disable integration with cgroup.plugin | no | no |\n| pid table size | Number of elements stored inside hash tables used to monitor calls per PID. | 32768 | no |\n| ebpf type format | Define the file type to load an eBPF program. Three options are available: `legacy` (Attach only `kprobe`), `co-re` (Plugin tries to use `trampoline` when available), and `auto` (plugin check OS configuration before to load). | auto | no |\n| ebpf co-re tracing | Select the attach method used by plugin when `co-re` is defined in previous option. Two options are available: `trampoline` (Option with lowest overhead), and `probe` (the same of legacy code). | trampoline | no |\n| maps per core | Define how plugin will load their hash maps. When enabled (`yes`) plugin will load one hash table per core, instead to have centralized information. | yes | no |\n| lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ebpf.d/swap.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ebpf.d/swap.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\nThese Metrics show grouped information per cgroup/service.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.swap_read | read | calls/s |\n| cgroup.swap_write | write | calls/s |\n| services.swap_read | a dimension per systemd service | calls/s |\n| services.swap_write | a dimension per systemd service | calls/s |\n\n### Per apps\n\nThese Metrics show grouped information per apps group.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| app_group | The name of the group defined in the configuration. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| app.ebpf_call_swap_readpage | a dimension per app group | calls/s |\n| app.ebpf_call_swap_writepage | a dimension per app group | calls/s |\n\n### Per eBPF SWAP instance\n\nThese metrics show total number of calls to functions inside kernel.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.swapcalls | write, read | calls/s |\n\n",integration_type:"collector",id:"ebpf.plugin-swap-eBPF_SWAP",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"sync",monitored_instance:{name:"eBPF Sync",link:"https://kernel.org/",categories:["data-collection.storage"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["syscall","eBPF","hard disk","memory"]},overview:"# eBPF Sync\n\nPlugin: ebpf.plugin\nModule: sync\n\n## Overview\n\nMonitor syscall responsible to move data from memory to storage device.\n\nAttach tracing (kprobe, trampoline) to internal kernel functions according options used to compile kernel.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid because it loads data inside kernel. Netada sets necessary permission during installation time.\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin checks kernel compilation flags (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT, CONFIG_HAVE_SYSCALL_TRACEPOINTS), files inside debugfs, and presence of BTF files to decide which eBPF program will be attached.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThis thread will add overhead every time that an internal kernel function monitored by this thread is called. The estimated additional period of time is between 90-200ns per call on kernels that do not have BTF technology.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Compile kernel\n\nCheck if your kernel was compiled with necessary options (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) in `/proc/config.gz` or inside /boot/config file. Some cited names can be different accoring preferences of Linux distributions.\nWhen you do not have options set, it is necessary to get the kernel source code from https://kernel.org or a kernel package from your distribution, this last is preferred. The kernel compilation has a well definedd pattern, but distributions can deliver their configuration files\nwith different names.\n\nNow follow steps:\n1. Copy the configuration file to /usr/src/linux/.config.\n2. Select the necessary options: make oldconfig\n3. Compile your kernel image: make bzImage\n4. Compile your modules: make modules\n5. Copy your new kernel image for boot loader directory\n6. Install the new modules: make modules_install\n7. Generate an initial ramdisk image (`initrd`) if it is necessary.\n8. Update your boot loader\n\n\n#### Debug Filesystem\n\nThis thread needs to attach a tracepoint to monitor when a process schedule an exit event. To allow this specific feaure, it is necessary to mount `debugfs` (`mount -t debugfs none /sys/kernel/debug`).\n\n\n\n### Configuration\n\n#### Options\n\nThis configuration file have two different sections. The `[global]` overwrites all default options, while `[syscalls]` allow user to select the syscall to monitor.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n| ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |\n| apps | Enable or disable integration with apps.plugin | no | no |\n| cgroups | Enable or disable integration with cgroup.plugin | no | no |\n| pid table size | Number of elements stored inside hash tables used to monitor calls per PID. | 32768 | no |\n| ebpf type format | Define the file type to load an eBPF program. Three options are available: `legacy` (Attach only `kprobe`), `co-re` (Plugin tries to use `trampoline` when available), and `auto` (plugin check OS configuration before to load). | auto | no |\n| ebpf co-re tracing | Select the attach method used by plugin when `co-re` is defined in previous option. Two options are available: `trampoline` (Option with lowest overhead), and `probe` (the same of legacy code). | trampoline | no |\n| maps per core | Define how plugin will load their hash maps. When enabled (`yes`) plugin will load one hash table per core, instead to have centralized information. | yes | no |\n| lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |\n| sync | Enable or disable monitoring for syscall `sync` | yes | no |\n| msync | Enable or disable monitoring for syscall `msync` | yes | no |\n| fsync | Enable or disable monitoring for syscall `fsync` | yes | no |\n| fdatasync | Enable or disable monitoring for syscall `fdatasync` | yes | no |\n| syncfs | Enable or disable monitoring for syscall `syncfs` | yes | no |\n| sync_file_range | Enable or disable monitoring for syscall `sync_file_range` | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ebpf.d/sync.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ebpf.d/sync.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ sync_freq ](https://github.com/netdata/netdata/blob/master/src/health/health.d/synchronization.conf) | mem.sync | number of sync() system calls. Every call causes all pending modifications to filesystem metadata and cached file data to be written to the underlying filesystems. |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per eBPF Sync instance\n\nThese metrics show total number of calls to functions inside kernel.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.file_sync | fsync, fdatasync | calls/s |\n| mem.memory_map | msync | calls/s |\n| mem.sync | sync, syncfs | calls/s |\n| mem.file_segment | sync_file_range | calls/s |\n\n",integration_type:"collector",id:"ebpf.plugin-sync-eBPF_Sync",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ebpf.plugin",module_name:"vfs",monitored_instance:{name:"eBPF VFS",link:"https://kernel.org/",categories:["data-collection.storage"],icon_filename:"ebpf.jpg"},related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},info_provided_to_referring_integrations:{description:""},keywords:["virtual","filesystem","eBPF","I/O","files"]},overview:'# eBPF VFS\n\nPlugin: ebpf.plugin\nModule: vfs\n\n## Overview\n\nMonitor I/O events on Linux Virtual Filesystem.\n\nAttach tracing (kprobe, trampoline) to internal kernel functions according options used to compile kernel.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid because it loads data inside kernel. Netada sets necessary permission during installation time.\n\neBPF VFS can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin checks kernel compilation flags (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) and presence of BTF files to decide which eBPF program will be attached.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThis thread will add overhead every time that an internal kernel function monitored by this thread is called. The estimated additional period of time is between 90-200ns per call on kernels that do not have BTF technology.\n',setup:'## Setup\n\n\n### Prerequisites\n\n#### Compile kernel\n\nCheck if your kernel was compiled with necessary options (CONFIG_KPROBES, CONFIG_BPF, CONFIG_BPF_SYSCALL, CONFIG_BPF_JIT) in `/proc/config.gz` or inside /boot/config file. Some cited names can be different accoring preferences of Linux distributions.\nWhen you do not have options set, it is necessary to get the kernel source code from https://kernel.org or a kernel package from your distribution, this last is preferred. The kernel compilation has a well definedd pattern, but distributions can deliver their configuration files\nwith different names.\n\nNow follow steps:\n1. Copy the configuration file to /usr/src/linux/.config.\n2. Select the necessary options: make oldconfig\n3. Compile your kernel image: make bzImage\n4. Compile your modules: make modules\n5. Copy your new kernel image for boot loader directory\n6. Install the new modules: make modules_install\n7. Generate an initial ramdisk image (`initrd`) if it is necessary.\n8. Update your boot loader\n\n\n\n### Configuration\n\n#### Options\n\nAll options are defined inside section `[global]`.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n| ebpf load mode | Define whether plugin will monitor the call (`entry`) for the functions or it will also monitor the return (`return`). | entry | no |\n| apps | Enable or disable integration with apps.plugin | no | no |\n| cgroups | Enable or disable integration with cgroup.plugin | no | no |\n| pid table size | Number of elements stored inside hash tables used to monitor calls per PID. | 32768 | no |\n| ebpf type format | Define the file type to load an eBPF program. Three options are available: `legacy` (Attach only `kprobe`), `co-re` (Plugin tries to use `trampoline` when available), and `auto` (plugin check OS configuration before to load). | auto | no |\n| ebpf co-re tracing | Select the attach method used by plugin when `co-re` is defined in previous option. Two options are available: `trampoline` (Option with lowest overhead), and `probe` (the same of legacy code). | trampoline | no |\n| maps per core | Define how plugin will load their hash maps. When enabled (`yes`) plugin will load one hash table per core, instead to have centralized information. | yes | no |\n| lifetime | Set default lifetime for thread when enabled by cloud. | 300 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ebpf.d/vfs.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ebpf.d/vfs.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cgroup\n\nThese Metrics show grouped information per cgroup/service.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cgroup.vfs_unlink | delete | calls/s |\n| cgroup.vfs_write | write | calls/s |\n| cgroup.vfs_write_error | write | calls/s |\n| cgroup.vfs_read | read | calls/s |\n| cgroup.vfs_read_error | read | calls/s |\n| cgroup.vfs_write_bytes | write | bytes/s |\n| cgroup.vfs_read_bytes | read | bytes/s |\n| cgroup.vfs_fsync | fsync | calls/s |\n| cgroup.vfs_fsync_error | fsync | calls/s |\n| cgroup.vfs_open | open | calls/s |\n| cgroup.vfs_open_error | open | calls/s |\n| cgroup.vfs_create | create | calls/s |\n| cgroup.vfs_create_error | create | calls/s |\n| services.vfs_unlink | a dimension per systemd service | calls/s |\n| services.vfs_write | a dimension per systemd service | calls/s |\n| services.vfs_write_error | a dimension per systemd service | calls/s |\n| services.vfs_read | a dimension per systemd service | calls/s |\n| services.vfs_read_error | a dimension per systemd service | calls/s |\n| services.vfs_write_bytes | a dimension per systemd service | bytes/s |\n| services.vfs_read_bytes | a dimension per systemd service | bytes/s |\n| services.vfs_fsync | a dimension per systemd service | calls/s |\n| services.vfs_fsync_error | a dimension per systemd service | calls/s |\n| services.vfs_open | a dimension per systemd service | calls/s |\n| services.vfs_open_error | a dimension per systemd service | calls/s |\n| services.vfs_create | a dimension per systemd service | calls/s |\n| services.vfs_create_error | a dimension per systemd service | calls/s |\n\n### Per eBPF VFS instance\n\nThese Metrics show grouped information per cgroup/service.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| filesystem.vfs_deleted_objects | delete | calls/s |\n| filesystem.vfs_io | read, write | calls/s |\n| filesystem.vfs_io_bytes | read, write | bytes/s |\n| filesystem.vfs_io_error | read, write | calls/s |\n| filesystem.vfs_fsync | fsync | calls/s |\n| filesystem.vfs_fsync_error | fsync | calls/s |\n| filesystem.vfs_open | open | calls/s |\n| filesystem.vfs_open_error | open | calls/s |\n| filesystem.vfs_create | create | calls/s |\n| filesystem.vfs_create_error | create | calls/s |\n\n### Per apps\n\nThese Metrics show grouped information per apps group.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| app_group | The name of the group defined in the configuration. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| app.ebpf_call_vfs_unlink | calls | calls/s |\n| app.ebpf_call_vfs_write | calls | calls/s |\n| app.ebpf_call_vfs_write_error | calls | calls/s |\n| app.ebpf_call_vfs_read | calls | calls/s |\n| app.ebpf_call_vfs_read_error | calls | calls/s |\n| app.ebpf_call_vfs_write_bytes | writes | bytes/s |\n| app.ebpf_call_vfs_read_bytes | reads | bytes/s |\n| app.ebpf_call_vfs_fsync | calls | calls/s |\n| app.ebpf_call_vfs_fsync_error | calls | calls/s |\n| app.ebpf_call_vfs_open | calls | calls/s |\n| app.ebpf_call_vfs_open_error | calls | calls/s |\n| app.ebpf_call_vfs_create | calls | calls/s |\n| app.ebpf_call_vfs_create_error | calls | calls/s |\n\n",integration_type:"collector",id:"ebpf.plugin-vfs-eBPF_VFS",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ebpf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"dev.cpu.0.freq",monitored_instance:{name:"dev.cpu.0.freq",link:"https://www.freebsd.org/",categories:["data-collection.operating-systems"],icon_filename:"freebsd.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# dev.cpu.0.freq\n\nPlugin: freebsd.plugin\nModule: dev.cpu.0.freq\n\n## Overview\n\nRead current CPU Scaling frequency.\n\nCurrent CPU Scaling Frequency\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| dev.cpu.0.freq | Enable or disable CPU Scaling frequency metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `Config options`.\nConfiguration for this specific integration is located in the `[plugin:freebsd]` section within that file.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config Config options\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per dev.cpu.0.freq instance\n\nThe metric shows status of CPU frequency, it is direct affected by system load.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cpu.scaling_cur_freq | frequency | MHz |\n\n",integration_type:"collector",id:"freebsd.plugin-dev.cpu.0.freq-dev.cpu.0.freq",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"dev.cpu.temperature",monitored_instance:{name:"dev.cpu.temperature",link:"https://www.freebsd.org/",categories:["data-collection.hardware-and-sensors"],icon_filename:"freebsd.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# dev.cpu.temperature\n\nPlugin: freebsd.plugin\nModule: dev.cpu.temperature\n\n## Overview\n\nGet current CPU temperature\n\nThe plugin calls `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| dev.cpu.temperature | Enable or disable CPU temperature metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per dev.cpu.temperature instance\n\nThis metric show latest CPU temperature.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cpu.temperature | a dimension per core | Celsius |\n\n",integration_type:"collector",id:"freebsd.plugin-dev.cpu.temperature-dev.cpu.temperature",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"devstat",monitored_instance:{name:"devstat",link:"https://www.freebsd.org/",categories:["data-collection.storage"],icon_filename:"hard-drive.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# devstat\n\nPlugin: freebsd.plugin\nModule: devstat\n\n## Overview\n\nCollect information per hard disk available on host.\n\nThe plugin calls `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enable new disks detected at runtime | Enable or disable possibility to detect new disks. | auto | no |\n| performance metrics for pass devices | Enable or disable metrics for disks with type `PASS`. | auto | no |\n| total bandwidth for all disks | Enable or disable total bandwidth metric for all disks. | yes | no |\n| bandwidth for all disks | Enable or disable bandwidth for all disks metric. | auto | no |\n| operations for all disks | Enable or disable operations for all disks metric. | auto | no |\n| queued operations for all disks | Enable or disable queued operations for all disks metric. | auto | no |\n| utilization percentage for all disks | Enable or disable utilization percentage for all disks metric. | auto | no |\n| i/o time for all disks | Enable or disable I/O time for all disks metric. | auto | no |\n| average completed i/o time for all disks | Enable or disable average completed I/O time for all disks metric. | auto | no |\n| average completed i/o bandwidth for all disks | Enable or disable average completed I/O bandwidth for all disks metric. | auto | no |\n| average service time for all disks | Enable or disable average service time for all disks metric. | auto | no |\n| disable by default disks matching | Do not create charts for disks listed. | | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd:kern.devstat]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ 10min_disk_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/disks.conf) | disk.util | average percentage of time ${label:device} disk was busy over the last 10 minutes |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per devstat instance\n\nThese metrics give a general vision about I/O events on disks.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.io | io, out | KiB/s |\n\n### Per disk\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| disk.io | reads, writes, frees | KiB/s |\n| disk.ops | reads, writes, other, frees | operations/s |\n| disk.qops | operations | operations |\n| disk.util | utilization | % of time working |\n| disk.iotime | reads, writes, other, frees | milliseconds/s |\n| disk.await | reads, writes, other, frees | milliseconds/operation |\n| disk.avgsz | reads, writes, frees | KiB/operation |\n| disk.svctm | svctm | milliseconds/operation |\n\n",integration_type:"collector",id:"freebsd.plugin-devstat-devstat",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"getifaddrs",monitored_instance:{name:"getifaddrs",link:"https://www.freebsd.org/",categories:["data-collection.networking"],icon_filename:"network.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# getifaddrs\n\nPlugin: freebsd.plugin\nModule: getifaddrs\n\n## Overview\n\nCollect traffic per network interface.\n\nThe plugin calls `getifaddrs` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enable new interfaces detected at runtime | Enable or disable possibility to discover new interface after plugin starts. | auto | no |\n| total bandwidth for physical interfaces | Enable or disable total bandwidth for physical interfaces metric. | auto | no |\n| total packets for physical interfaces | Enable or disable total packets for physical interfaces metric. | auto | no |\n| total bandwidth for ipv4 interface | Enable or disable total bandwidth for IPv4 interface metric. | auto | no |\n| total bandwidth for ipv6 interfaces | Enable or disable total bandwidth for ipv6 interfaces metric. | auto | no |\n| bandwidth for all interfaces | Enable or disable bandwidth for all interfaces metric. | auto | no |\n| packets for all interfaces | Enable or disable packets for all interfaces metric. | auto | no |\n| errors for all interfaces | Enable or disable errors for all interfaces metric. | auto | no |\n| drops for all interfaces | Enable or disable drops for all interfaces metric. | auto | no |\n| collisions for all interface | Enable or disable collisions for all interface metric. | auto | no |\n| disable by default interfaces matching | Do not display data for intterfaces listed. | lo* | no |\n| set physical interfaces for system.net | Do not show network traffic for listed interfaces. | igb* ix* cxl* em* ixl* ixlv* bge* ixgbe* vtnet* vmx* re* igc* dwc* | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd:getifaddrs]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ interface_speed ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.net | network interface ${label:device} current speed |\n| [ inbound_packets_dropped_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.drops | ratio of inbound dropped packets for the network interface ${label:device} over the last 10 minutes |\n| [ outbound_packets_dropped_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.drops | ratio of outbound dropped packets for the network interface ${label:device} over the last 10 minutes |\n| [ 1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ 10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n| [ interface_inbound_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.errors | number of inbound errors for the network interface ${label:device} in the last 10 minutes |\n| [ interface_outbound_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.errors | number of outbound errors for the network interface ${label:device} in the last 10 minutes |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per getifaddrs instance\n\nGeneral overview about network traffic.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.net | received, sent | kilobits/s |\n| system.packets | received, sent, multicast_received, multicast_sent | packets/s |\n| system.ipv4 | received, sent | kilobits/s |\n| system.ipv6 | received, sent | kilobits/s |\n\n### Per network device\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| net.net | received, sent | kilobits/s |\n| net.packets | received, sent, multicast_received, multicast_sent | packets/s |\n| net.errors | inbound, outbound | errors/s |\n| net.drops | inbound, outbound | drops/s |\n| net.events | collisions | events/s |\n\n",integration_type:"collector",id:"freebsd.plugin-getifaddrs-getifaddrs",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"getmntinfo",monitored_instance:{name:"getmntinfo",link:"https://www.freebsd.org/",categories:["data-collection.storage"],icon_filename:"hard-drive.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# getmntinfo\n\nPlugin: freebsd.plugin\nModule: getmntinfo\n\n## Overview\n\nCollect information per mount point.\n\nThe plugin calls `getmntinfo` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enable new mount points detected at runtime | Cheeck new mount points during runtime. | auto | no |\n| space usage for all disks | Enable or disable space usage for all disks metric. | auto | no |\n| inodes usage for all disks | Enable or disable inodes usage for all disks metric. | auto | no |\n| exclude space metrics on paths | Do not show metrics for listed paths. | /proc/* | no |\n| exclude space metrics on filesystems | Do not monitor listed filesystems. | autofs procfs subfs devfs none | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd:getmntinfo]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ disk_space_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/disks.conf) | disk.space | disk ${label:mount_point} space utilization |\n| [ disk_inode_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/disks.conf) | disk.inodes | disk ${label:mount_point} inode utilization |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per mount point\n\nThese metrics show detailss about mount point usages.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| disk.space | avail, used, reserved_for_root | GiB |\n| disk.inodes | avail, used, reserved_for_root | inodes |\n\n",integration_type:"collector",id:"freebsd.plugin-getmntinfo-getmntinfo",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"hw.intrcnt",monitored_instance:{name:"hw.intrcnt",link:"https://www.freebsd.org/",categories:["data-collection.operating-systems"],icon_filename:"freebsd.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# hw.intrcnt\n\nPlugin: freebsd.plugin\nModule: hw.intrcnt\n\n## Overview\n\nGet total number of interrupts\n\nThe plugin calls `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config option" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| hw.intrcnt | Enable or disable Interrupts metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per hw.intrcnt instance\n\nThese metrics show system interrupts frequency.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.intr | interrupts | interrupts/s |\n| system.interrupts | a dimension per interrupt | interrupts/s |\n\n",integration_type:"collector",id:"freebsd.plugin-hw.intrcnt-hw.intrcnt",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"ipfw",monitored_instance:{name:"ipfw",link:"https://www.freebsd.org/",categories:["data-collection.networking"],icon_filename:"firewall.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# ipfw\n\nPlugin: freebsd.plugin\nModule: ipfw\n\n## Overview\n\nCollect information about FreeBSD firewall.\n\nThe plugin uses RAW socket to communicate with kernel and collect data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| counters for static rules | Enable or disable counters for static rules metric. | yes | no |\n| number of dynamic rules | Enable or disable number of dynamic rules metric. | yes | no |\n| allocated memory | Enable or disable allocated memory metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd:ipfw]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per ipfw instance\n\nTheese metrics show FreeBSD firewall statistics.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipfw.mem | dynamic, static | bytes |\n| ipfw.packets | a dimension per static rule | packets/s |\n| ipfw.bytes | a dimension per static rule | bytes/s |\n| ipfw.active | a dimension per dynamic rule | rules |\n| ipfw.expired | a dimension per dynamic rule | rules |\n\n",integration_type:"collector",id:"freebsd.plugin-ipfw-ipfw",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"kern.cp_time",monitored_instance:{name:"kern.cp_time",link:"https://www.freebsd.org/",categories:["data-collection.operating-systems"],icon_filename:"freebsd.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# kern.cp_time\n\nPlugin: freebsd.plugin\nModule: kern.cp_time\n\n## Overview\n\nTotal CPU utilization\n\nThe plugin calls `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe netdata main configuration file.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| kern.cp_time | Enable or disable Total CPU usage. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ 10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cpu.conf) | system.cpu | average CPU utilization over the last 10 minutes (excluding iowait, nice and steal) |\n| [ 10min_cpu_iowait ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cpu.conf) | system.cpu | average CPU iowait time over the last 10 minutes |\n| [ 20min_steal_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cpu.conf) | system.cpu | average CPU steal time over the last 20 minutes |\n| [ 10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cpu.conf) | system.cpu | average CPU utilization over the last 10 minutes (excluding nice) |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per kern.cp_time instance\n\nThese metrics show CPU usage statistics.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.cpu | nice, system, user, interrupt, idle | percentage |\n\n### Per core\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cpu.cpu | nice, system, user, interrupt, idle | percentage |\n\n",integration_type:"collector",id:"freebsd.plugin-kern.cp_time-kern.cp_time",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"kern.ipc.msq",monitored_instance:{name:"kern.ipc.msq",link:"https://www.freebsd.org/",categories:["data-collection.operating-systems"],icon_filename:"freebsd.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# kern.ipc.msq\n\nPlugin: freebsd.plugin\nModule: kern.ipc.msq\n\n## Overview\n\nCollect number of IPC message Queues\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| kern.ipc.msq | Enable or disable IPC message queue metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per kern.ipc.msq instance\n\nThese metrics show statistics IPC messages statistics.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.ipc_msq_queues | queues | queues |\n| system.ipc_msq_messages | messages | messages |\n| system.ipc_msq_size | allocated, used | bytes |\n\n",integration_type:"collector",id:"freebsd.plugin-kern.ipc.msq-kern.ipc.msq",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"kern.ipc.sem",monitored_instance:{name:"kern.ipc.sem",link:"https://www.freebsd.org/",categories:["data-collection.operating-systems"],icon_filename:"freebsd.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# kern.ipc.sem\n\nPlugin: freebsd.plugin\nModule: kern.ipc.sem\n\n## Overview\n\nCollect information about semaphore.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| kern.ipc.sem | Enable or disable semaphore metrics. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ semaphores_used ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ipc.conf) | system.ipc_semaphores | IPC semaphore utilization |\n| [ semaphore_arrays_used ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ipc.conf) | system.ipc_semaphore_arrays | IPC semaphore arrays utilization |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per kern.ipc.sem instance\n\nThese metrics shows counters for semaphores on host.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.ipc_semaphores | semaphores | semaphores |\n| system.ipc_semaphore_arrays | arrays | arrays |\n\n",integration_type:"collector",id:"freebsd.plugin-kern.ipc.sem-kern.ipc.sem",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"kern.ipc.shm",monitored_instance:{name:"kern.ipc.shm",link:"https://www.freebsd.org/",categories:["data-collection.operating-systems"],icon_filename:"memory.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# kern.ipc.shm\n\nPlugin: freebsd.plugin\nModule: kern.ipc.shm\n\n## Overview\n\nCollect shared memory information.\n\nThe plugin calls `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| kern.ipc.shm | Enable or disable shared memory metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per kern.ipc.shm instance\n\nThese metrics give status about current shared memory segments.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.ipc_shared_mem_segs | segments | segments |\n| system.ipc_shared_mem_size | allocated | KiB |\n\n",integration_type:"collector",id:"freebsd.plugin-kern.ipc.shm-kern.ipc.shm",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"net.inet.icmp.stats",monitored_instance:{name:"net.inet.icmp.stats",link:"https://www.freebsd.org/",categories:["data-collection.networking"],icon_filename:"network.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# net.inet.icmp.stats\n\nPlugin: freebsd.plugin\nModule: net.inet.icmp.stats\n\n## Overview\n\nCollect information about ICMP traffic.\n\nThe plugin calls `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| IPv4 ICMP packets | Enable or disable IPv4 ICMP packets metric. | yes | no |\n| IPv4 ICMP error | Enable or disable IPv4 ICMP error metric. | yes | no |\n| IPv4 ICMP messages | Enable or disable IPv4 ICMP messages metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd:net.inet.icmp.stats]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per net.inet.icmp.stats instance\n\nThese metrics show ICMP connections statistics.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipv4.icmp | received, sent | packets/s |\n| ipv4.icmp_errors | InErrors, OutErrors, InCsumErrors | packets/s |\n| ipv4.icmpmsg | InEchoReps, OutEchoReps, InEchos, OutEchos | packets/s |\n\n",integration_type:"collector",id:"freebsd.plugin-net.inet.icmp.stats-net.inet.icmp.stats",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"net.inet.ip.stats",monitored_instance:{name:"net.inet.ip.stats",link:"https://www.freebsd.org/",categories:["data-collection.networking"],icon_filename:"network.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# net.inet.ip.stats\n\nPlugin: freebsd.plugin\nModule: net.inet.ip.stats\n\n## Overview\n\nCollect IP stats\n\nThe plugin calls `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| ipv4 packets | Enable or disable IPv4 packets metric. | yes | no |\n| ipv4 fragments sent | Enable or disable IPv4 fragments sent metric. | yes | no |\n| ipv4 fragments assembly | Enable or disable IPv4 fragments assembly metric. | yes | no |\n| ipv4 errors | Enable or disable IPv4 errors metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd:net.inet.ip.stats]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per net.inet.ip.stats instance\n\nThese metrics show IPv4 connections statistics.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipv4.packets | received, sent, forwarded, delivered | packets/s |\n| ipv4.fragsout | ok, failed, created | packets/s |\n| ipv4.fragsin | ok, failed, all | packets/s |\n| ipv4.errors | InDiscards, OutDiscards, InHdrErrors, OutNoRoutes, InAddrErrors, InUnknownProtos | packets/s |\n\n",integration_type:"collector",id:"freebsd.plugin-net.inet.ip.stats-net.inet.ip.stats",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"net.inet.tcp.states",monitored_instance:{name:"net.inet.tcp.states",link:"https://www.freebsd.org/",categories:["data-collection.networking"],icon_filename:"network.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# net.inet.tcp.states\n\nPlugin: freebsd.plugin\nModule: net.inet.tcp.states\n\n## Overview\n\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| net.inet.tcp.states | Enable or disable TCP state metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ tcp_connections ](https://github.com/netdata/netdata/blob/master/src/health/health.d/tcp_conn.conf) | ipv4.tcpsock | IPv4 TCP connections utilization |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per net.inet.tcp.states instance\n\nA counter for TCP connections.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipv4.tcpsock | connections | active connections |\n\n",integration_type:"collector",id:"freebsd.plugin-net.inet.tcp.states-net.inet.tcp.states",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"net.inet.tcp.stats",monitored_instance:{name:"net.inet.tcp.stats",link:"https://www.freebsd.org/",categories:["data-collection.networking"],icon_filename:"network.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# net.inet.tcp.stats\n\nPlugin: freebsd.plugin\nModule: net.inet.tcp.stats\n\n## Overview\n\nCollect overall information about TCP connections.\n\nThe plugin calls `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| ipv4 TCP packets | Enable or disable ipv4 TCP packets metric. | yes | no |\n| ipv4 TCP errors | Enable or disable pv4 TCP errors metric. | yes | no |\n| ipv4 TCP handshake issues | Enable or disable ipv4 TCP handshake issue metric. | yes | no |\n| TCP connection aborts | Enable or disable TCP connection aborts metric. | auto | no |\n| TCP out-of-order queue | Enable or disable TCP out-of-order queue metric. | auto | no |\n| TCP SYN cookies | Enable or disable TCP SYN cookies metric. | auto | no |\n| TCP listen issues | Enable or disable TCP listen issues metric. | auto | no |\n| ECN packets | Enable or disable ECN packets metric. | auto | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd:net.inet.tcp.stats]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ 1m_ipv4_tcp_resets_sent ](https://github.com/netdata/netdata/blob/master/src/health/health.d/tcp_resets.conf) | ipv4.tcphandshake | average number of sent TCP RESETS over the last minute |\n| [ 10s_ipv4_tcp_resets_sent ](https://github.com/netdata/netdata/blob/master/src/health/health.d/tcp_resets.conf) | ipv4.tcphandshake | average number of sent TCP RESETS over the last 10 seconds. This can indicate a port scan, or that a service running on this host has crashed. Netdata will not send a clear notification for this alarm. |\n| [ 1m_ipv4_tcp_resets_received ](https://github.com/netdata/netdata/blob/master/src/health/health.d/tcp_resets.conf) | ipv4.tcphandshake | average number of received TCP RESETS over the last minute |\n| [ 10s_ipv4_tcp_resets_received ](https://github.com/netdata/netdata/blob/master/src/health/health.d/tcp_resets.conf) | ipv4.tcphandshake | average number of received TCP RESETS over the last 10 seconds. This can be an indication that a service this host needs has crashed. Netdata will not send a clear notification for this alarm. |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per net.inet.tcp.stats instance\n\nThese metrics show TCP connections statistics.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipv4.tcppackets | received, sent | packets/s |\n| ipv4.tcperrors | InErrs, InCsumErrors, RetransSegs | packets/s |\n| ipv4.tcphandshake | EstabResets, ActiveOpens, PassiveOpens, AttemptFails | events/s |\n| ipv4.tcpconnaborts | baddata, userclosed, nomemory, timeout, linger | connections/s |\n| ipv4.tcpofo | inqueue | packets/s |\n| ipv4.tcpsyncookies | received, sent, failed | packets/s |\n| ipv4.tcplistenissues | overflows | packets/s |\n| ipv4.ecnpkts | InCEPkts, InECT0Pkts, InECT1Pkts, OutECT0Pkts, OutECT1Pkts | packets/s |\n\n",integration_type:"collector",id:"freebsd.plugin-net.inet.tcp.stats-net.inet.tcp.stats",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"net.inet.udp.stats",monitored_instance:{name:"net.inet.udp.stats",link:"https://www.freebsd.org/",categories:["data-collection.networking"],icon_filename:"network.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# net.inet.udp.stats\n\nPlugin: freebsd.plugin\nModule: net.inet.udp.stats\n\n## Overview\n\nCollect information about UDP connections.\n\nThe plugin calls `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| ipv4 UDP packets | Enable or disable ipv4 UDP packets metric. | yes | no |\n| ipv4 UDP errors | Enable or disable ipv4 UDP errors metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd:net.inet.udp.stats]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ 1m_ipv4_udp_receive_buffer_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/udp_errors.conf) | ipv4.udperrors | average number of UDP receive buffer errors over the last minute |\n| [ 1m_ipv4_udp_send_buffer_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/udp_errors.conf) | ipv4.udperrors | average number of UDP send buffer errors over the last minute |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per net.inet.udp.stats instance\n\nThese metrics show UDP connections statistics.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipv4.udppackets | received, sent | packets/s |\n| ipv4.udperrors | InErrors, NoPorts, RcvbufErrors, InCsumErrors, IgnoredMulti | events/s |\n\n",integration_type:"collector",id:"freebsd.plugin-net.inet.udp.stats-net.inet.udp.stats",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"net.inet6.icmp6.stats",monitored_instance:{name:"net.inet6.icmp6.stats",link:"https://www.freebsd.org/",categories:["data-collection.networking"],icon_filename:"network.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# net.inet6.icmp6.stats\n\nPlugin: freebsd.plugin\nModule: net.inet6.icmp6.stats\n\n## Overview\n\nCollect information abou IPv6 ICMP\n\nThe plugin calls `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| icmp | Enable or disable ICMP metric. | auto | no |\n| icmp redirects | Enable or disable ICMP redirects metric. | auto | no |\n| icmp errors | Enable or disable ICMP errors metric. | auto | no |\n| icmp echos | Enable or disable ICMP echos metric. | auto | no |\n| icmp router | Enable or disable ICMP router metric. | auto | no |\n| icmp neighbor | Enable or disable ICMP neighbor metric. | auto | no |\n| icmp types | Enable or disable ICMP types metric. | auto | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd:net.inet6.icmp6.stats]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per net.inet6.icmp6.stats instance\n\nCollect IPv6 ICMP traffic statistics.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipv6.icmp | received, sent | messages/s |\n| ipv6.icmpredir | received, sent | redirects/s |\n| ipv6.icmperrors | InErrors, OutErrors, InCsumErrors, InDestUnreachs, InPktTooBigs, InTimeExcds, InParmProblems, OutDestUnreachs, OutTimeExcds, OutParmProblems | errors/s |\n| ipv6.icmpechos | InEchos, OutEchos, InEchoReplies, OutEchoReplies | messages/s |\n| ipv6.icmprouter | InSolicits, OutSolicits, InAdvertisements, OutAdvertisements | messages/s |\n| ipv6.icmpneighbor | InSolicits, OutSolicits, InAdvertisements, OutAdvertisements | messages/s |\n| ipv6.icmptypes | InType1, InType128, InType129, InType136, OutType1, OutType128, OutType129, OutType133, OutType135, OutType143 | messages/s |\n\n",integration_type:"collector",id:"freebsd.plugin-net.inet6.icmp6.stats-net.inet6.icmp6.stats",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"net.inet6.ip6.stats",monitored_instance:{name:"net.inet6.ip6.stats",link:"https://www.freebsd.org/",categories:["data-collection.networking"],icon_filename:"network.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# net.inet6.ip6.stats\n\nPlugin: freebsd.plugin\nModule: net.inet6.ip6.stats\n\n## Overview\n\nCollect information abou IPv6 stats.\n\nThe plugin calls `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| ipv6 packets | Enable or disable ipv6 packet metric. | auto | no |\n| ipv6 fragments sent | Enable or disable ipv6 fragments sent metric. | auto | no |\n| ipv6 fragments assembly | Enable or disable ipv6 fragments assembly metric. | auto | no |\n| ipv6 errors | Enable or disable ipv6 errors metric. | auto | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd:net.inet6.ip6.stats]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per net.inet6.ip6.stats instance\n\nThese metrics show general information about IPv6 connections.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipv6.packets | received, sent, forwarded, delivers | packets/s |\n| ipv6.fragsout | ok, failed, all | packets/s |\n| ipv6.fragsin | ok, failed, timeout, all | packets/s |\n| ipv6.errors | InDiscards, OutDiscards, InHdrErrors, InAddrErrors, InTruncatedPkts, InNoRoutes, OutNoRoutes | packets/s |\n\n",integration_type:"collector",id:"freebsd.plugin-net.inet6.ip6.stats-net.inet6.ip6.stats",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"net.isr",monitored_instance:{name:"net.isr",link:"https://www.freebsd.org/",categories:["data-collection.networking"],icon_filename:"freebsd.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# net.isr\n\nPlugin: freebsd.plugin\nModule: net.isr\n\n## Overview\n\nCollect information about system softnet stat.\n\nThe plugin calls `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| netisr | Enable or disable general vision about softnet stat metrics. | yes | no |\n| netisr per core | Enable or disable softnet stat metric per core. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd:net.isr]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ 1min_netdev_backlog_exceeded ](https://github.com/netdata/netdata/blob/master/src/health/health.d/softnet.conf) | system.softnet_stat | average number of dropped packets in the last minute due to exceeded net.core.netdev_max_backlog |\n| [ 1min_netdev_budget_ran_outs ](https://github.com/netdata/netdata/blob/master/src/health/health.d/softnet.conf) | system.softnet_stat | average number of times ksoftirq ran out of sysctl net.core.netdev_budget or net.core.netdev_budget_usecs with work remaining over the last minute (this can be a cause for dropped packets) |\n| [ 10min_netisr_backlog_exceeded ](https://github.com/netdata/netdata/blob/master/src/health/health.d/softnet.conf) | system.softnet_stat | average number of drops in the last minute due to exceeded sysctl net.route.netisr_maxqlen (this can be a cause for dropped packets) |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per net.isr instance\n\nThese metrics show statistics about softnet stats.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.softnet_stat | dispatched, hybrid_dispatched, qdrops, queued | events/s |\n\n### Per core\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cpu.softnet_stat | dispatched, hybrid_dispatched, qdrops, queued | events/s |\n\n",integration_type:"collector",id:"freebsd.plugin-net.isr-net.isr",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"system.ram",monitored_instance:{name:"system.ram",link:"https://www.freebsd.org/",categories:["data-collection.operating-systems"],icon_filename:"memory.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# system.ram\n\nPlugin: freebsd.plugin\nModule: system.ram\n\n## Overview\n\nShow information about system memory usage.\n\nThe plugin calls `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| system.ram | Enable or disable system RAM metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ram.conf) | system.ram | system memory utilization |\n| [ ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ram.conf) | system.ram | system memory utilization |\n| [ ram_available ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ram.conf) | mem.available | percentage of estimated amount of RAM available for userspace processes, without causing swapping |\n| [ ram_available ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ram.conf) | mem.available | percentage of estimated amount of RAM available for userspace processes, without causing swapping |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per system.ram instance\n\nThis metric shows RAM usage statistics.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.ram | free, active, inactive, wired, cache, laundry, buffers | MiB |\n| mem.available | avail | MiB |\n\n",integration_type:"collector",id:"freebsd.plugin-system.ram-system.ram",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"uptime",monitored_instance:{name:"uptime",link:"https://www.freebsd.org/",categories:["data-collection.operating-systems"],icon_filename:"freebsd.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# uptime\n\nPlugin: freebsd.plugin\nModule: uptime\n\n## Overview\n\nShow period of time server is up.\n\nThe plugin calls `clock_gettime` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| vm.loadavg | Enable or disable load average metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per uptime instance\n\nHow long the system is running.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.uptime | uptime | seconds |\n\n",integration_type:"collector",id:"freebsd.plugin-uptime-uptime",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"vm.loadavg",monitored_instance:{name:"vm.loadavg",link:"https://www.freebsd.org/",categories:["data-collection.operating-systems"],icon_filename:"freebsd.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# vm.loadavg\n\nPlugin: freebsd.plugin\nModule: vm.loadavg\n\n## Overview\n\nSystem Load Average\n\nThe plugin calls `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| vm.loadavg | Enable or disable load average metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ load_cpu_number ](https://github.com/netdata/netdata/blob/master/src/health/health.d/load.conf) | system.load | number of active CPU cores in the system |\n| [ load_average_15 ](https://github.com/netdata/netdata/blob/master/src/health/health.d/load.conf) | system.load | system fifteen-minute load average |\n| [ load_average_5 ](https://github.com/netdata/netdata/blob/master/src/health/health.d/load.conf) | system.load | system five-minute load average |\n| [ load_average_1 ](https://github.com/netdata/netdata/blob/master/src/health/health.d/load.conf) | system.load | system one-minute load average |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per vm.loadavg instance\n\nMonitoring for number of threads running or waiting.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.load | load1, load5, load15 | load |\n\n",integration_type:"collector",id:"freebsd.plugin-vm.loadavg-vm.loadavg",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"vm.stats.sys.v_intr",monitored_instance:{name:"vm.stats.sys.v_intr",link:"https://www.freebsd.org/",categories:["data-collection.operating-systems"],icon_filename:"freebsd.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# vm.stats.sys.v_intr\n\nPlugin: freebsd.plugin\nModule: vm.stats.sys.v_intr\n\n## Overview\n\nDevice interrupts\n\nThe plugin calls `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config option" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| vm.stats.sys.v_intr | Enable or disable device interrupts metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per vm.stats.sys.v_intr instance\n\nThe metric show device interrupt frequency.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.dev_intr | interrupts | interrupts/s |\n\n",integration_type:"collector",id:"freebsd.plugin-vm.stats.sys.v_intr-vm.stats.sys.v_intr",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"vm.stats.sys.v_soft",monitored_instance:{name:"vm.stats.sys.v_soft",link:"https://www.freebsd.org/",categories:["data-collection.operating-systems"],icon_filename:"freebsd.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# vm.stats.sys.v_soft\n\nPlugin: freebsd.plugin\nModule: vm.stats.sys.v_soft\n\n## Overview\n\nSoftware Interrupt\n\nvm.stats.sys.v_soft\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config option" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| vm.stats.sys.v_soft | Enable or disable software inerrupts metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per vm.stats.sys.v_soft instance\n\nThis metric shows software interrupt frequency.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.soft_intr | interrupts | interrupts/s |\n\n",integration_type:"collector",id:"freebsd.plugin-vm.stats.sys.v_soft-vm.stats.sys.v_soft",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"vm.stats.sys.v_swtch",monitored_instance:{name:"vm.stats.sys.v_swtch",link:"https://www.freebsd.org/",categories:["data-collection.operating-systems"],icon_filename:"freebsd.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# vm.stats.sys.v_swtch\n\nPlugin: freebsd.plugin\nModule: vm.stats.sys.v_swtch\n\n## Overview\n\nCPU context switch\n\nThe plugin calls `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| vm.stats.sys.v_swtch | Enable or disable CPU context switch metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per vm.stats.sys.v_swtch instance\n\nThe metric count the number of context switches happening on host.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.ctxt | switches | context switches/s |\n| system.forks | started | processes/s |\n\n",integration_type:"collector",id:"freebsd.plugin-vm.stats.sys.v_swtch-vm.stats.sys.v_swtch",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"vm.stats.vm.v_pgfaults",monitored_instance:{name:"vm.stats.vm.v_pgfaults",link:"https://www.freebsd.org/",categories:["data-collection.operating-systems"],icon_filename:"memory.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# vm.stats.vm.v_pgfaults\n\nPlugin: freebsd.plugin\nModule: vm.stats.vm.v_pgfaults\n\n## Overview\n\nCollect memory page faults events.\n\nThe plugin calls `sysctl` function to collect necessary data\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| vm.stats.vm.v_pgfaults | Enable or disable Memory page fault metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per vm.stats.vm.v_pgfaults instance\n\nThe number of page faults happened on host.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.pgfaults | memory, io_requiring, cow, cow_optimized, in_transit | page faults/s |\n\n",integration_type:"collector",id:"freebsd.plugin-vm.stats.vm.v_pgfaults-vm.stats.vm.v_pgfaults",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"vm.stats.vm.v_swappgs",monitored_instance:{name:"vm.stats.vm.v_swappgs",link:"https://www.freebsd.org/",categories:["data-collection.operating-systems"],icon_filename:"memory.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# vm.stats.vm.v_swappgs\n\nPlugin: freebsd.plugin\nModule: vm.stats.vm.v_swappgs\n\n## Overview\n\nThe metric swap amount of data read from and written to SWAP.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| vm.stats.vm.v_swappgs | Enable or disable infoormation about SWAP I/O metric. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ 30min_ram_swapped_out ](https://github.com/netdata/netdata/blob/master/src/health/health.d/swap.conf) | mem.swapio | percentage of the system RAM swapped in the last 30 minutes |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per vm.stats.vm.v_swappgs instance\n\nThis metric shows events happening on SWAP.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.swapio | io, out | KiB/s |\n\n",integration_type:"collector",id:"freebsd.plugin-vm.stats.vm.v_swappgs-vm.stats.vm.v_swappgs",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"vm.swap_info",monitored_instance:{name:"vm.swap_info",link:"",categories:["data-collection.operating-systems"],icon_filename:"freebsd.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# vm.swap_info\n\nPlugin: freebsd.plugin\nModule: vm.swap_info\n\n## Overview\n\nCollect information about SWAP memory.\n\nThe plugin calls `sysctlnametomib` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| vm.swap_info | Enable or disable SWAP metrics. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ used_swap ](https://github.com/netdata/netdata/blob/master/src/health/health.d/swap.conf) | mem.swap | swap memory utilization |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per vm.swap_info instance\n\nThis metric shows the SWAP usage.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.swap | free, used | MiB |\n\n",integration_type:"collector",id:"freebsd.plugin-vm.swap_info-vm.swap_info",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"vm.vmtotal",monitored_instance:{name:"vm.vmtotal",link:"https://www.freebsd.org/",categories:["data-collection.operating-systems"],icon_filename:"memory.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# vm.vmtotal\n\nPlugin: freebsd.plugin\nModule: vm.vmtotal\n\n## Overview\n\nCollect Virtual Memory information from host.\n\nThe plugin calls function `sysctl` to collect data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enable total processes | Number of active processes. | yes | no |\n| processes running | Show number of processes running or blocked. | yes | no |\n| real memory | Memeory used on host. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd:vm.vmtotal]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ active_processes ](https://github.com/netdata/netdata/blob/master/src/health/health.d/processes.conf) | system.active_processes | system process IDs (PID) space utilization |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per vm.vmtotal instance\n\nThese metrics show an overall vision about processes running.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.active_processes | active | processes |\n| system.processes | running, blocked | processes |\n| mem.real | used | MiB |\n\n",integration_type:"collector",id:"freebsd.plugin-vm.vmtotal-vm.vmtotal",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freebsd.plugin",module_name:"zfs",monitored_instance:{name:"zfs",link:"https://www.freebsd.org/",categories:["data-collection.storage"],icon_filename:"filesystem.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# zfs\n\nPlugin: freebsd.plugin\nModule: zfs\n\n## Overview\n\nCollect metrics for ZFS filesystem\n\nThe plugin uses `sysctl` function to collect necessary data.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| show zero charts | Do not show charts with zero metrics. | no | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freebsd:zfs_arcstats]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ zfs_memory_throttle ](https://github.com/netdata/netdata/blob/master/src/health/health.d/zfs.conf) | zfs.memory_ops | number of times ZFS had to limit the ARC growth in the last 10 minutes |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per zfs instance\n\nThese metrics show detailed information about ZFS filesystem.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| zfs.arc_size | arcsz, target, min, max | MiB |\n| zfs.l2_size | actual, size | MiB |\n| zfs.reads | arc, demand, prefetch, metadata, l2 | reads/s |\n| zfs.bytes | read, write | KiB/s |\n| zfs.hits | hits, misses | percentage |\n| zfs.hits_rate | hits, misses | events/s |\n| zfs.dhits | hits, misses | percentage |\n| zfs.dhits_rate | hits, misses | events/s |\n| zfs.phits | hits, misses | percentage |\n| zfs.phits_rate | hits, misses | events/s |\n| zfs.mhits | hits, misses | percentage |\n| zfs.mhits_rate | hits, misses | events/s |\n| zfs.l2hits | hits, misses | percentage |\n| zfs.l2hits_rate | hits, misses | events/s |\n| zfs.list_hits | mfu, mfu_ghost, mru, mru_ghost | hits/s |\n| zfs.arc_size_breakdown | recent, frequent | percentage |\n| zfs.memory_ops | throttled | operations/s |\n| zfs.important_ops | evict_skip, deleted, mutex_miss, hash_collisions | operations/s |\n| zfs.actual_hits | hits, misses | percentage |\n| zfs.actual_hits_rate | hits, misses | events/s |\n| zfs.demand_data_hits | hits, misses | percentage |\n| zfs.demand_data_hits_rate | hits, misses | events/s |\n| zfs.prefetch_data_hits | hits, misses | percentage |\n| zfs.prefetch_data_hits_rate | hits, misses | events/s |\n| zfs.hash_elements | current, max | elements |\n| zfs.hash_chains | current, max | chains |\n| zfs.trim_bytes | TRIMmed | bytes |\n| zfs.trim_requests | successful, failed, unsupported | requests |\n\n",integration_type:"collector",id:"freebsd.plugin-zfs-zfs",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freebsd.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"freeipmi.plugin",module_name:"freeipmi",monitored_instance:{name:"Intelligent Platform Management Interface (IPMI)",link:"https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface",categories:["data-collection.hardware-and-sensors"],icon_filename:"netdata.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["sensors","ipmi","freeipmi","ipmimonitoring"]},overview:'# Intelligent Platform Management Interface (IPMI)\n\nPlugin: freeipmi.plugin\nModule: freeipmi\n\n## Overview\n\n"Monitor enterprise server sensor readings, event log entries, and hardware statuses to ensure reliable server operations."\n\n\nThe plugin uses open source library IPMImonitoring to communicate with sensors.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid.\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn\'t support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nLinux kernel module for IPMI can create big overhead.\n',setup:"## Setup\n\n\n### Prerequisites\n\n#### Install freeipmi.plugin\n\nWhen using our official DEB/RPM packages, the FreeIPMI plugin is included in a separate package named `netdata-plugin-freeipmi` which needs to be manually installed using your system package manager. It is not installed automatically due to the large number of dependencies it requires.\n\nWhen using a static build of Netdata, the FreeIPMI plugin will be included and installed automatically, though you will still need to have FreeIPMI installed on your system to be able to use the plugin.\n\nWhen using a local build of Netdata, you need to ensure that the FreeIPMI development packages (typically called `libipmimonitoring-dev`, `libipmimonitoring-devel`, or `freeipmi-devel`) are installed when building Netdata.\n\n\n#### Preliminary actions\n\nIf you have not previously used IPMI on your system, you will probably need to run the `ipmimonitoring` command as root\nto initialize IPMI settings so that the Netdata plugin works correctly. It should return information about available sensors on the system.\n\n\n\n### Configuration\n\n#### Options\n\nThe configuration is set using command line options:\n\n```\n# netdata.conf\n[plugin:freeipmi]\n command options = opt1 opt2 ... optN\n```\n\nTo display a help message listing the available command line options:\n\n```bash\n./usr/libexec/netdata/plugins.d/freeipmi.plugin --help\n```\n\n\n{% details open=true summary=\"Command options\" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SECONDS | Data collection frequency. | | no |\n| debug | Enable verbose output. | disabled | no |\n| no-sel | Disable System Event Log (SEL) collection. | disabled | no |\n| reread-sdr-cache | Re-read SDR cache on every iteration. | disabled | no |\n| interpret-oem-data | Attempt to parse OEM data. | disabled | no |\n| assume-system-event-record | treat illegal SEL events records as normal. | disabled | no |\n| ignore-non-interpretable-sensors | Do not read sensors that cannot be interpreted. | disabled | no |\n| bridge-sensors | Bridge sensors not owned by the BMC. | disabled | no |\n| shared-sensors | Enable shared sensors if found. | disabled | no |\n| no-discrete-reading | Do not read sensors if their event/reading type code is invalid. | enabled | no |\n| ignore-scanning-disabled | Ignore the scanning bit and read sensors no matter what. | disabled | no |\n| assume-bmc-owner | Assume the BMC is the sensor owner no matter what (usually bridging is required too). | disabled | no |\n| hostname HOST | Remote IPMI hostname or IP address. | local | no |\n| username USER | Username that will be used when connecting to the remote host. | | no |\n| password PASS | Password that will be used when connecting to the remote host. | | no |\n| noauthcodecheck / no-auth-code-check | Don't check the authentication codes returned. | | no |\n| driver-type IPMIDRIVER | Specify the driver type to use instead of doing an auto selection. The currently available outofband drivers are LAN and LAN_2_0, which perform IPMI 1.5 and IPMI 2.0 respectively. The currently available inband drivers are KCS, SSIF, OPENIPMI and SUNBMC. | | no |\n| sdr-cache-dir PATH | SDR cache files directory. | /tmp | no |\n| sensor-config-file FILE | Sensors configuration filename. | system default | no |\n| sel-config-file FILE | SEL configuration filename. | system default | no |\n| ignore N1,N2,N3,... | Sensor IDs to ignore. | | no |\n| ignore-status N1,N2,N3,... | Sensor IDs to ignore status (nominal/warning/critical). | | no |\n| -v | Print version and exit. | | no |\n| --help | Print usage message and exit. | | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:freeipmi]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\n\n###### Decrease data collection frequency\n\nBasic example decreasing data collection frequency. The minimum `update every` is 5 (enforced internally by the plugin). IPMI is slow and CPU hungry. So, once every 5 seconds is pretty acceptable.\n\n```yaml\n[plugin:freeipmi]\n update every = 10\n\n```\n###### Disable SEL collection\n\nAppend to `command options =` the options you need.\n\n{% details open=true summary=\"Config\" %}\n```yaml\n[plugin:freeipmi]\n command options = no-sel\n\n```\n{% /details %}\n###### Ignore specific sensors\n\nSpecific sensor IDs can be excluded from freeipmi tools by editing `/etc/freeipmi/freeipmi.conf` and setting the IDs to be ignored at `ipmi-sensors-exclude-record-ids`.\n\n**However this file is not used by `libipmimonitoring`** (the library used by Netdata's `freeipmi.plugin`).\n\nTo find the IDs to ignore, run the command `ipmimonitoring`. The first column is the wanted ID:\n\nID | Name | Type | State | Reading | Units | Event\n1 | Ambient Temp | Temperature | Nominal | 26.00 | C | 'OK'\n2 | Altitude | Other Units Based Sensor | Nominal | 480.00 | ft | 'OK'\n3 | Avg Power | Current | Nominal | 100.00 | W | 'OK'\n4 | Planar 3.3V | Voltage | Nominal | 3.29 | V | 'OK'\n5 | Planar 5V | Voltage | Nominal | 4.90 | V | 'OK'\n6 | Planar 12V | Voltage | Nominal | 11.99 | V | 'OK'\n7 | Planar VBAT | Voltage | Nominal | 2.95 | V | 'OK'\n8 | Fan 1A Tach | Fan | Nominal | 3132.00 | RPM | 'OK'\n9 | Fan 1B Tach | Fan | Nominal | 2150.00 | RPM | 'OK'\n10 | Fan 2A Tach | Fan | Nominal | 2494.00 | RPM | 'OK'\n11 | Fan 2B Tach | Fan | Nominal | 1825.00 | RPM | 'OK'\n12 | Fan 3A Tach | Fan | Nominal | 3538.00 | RPM | 'OK'\n13 | Fan 3B Tach | Fan | Nominal | 2625.00 | RPM | 'OK'\n14 | Fan 1 | Entity Presence | Nominal | N/A | N/A | 'Entity Present'\n15 | Fan 2 | Entity Presence | Nominal | N/A | N/A | 'Entity Present'\n...\n\n`freeipmi.plugin` supports the option `ignore` that accepts a comma separated list of sensor IDs to ignore. To configure it set on `netdata.conf`:\n\n\n{% details open=true summary=\"Config\" %}\n```yaml\n[plugin:freeipmi]\n command options = ignore 1,2,3,4,...\n\n```\n{% /details %}\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\nYou can run `freeipmi.plugin` with the debug option enabled, to troubleshoot issues with it. The output should give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `freeipmi.plugin` in debug mode:\n\n ```bash\n ./freeipmi.plugin 5 debug\n ```\n\n\n### kimpi0 CPU usage\n\nThere have been reports that kipmi is showing increased CPU when the IPMI is queried. To lower the CPU consumption of the system you can issue this command:\n\n```sh\necho 10 > /sys/module/ipmi_si/parameters/kipmid_max_busy_us\n```\n\nYou can also permanently set the above setting by creating the file `/etc/modprobe.d/ipmi.conf` with this content:\n\n```sh\n# prevent kipmi from consuming 100% CPU\noptions ipmi_si kipmid_max_busy_us=10\n```\n\nThis instructs the kernel IPMI module to pause for a tick between checking IPMI. Querying IPMI will be a lot slower now (e.g. several seconds for IPMI to respond), but `kipmi` will not use any noticeable CPU.\n\nYou can also use a higher number (this is the number of microseconds to poll IPMI for a response, before waiting for a tick).\n\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ ipmi_sensor_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ipmi.conf) | ipmi.sensor_state | IPMI sensor ${label:sensor} (${label:component}) state |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\nThe plugin does a speed test when it starts, to find out the duration needed by the IPMI processor to respond. Depending on the speed of your IPMI processor, charts may need several seconds to show up on the dashboard.\n\n\n### Per Intelligent Platform Management Interface (IPMI) instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipmi.sel | events | events |\n\n### Per sensor\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| sensor | The sensor name |\n| type | One of 45 recognized sensor types (Battery, Voltage...) |\n| component | One of 25 recognized components (Processor, Peripheral). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipmi.sensor_state | nominal, critical, warning, unknown | state |\n| ipmi.sensor_temperature_c | temperature | Celsius |\n| ipmi.sensor_temperature_f | temperature | Fahrenheit |\n| ipmi.sensor_voltage | voltage | Volts |\n| ipmi.sensor_ampere | ampere | Amps |\n| ipmi.sensor_fan_speed | rotations | RPM |\n| ipmi.sensor_power | power | Watts |\n| ipmi.sensor_reading_percent | percentage | % |\n\n",integration_type:"collector",id:"freeipmi.plugin-freeipmi-Intelligent_Platform_Management_Interface_(IPMI)",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/freeipmi.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-activemq",module_name:"activemq",plugin_name:"go.d.plugin",monitored_instance:{categories:["data-collection.databases"],icon_filename:"activemq.png",name:"ActiveMQ",link:"https://activemq.apache.org/"},alternative_monitored_instances:[],keywords:["message broker"],info_provided_to_referring_integrations:{description:""},related_resources:{integrations:{list:[{plugin_name:"go.d.plugin",module_name:"httpcheck"},{plugin_name:"apps.plugin",module_name:"apps"}]}}},overview:'# ActiveMQ\n\nPlugin: go.d.plugin\nModule: activemq\n\n## Overview\n\nThis collector monitors ActiveMQ queues and topics.\n\nIt collects metrics by sending HTTP requests to the Web Console API.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nActiveMQ can be monitored further using the following other integrations:\n\n- {% relatedResource id="go.d.plugin-httpcheck-HTTP_Endpoints" %}HTTP Endpoints{% /relatedResource %}\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis collector discovers instances running on the local host that provide metrics on port 8161.\nOn startup, it tries to collect metrics from:\n\n- http://localhost:8161\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **activemq** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **activemq**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/activemq.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8161 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| | webadmin | Webadmin root path. | admin | yes |\n| **Limits** | max_queues | Maximum number of queues to collect concurrently. | 50 | no |\n| | max_topics | Maximum number of topics to collect concurrently. | 50 | no |\n| **Filters** | queues_filter | Queue selector. Uses [simple patterns](https://github.com/netdata/netdata/blob/master/src/libnetdata/simple_pattern/README.md#simple-patterns). | | no |\n| | topics_filter | Topic selector. Uses [simple patterns](https://github.com/netdata/netdata/blob/master/src/libnetdata/simple_pattern/README.md#simple-patterns). | | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **activemq** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the activemq data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _activemq_ (or scroll the list) to locate the **activemq** collector.\n5. Click the **+** next to the **activemq** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/activemq.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/activemq.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8161\n webadmin: admin\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8161\n webadmin: admin\n username: foo\n password: bar\n\n```\n{% /details %}\n###### Filters and limits\n\nUsing filters and limits for queues and topics.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8161\n webadmin: admin\n max_queues: 100\n max_topics: 100\n queues_filter: \'!sandr* *\'\n topics_filter: \'!sandr* *\'\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8161\n webadmin: admin\n\n - name: remote\n url: http://192.0.2.1:8161\n webadmin: admin\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `activemq` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m activemq\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m activemq -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `activemq` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep activemq\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep activemq /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep activemq\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per ActiveMQ instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| activemq.messages | enqueued, dequeued | messages/s |\n| activemq.unprocessed_messages | unprocessed | messages |\n| activemq.consumers | consumers | consumers |\n\n",integration_type:"collector",id:"go.d.plugin-activemq-ActiveMQ",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/activemq/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-adaptecraid",plugin_name:"go.d.plugin",module_name:"adaptec_raid",monitored_instance:{name:"Adaptec RAID",link:"https://www.microchip.com/en-us/products/storage",icon_filename:"adaptec.svg",categories:["data-collection.storage"]},keywords:["storage","raid-controller","manage-disks"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Adaptec RAID\n\nPlugin: go.d.plugin\nModule: adaptec_raid\n\n## Overview\n\nMonitors the health of Adaptec Hardware RAID by tracking the status of logical and physical devices in your storage system.\nIt relies on the `arcconf` CLI tool but avoids directly executing the binary.\nInstead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment.\nThis approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.\n\nExecuted commands:\n- `arcconf GETCONFIG 1 LD`\n- `arcconf GETCONFIG 1 PD`\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n- BSD\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **adaptec_raid** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **adaptec_raid**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/adaptec_raid.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| timeout | arcconf binary execution timeout. | 2 | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **adaptec_raid** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the adaptec_raid data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _adaptec_raid_ (or scroll the list) to locate the **adaptec_raid** collector.\n5. Click the **+** next to the **adaptec_raid** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/adaptec_raid.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/adaptec_raid.conf\n```\n\n##### Examples\n\n###### Custom update_every\n\nAllows you to override the default data collection interval.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: adaptec_raid\n update_every: 5 # Collect Adaptec Hardware RAID statistics every 5 seconds\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `adaptec_raid` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m adaptec_raid\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m adaptec_raid -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `adaptec_raid` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep adaptec_raid\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep adaptec_raid /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep adaptec_raid\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ adaptec_raid_ld_health_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/adaptec_raid.conf) | adaptecraid.logical_device_status | Adaptec RAID logical device (number ${label:ld_number} name ${label:ld_name}) health status is critical |\n| [ adaptec_raid_pd_health_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/adaptec_raid.conf) | adaptecraid.physical_device_state | Adaptec RAID physical device (number ${label:pd_number} location ${label:location}) health state is critical |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per logical device\n\nThese metrics refer to the Logical Device (LD).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| ld_number | Logical device index number |\n| ld_name | Logical device name |\n| raid_level | RAID level |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| adaptecraid.logical_device_status | ok, critical | status |\n\n### Per physical device\n\nThese metrics refer to the Physical Device (PD).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| pd_number | Physical device index number |\n| location | Physical device location (e.g. Connector 0, Device 1) |\n| vendor | Physical device vendor |\n| model | Physical device model |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| adaptecraid.physical_device_state | ok, critical | status |\n| adaptecraid.physical_device_smart_warnings | smart | warnings |\n| adaptecraid.physical_device_temperature | temperature | Celsius |\n\n",integration_type:"collector",id:"go.d.plugin-adaptec_raid-Adaptec_RAID",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/adaptecraid/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"ap",monitored_instance:{name:"Access Points",link:"",categories:["data-collection.networking"],icon_filename:"network-wired.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["ap","access","point","wireless","network"]},overview:"# Access Points\n\nPlugin: go.d.plugin\nModule: ap\n\n## Overview\n\nThis collector monitors various wireless access point metrics like connected clients, bandwidth, packets, transmit issues, signal strength, and bitrate for each device and its associated SSID.\n\n\nThis tool uses the `iw` command-line utility to discover nearby access points. It starts by running `iw dev`, which provides information about all wireless interfaces. Then, for each interface identified as an access point (type AP), the `iw INTERFACE station dump` command is executed to gather relevant metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin is able to auto-detect any access points on your Linux machine.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **ap** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **ap**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/ap.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### `iw` utility.\n\nMake sure the `iw` utility is installed.\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| binary_path | Path to the `iw` binary. If an absolute path is provided, the collector will use it directly; otherwise, it will search for the binary in directories specified in the PATH environment variable. | /usr/sbin/iw | yes |\n| timeout | Timeout for executing the binary, specified in seconds. | 2 | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **ap** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the ap data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _ap_ (or scroll the list) to locate the **ap** collector.\n5. Click the **+** next to the **ap** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/ap.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/ap.conf\n```\n\n##### Examples\n\n###### Custom binary path\n\nThe executable is not in the directories specified in the PATH environment variable.\n\n```yaml\njobs:\n - name: custom_iw\n binary_path: /usr/local/sbin/iw\n\n```\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `ap` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m ap\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m ap -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `ap` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep ap\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep ap /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep ap\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per wireless device\n\nThese metrics refer to the entire monitored application.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device | Wireless interface name |\n| ssid | SSID |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ap.clients | clients | clients |\n| ap.net | received, sent | kilobits/s |\n| ap.packets | received, sent | packets/s |\n| ap.issues | retries, failures | issues/s |\n| ap.signal | average signal | dBm |\n| ap.bitrate | receive, transmit | Mbps |\n\n",integration_type:"collector",id:"go.d.plugin-ap-Access_Points",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/ap/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-apache",plugin_name:"go.d.plugin",module_name:"apache",monitored_instance:{name:"Apache",link:"https://httpd.apache.org/",icon_filename:"apache.svg",categories:["data-collection.web-servers-and-proxies"]},keywords:["webserver"],related_resources:{integrations:{list:[{plugin_name:"go.d.plugin",module_name:"web_log"},{plugin_name:"go.d.plugin",module_name:"httpcheck"},{plugin_name:"apps.plugin",module_name:"apps"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# Apache\n\nPlugin: go.d.plugin\nModule: apache\n\n## Overview\n\nThis collector monitors the activity and performance of Apache servers, and collects metrics such as the number of connections, workers, requests and more.\n\n\nIt sends HTTP requests to the Apache location [server-status](https://httpd.apache.org/docs/2.4/mod/mod_status.html), \nwhich is a built-in location that provides metrics about the Apache server.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nApache can be monitored further using the following other integrations:\n\n- {% relatedResource id="go.d.plugin-web_log-Web_server_log_files" %}Web server log files{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-httpcheck-HTTP_Endpoints" %}HTTP Endpoints{% /relatedResource %}\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Apache instances running on localhost that are listening on port 80.\nOn startup, it tries to collect metrics from:\n\n- http://localhost/server-status?auto\n- http://127.0.0.1/server-status?auto\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **apache** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **apache**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/apache.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable Apache status support\n\n- Enable and configure [status_module](https://httpd.apache.org/docs/2.4/mod/mod_status.html).\n- Ensure that you have [ExtendedStatus](https://httpd.apache.org/docs/2.4/mod/mod_status.html#troubleshoot) set on (enabled by default since Apache v2.3.6).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1/server-status?auto | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **apache** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the apache data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _apache_ (or scroll the list) to locate the **apache** collector.\n5. Click the **+** next to the **apache** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/apache.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/apache.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/server-status?auto\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/server-status?auto\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nApache with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1/server-status?auto\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/server-status?auto\n\n - name: remote\n url: http://192.0.2.1/server-status?auto\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `apache` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m apache\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m apache -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `apache` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep apache\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep apache /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep apache\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\nAll metrics available only if [ExtendedStatus](https://httpd.apache.org/docs/2.4/mod/core.html#extendedstatus) is on.\n\n\n### Per Apache instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit | Basic | Extended |\n|:------|:----------|:----|:---:|:---:|\n| apache.connections | connections | connections | \u2022 | \u2022 |\n| apache.conns_async | keepalive, closing, writing | connections | \u2022 | \u2022 |\n| apache.workers | idle, busy | workers | \u2022 | \u2022 |\n| apache.scoreboard | waiting, starting, reading, sending, keepalive, dns_lookup, closing, logging, finishing, idle_cleanup, open | connections | \u2022 | \u2022 |\n| apache.requests | requests | requests/s | | \u2022 |\n| apache.net | sent | kilobit/s | | \u2022 |\n| apache.reqpersec | requests | requests/s | | \u2022 |\n| apache.bytespersec | served | KiB/s | | \u2022 |\n| apache.bytesperreq | size | KiB | | \u2022 |\n| apache.uptime | uptime | seconds | | \u2022 |\n\n",integration_type:"collector",id:"go.d.plugin-apache-Apache",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/apache/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-httpd",plugin_name:"go.d.plugin",module_name:"apache",monitored_instance:{name:"HTTPD",link:"https://httpd.apache.org/",icon_filename:"apache.svg",categories:["data-collection.web-servers-and-proxies"]},keywords:["webserver"],related_resources:{integrations:{list:[{plugin_name:"go.d.plugin",module_name:"web_log"},{plugin_name:"go.d.plugin",module_name:"httpcheck"},{plugin_name:"apps.plugin",module_name:"apps"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# HTTPD\n\nPlugin: go.d.plugin\nModule: apache\n\n## Overview\n\nThis collector monitors the activity and performance of Apache servers, and collects metrics such as the number of connections, workers, requests and more.\n\n\nIt sends HTTP requests to the Apache location [server-status](https://httpd.apache.org/docs/2.4/mod/mod_status.html), \nwhich is a built-in location that provides metrics about the Apache server.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nHTTPD can be monitored further using the following other integrations:\n\n- {% relatedResource id="go.d.plugin-web_log-Web_server_log_files" %}Web server log files{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-httpcheck-HTTP_Endpoints" %}HTTP Endpoints{% /relatedResource %}\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Apache instances running on localhost that are listening on port 80.\nOn startup, it tries to collect metrics from:\n\n- http://localhost/server-status?auto\n- http://127.0.0.1/server-status?auto\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **apache** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **apache**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/apache.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable Apache status support\n\n- Enable and configure [status_module](https://httpd.apache.org/docs/2.4/mod/mod_status.html).\n- Ensure that you have [ExtendedStatus](https://httpd.apache.org/docs/2.4/mod/mod_status.html#troubleshoot) set on (enabled by default since Apache v2.3.6).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1/server-status?auto | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **apache** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the apache data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _apache_ (or scroll the list) to locate the **apache** collector.\n5. Click the **+** next to the **apache** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/apache.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/apache.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/server-status?auto\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/server-status?auto\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nApache with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1/server-status?auto\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/server-status?auto\n\n - name: remote\n url: http://192.0.2.1/server-status?auto\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `apache` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m apache\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m apache -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `apache` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep apache\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep apache /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep apache\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\nAll metrics available only if [ExtendedStatus](https://httpd.apache.org/docs/2.4/mod/core.html#extendedstatus) is on.\n\n\n### Per Apache instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit | Basic | Extended |\n|:------|:----------|:----|:---:|:---:|\n| apache.connections | connections | connections | \u2022 | \u2022 |\n| apache.conns_async | keepalive, closing, writing | connections | \u2022 | \u2022 |\n| apache.workers | idle, busy | workers | \u2022 | \u2022 |\n| apache.scoreboard | waiting, starting, reading, sending, keepalive, dns_lookup, closing, logging, finishing, idle_cleanup, open | connections | \u2022 | \u2022 |\n| apache.requests | requests | requests/s | | \u2022 |\n| apache.net | sent | kilobit/s | | \u2022 |\n| apache.reqpersec | requests | requests/s | | \u2022 |\n| apache.bytespersec | served | KiB/s | | \u2022 |\n| apache.bytesperreq | size | KiB | | \u2022 |\n| apache.uptime | uptime | seconds | | \u2022 |\n\n",integration_type:"collector",id:"go.d.plugin-apache-HTTPD",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/apache/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-apcupsd",plugin_name:"go.d.plugin",module_name:"apcupsd",monitored_instance:{name:"APC UPS",link:"https://www.apc.com",icon_filename:"apc.svg",categories:["data-collection.hardware-and-sensors"]},keywords:["ups","apcupsd","apc"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# APC UPS\n\nPlugin: go.d.plugin\nModule: apcupsd\n\n## Overview\n\nThis collector monitors Uninterruptible Power Supplies by polling the Apcupsd daemon.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Apcupsd instances running on localhost that are listening on port 3551.\nOn startup, it tries to collect metrics from:\n\n- 127.0.0.1:3551\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **apcupsd** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **apcupsd**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/apcupsd.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | apcupsd daemon address (`IP:PORT`). | 127.0.0.1:3551 | yes |\n| | timeout | Connection, read, write, and name resolution timeout (seconds). | 2 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **apcupsd** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the apcupsd data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _apcupsd_ (or scroll the list) to locate the **apcupsd** collector.\n5. Click the **+** next to the **apcupsd** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/apcupsd.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/apcupsd.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:3551\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:3551\n\n - name: remote\n address: 203.0.113.0:3551\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `apcupsd` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m apcupsd\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m apcupsd -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `apcupsd` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep apcupsd\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep apcupsd /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep apcupsd\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ apcupsd_ups_load_capacity ](https://github.com/netdata/netdata/blob/master/src/health/health.d/apcupsd.conf) | apcupsd.ups_load_capacity_utilization | APC UPS average load over the last 10 minutes |\n| [ apcupsd_ups_battery_charge ](https://github.com/netdata/netdata/blob/master/src/health/health.d/apcupsd.conf) | apcupsd.ups_battery_charge | APC UPS average battery charge over the last minute |\n| [ apcupsd_last_collected_secs ](https://github.com/netdata/netdata/blob/master/src/health/health.d/apcupsd.conf) | apcupsd.ups_status | APC UPS number of seconds since the last successful data collection |\n| [ apcupsd_ups_selftest_warning ](https://github.com/netdata/netdata/blob/master/src/health/health.d/apcupsd.conf) | apcupsd.ups_selftest | APC UPS self-test failed due to insufficient battery capacity or due to overload |\n| [ apcupsd_ups_status_onbatt ](https://github.com/netdata/netdata/blob/master/src/health/health.d/apcupsd.conf) | apcupsd.ups_status | APC UPS has switched to battery power because the input power has failed |\n| [ apcupsd_ups_status_overload ](https://github.com/netdata/netdata/blob/master/src/health/health.d/apcupsd.conf) | apcupsd.ups_status | APC UPS is overloaded and cannot supply enough power to the load |\n| [ apcupsd_ups_status_lowbatt ](https://github.com/netdata/netdata/blob/master/src/health/health.d/apcupsd.conf) | apcupsd.ups_status | APC UPS battery is low and needs to be recharged |\n| [ apcupsd_ups_status_replacebatt ](https://github.com/netdata/netdata/blob/master/src/health/health.d/apcupsd.conf) | apcupsd.ups_status | APC UPS battery has reached the end of its lifespan and needs to be replaced |\n| [ apcupsd_ups_status_nobatt ](https://github.com/netdata/netdata/blob/master/src/health/health.d/apcupsd.conf) | apcupsd.ups_status | APC UPS has no battery |\n| [ apcupsd_ups_status_commlost ](https://github.com/netdata/netdata/blob/master/src/health/health.d/apcupsd.conf) | apcupsd.ups_status | APC UPS communication link is lost |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per ups\n\nThese metrics refer to the UPS unit.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| apcupsd.ups_status | TRIM, BOOST, CAL, ONLINE, ONBATT, OVERLOAD, LOWBATT, REPLACEBATT, NOBATT, SLAVE, SLAVEDOWN, COMMLOST, SHUTTING_DOWN | status |\n| apcupsd.ups_selftest | NO, NG, WN, IP, OK, BT, UNK | status |\n| apcupsd.ups_battery_charge | charge | percent |\n| apcupsd.ups_battery_time_remaining | timeleft | seconds |\n| apcupsd.ups_battery_time_since_replacement | since_replacement | seconds |\n| apcupsd.ups_battery_voltage | voltage, nominal_voltage | Volts |\n| apcupsd.ups_load_capacity_utilization | load | percent |\n| apcupsd.ups_load | load | Watts |\n| apcupsd.ups_temperature | temperature | Celsius |\n| apcupsd.ups_input_voltage | voltage, min_voltage, max_voltage | Volts |\n| apcupsd.ups_input_frequency | frequency | Hz |\n| apcupsd.ups_output_voltage | voltage | Volts |\n\n",integration_type:"collector",id:"go.d.plugin-apcupsd-APC_UPS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/apcupsd/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-api_management",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure API Management",link:"https://learn.microsoft.com/azure/api-management/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","api","management","gateway","apim"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure API Management\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure API Management with metrics covering:\n\n- **Requests** -- gateway request rate\n- **Latency** -- request duration (overall and backend response time)\n- **Compute** -- gateway CPU and memory utilization\n- **Capacity** -- capacity utilization percentage\n- **Events** -- EventHub events (successful/failed/dropped/rejected/throttled/timed out), EventHub bytes sent\n- **WebSockets** -- WebSocket connection attempts, WebSocket messages\n- **Network** -- network connectivity status\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_api_management_capacity ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_api_management.conf) | azure_monitor.api_management.capacity | APIM capacity on ${label:resource_name} |\n| [ am_api_management_gateway_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_api_management.conf) | azure_monitor.api_management.gateway_cpu | APIM gateway CPU on ${label:resource_name} |\n| [ am_api_management_gateway_memory ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_api_management.conf) | azure_monitor.api_management.gateway_memory | APIM gateway memory on ${label:resource_name} |\n| [ am_api_management_request_duration ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_api_management.conf) | azure_monitor.api_management.request_duration | APIM request duration on ${label:resource_name} |\n| [ am_api_management_backend_duration ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_api_management.conf) | azure_monitor.api_management.request_duration | APIM backend duration on ${label:resource_name} |\n| [ am_api_management_network_connectivity ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_api_management.conf) | azure_monitor.api_management.network_connectivity | APIM network connectivity on ${label:resource_name} |\n| [ am_api_management_eventhub_failed_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_api_management.conf) | azure_monitor.api_management.eventhub_events | APIM EventHub failed events on ${label:resource_name} |\n| [ am_api_management_eventhub_dropped_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_api_management.conf) | azure_monitor.api_management.eventhub_events | APIM EventHub dropped events on ${label:resource_name} |\n| [ am_api_management_eventhub_rejected_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_api_management.conf) | azure_monitor.api_management.eventhub_events | APIM EventHub rejected events on ${label:resource_name} |\n| [ am_api_management_eventhub_throttled_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_api_management.conf) | azure_monitor.api_management.eventhub_events | APIM EventHub throttled events on ${label:resource_name} |\n| [ am_api_management_eventhub_timedout_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_api_management.conf) | azure_monitor.api_management.eventhub_events | APIM EventHub timed out events on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.api_management.capacity | capacity | percentage |\n| azure_monitor.api_management.gateway_cpu | cpu | percentage |\n| azure_monitor.api_management.gateway_memory | memory | percentage |\n| azure_monitor.api_management.requests | requests | requests/s |\n| azure_monitor.api_management.request_duration | overall, backend | milliseconds |\n| azure_monitor.api_management.eventhub_events | total, successful, failed, dropped, rejected, throttled, timed_out | events/s |\n| azure_monitor.api_management.eventhub_bytes | sent | bytes/s |\n| azure_monitor.api_management.websocket_connections | connection_attempts | attempts/s |\n| azure_monitor.api_management.websocket_messages | messages | messages/s |\n| azure_monitor.api_management.network_connectivity | connectivity | status |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_API_Management",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-app_service",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure App Service",link:"https://learn.microsoft.com/azure/app-service/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","app","service","web","webapp","paas"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure App Service\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure App Service with metrics covering:\n\n- **Requests** -- HTTP request rate, response status codes (2xx/3xx/4xx/5xx), error detail (401/403/404/406)\n- **Performance** -- response time, request queue depth\n- **Compute** -- CPU utilization, CPU time consumed\n- **Memory** -- memory usage (average working set, working set, private bytes)\n- **Network** -- network traffic (received/sent), I/O throughput (read/write/other)\n- **I/O** -- I/O operations (read/write/other), file handles\n- **.NET runtime** -- threads, GC collections (gen0/gen1/gen2), loaded assemblies, app domains\n- **Functions** -- function executions and execution units (MB-ms), always-ready and on-demand units\n- **Health** -- health check status\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_app_service_health_check ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_app_service.conf) | azure_monitor.app_service.health | App Service health on ${label:resource_name} |\n| [ am_app_service_http_5xx_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_app_service.conf) | azure_monitor.app_service.http_status | App Service 5xx errors on ${label:resource_name} |\n| [ am_app_service_response_time ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_app_service.conf) | azure_monitor.app_service.response_time | App Service response time on ${label:resource_name} |\n| [ am_app_service_cpu_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_app_service.conf) | azure_monitor.app_service.cpu | App Service CPU on ${label:resource_name} |\n| [ am_app_service_request_queue ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_app_service.conf) | azure_monitor.app_service.request_queue | App Service request queue on ${label:resource_name} |\n| [ am_app_service_http_4xx_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_app_service.conf) | azure_monitor.app_service.http_status | App Service 4xx errors on ${label:resource_name} |\n| [ am_app_service_http_403_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_app_service.conf) | azure_monitor.app_service.http_error_detail | App Service 403 forbidden on ${label:resource_name} |\n| [ am_app_service_http_401_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_app_service.conf) | azure_monitor.app_service.http_error_detail | App Service 401 unauthorized on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.app_service.requests | requests | requests/s |\n| azure_monitor.app_service.response_time | average | seconds |\n| azure_monitor.app_service.http_status | 2xx, 3xx, 4xx, 5xx | responses/s |\n| azure_monitor.app_service.http_error_detail | 101_websocket, 401_unauthorized, 403_forbidden, 404_not_found, 406_not_acceptable | responses/s |\n| azure_monitor.app_service.cpu | average | percentage |\n| azure_monitor.app_service.cpu_time | total | seconds |\n| azure_monitor.app_service.memory_usage | average_working_set, working_set, private | bytes |\n| azure_monitor.app_service.health | average | percentage |\n| azure_monitor.app_service.network_traffic | received, sent | bytes/s |\n| azure_monitor.app_service.connections | average | connections |\n| azure_monitor.app_service.io_throughput | read, write, other | bytes/s |\n| azure_monitor.app_service.io_operations | read, write, other | operations/s |\n| azure_monitor.app_service.threads | average | threads |\n| azure_monitor.app_service.handles | average | handles |\n| azure_monitor.app_service.gc_collections | gen0, gen1, gen2 | collections/s |\n| azure_monitor.app_service.function_executions | total | executions/s |\n| azure_monitor.app_service.function_execution_units | total | MB-milliseconds/s |\n| azure_monitor.app_service.always_ready_function_executions | total | executions/s |\n| azure_monitor.app_service.always_ready_function_execution_units | total | MB-milliseconds/s |\n| azure_monitor.app_service.always_ready_units | total | units |\n| azure_monitor.app_service.on_demand_function_executions | total | executions/s |\n| azure_monitor.app_service.on_demand_function_execution_units | total | MB-milliseconds/s |\n| azure_monitor.app_service.request_queue | queued | requests |\n| azure_monitor.app_service.instances | running | instances |\n| azure_monitor.app_service.assemblies | loaded | assemblies |\n| azure_monitor.app_service.app_domains | loaded, unloaded | domains |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_App_Service",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-application_gateway",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Application Gateway",link:"https://learn.microsoft.com/azure/application-gateway/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","application","gateway","load","balancer","waf"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Application Gateway\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Application Gateway with metrics covering:\n\n- **Traffic** -- throughput, traffic volume (received/sent), request rates (total/failed)\n- **Response** -- gateway and backend response status codes\n- **Backend** -- backend health (healthy/unhealthy hosts), backend latency (connect, first byte, last byte)\n- **Client** -- client latency (total time, client RTT)\n- **Connections** -- current and new connections, TLS connections, WebSocket connections\n- **Capacity** -- capacity units, compute units, billed/fixed billed, CPU utilization\n- **WAF** -- WAF requests (total/blocked/matched), rule matches (managed/custom/bot), challenges, penalty box\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_appgw_failed_requests ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_gateway.conf) | azure_monitor.application_gateway.requests | App Gateway failed requests on ${label:resource_name} |\n| [ am_appgw_unhealthy_hosts ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_gateway.conf) | azure_monitor.application_gateway.backend_health | App Gateway unhealthy backends on ${label:resource_name} |\n| [ am_appgw_backend_connect_time ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_gateway.conf) | azure_monitor.application_gateway.backend_latency | App Gateway backend connect time on ${label:resource_name} |\n| [ am_appgw_backend_first_byte ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_gateway.conf) | azure_monitor.application_gateway.backend_latency | App Gateway backend TTFB on ${label:resource_name} |\n| [ am_appgw_total_time ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_gateway.conf) | azure_monitor.application_gateway.client_latency | App Gateway total request time on ${label:resource_name} |\n| [ am_appgw_cpu_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_gateway.conf) | azure_monitor.application_gateway.cpu | App Gateway CPU utilization on ${label:resource_name} |\n| [ am_appgw_waf_blocked_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_gateway.conf) | azure_monitor.application_gateway.waf_requests | App Gateway WAF block ratio on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.application_gateway.throughput | average | bytes/s |\n| azure_monitor.application_gateway.traffic_volume | received, sent | bytes/s |\n| azure_monitor.application_gateway.requests | total, failed | requests/s |\n| azure_monitor.application_gateway.response_status | gateway, backend | responses/s |\n| azure_monitor.application_gateway.backend_health | healthy, unhealthy | hosts |\n| azure_monitor.application_gateway.backend_request_load | per_healthy_host | requests |\n| azure_monitor.application_gateway.backend_latency | connect, first_byte, last_byte | milliseconds |\n| azure_monitor.application_gateway.client_latency | total_time, client_rtt | milliseconds |\n| azure_monitor.application_gateway.current_connections | current | connections |\n| azure_monitor.application_gateway.new_connections | average | connections/s |\n| azure_monitor.application_gateway.websocket_connections | active | connections |\n| azure_monitor.application_gateway.websocket_close_codes | total | connections/s |\n| azure_monitor.application_gateway.capacity | capacity, compute, billed, fixed_billed | units |\n| azure_monitor.application_gateway.cpu | average | percentage |\n| azure_monitor.application_gateway.tls_connections | total | connections/s |\n| azure_monitor.application_gateway.waf_requests | total, blocked, matched | requests/s |\n| azure_monitor.application_gateway.waf_rule_matches | managed, custom, bot | matches/s |\n| azure_monitor.application_gateway.waf_challenges | captcha, js_challenge | requests/s |\n| azure_monitor.application_gateway.waf_penalty_box | size | IPs |\n| azure_monitor.application_gateway.waf_penalty_box_hits | total | hits/s |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Application_Gateway",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-application_insights",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Application Insights",link:"https://learn.microsoft.com/azure/azure-monitor/app/app-insights-overview",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","application","insights","apm","monitoring","telemetry"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Application Insights\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Application Insights with metrics covering:\n\n- **Availability** -- availability test percentage, test duration\n- **Requests** -- server request rate, HTTP request rate, HTTP request execution time, request queue depth\n- **Responses** -- server response time, server requests (total/failed)\n- **Dependencies** -- dependency calls (total/failed), dependency duration\n- **Exceptions** -- exception rate, exceptions by source (total/browser/server)\n- **Browser** -- page load time, browser timing breakdown (network/send/receive/processing), page views\n- **Process** -- CPU utilization (process/processor), memory (available/private), I/O rate\n- **Traces** -- trace volume\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_appinsights_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_insights.conf) | azure_monitor.application_insights.availability_percentage | App Insights availability on ${label:resource_name} |\n| [ am_appinsights_availability_duration ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_insights.conf) | azure_monitor.application_insights.availability_duration | App Insights availability test duration on ${label:resource_name} |\n| [ am_appinsights_failed_requests ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_insights.conf) | azure_monitor.application_insights.server_requests | App Insights failed requests on ${label:resource_name} |\n| [ am_appinsights_response_time ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_insights.conf) | azure_monitor.application_insights.server_response_time | App Insights server response time on ${label:resource_name} |\n| [ am_appinsights_failed_dependencies ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_insights.conf) | azure_monitor.application_insights.dependency_calls | App Insights failed dependencies on ${label:resource_name} |\n| [ am_appinsights_dependency_duration ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_insights.conf) | azure_monitor.application_insights.dependency_duration | App Insights dependency duration on ${label:resource_name} |\n| [ am_appinsights_exception_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_insights.conf) | azure_monitor.application_insights.exception_rate | App Insights exception rate on ${label:resource_name} |\n| [ am_appinsights_server_exceptions ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_insights.conf) | azure_monitor.application_insights.exceptions | App Insights server exceptions on ${label:resource_name} |\n| [ am_appinsights_browser_page_load_time ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_insights.conf) | azure_monitor.application_insights.browser_page_load_time | App Insights browser page load time on ${label:resource_name} |\n| [ am_appinsights_process_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_insights.conf) | azure_monitor.application_insights.cpu_utilization | App Insights process CPU on ${label:resource_name} |\n| [ am_appinsights_processor_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_insights.conf) | azure_monitor.application_insights.cpu_utilization | App Insights processor CPU on ${label:resource_name} |\n| [ am_appinsights_http_execution_time ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_insights.conf) | azure_monitor.application_insights.http_request_execution_time | App Insights HTTP execution time on ${label:resource_name} |\n| [ am_appinsights_http_queue_length ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_insights.conf) | azure_monitor.application_insights.http_request_queue | App Insights HTTP request queue on ${label:resource_name} |\n| [ am_appinsights_page_view_load_time ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_application_insights.conf) | azure_monitor.application_insights.page_view_load_time | App Insights page view load time on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.application_insights.availability_percentage | average | percentage |\n| azure_monitor.application_insights.availability_tests | tests | tests/s |\n| azure_monitor.application_insights.availability_duration | average | milliseconds |\n| azure_monitor.application_insights.server_requests | total, failed | requests/s |\n| azure_monitor.application_insights.server_request_rate | average | requests/s |\n| azure_monitor.application_insights.server_response_time | average | milliseconds |\n| azure_monitor.application_insights.dependency_calls | total, failed | calls/s |\n| azure_monitor.application_insights.dependency_duration | average | milliseconds |\n| azure_monitor.application_insights.exceptions | total, browser, server | exceptions/s |\n| azure_monitor.application_insights.browser_page_load_time | total | milliseconds |\n| azure_monitor.application_insights.browser_timing_breakdown | network, send, receive, processing | milliseconds |\n| azure_monitor.application_insights.cpu_utilization | process, processor | percentage |\n| azure_monitor.application_insights.memory | available, private | bytes |\n| azure_monitor.application_insights.process_io_rate | average | bytes/s |\n| azure_monitor.application_insights.exception_rate | average | exceptions/s |\n| azure_monitor.application_insights.http_request_execution_time | average | milliseconds |\n| azure_monitor.application_insights.http_request_queue | queued | requests |\n| azure_monitor.application_insights.http_request_rate | average | requests/s |\n| azure_monitor.application_insights.page_views | views | views/s |\n| azure_monitor.application_insights.page_view_load_time | average | milliseconds |\n| azure_monitor.application_insights.traces | traces | traces/s |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Application_Insights",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-redis_cache",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Cache for Redis",link:"https://learn.microsoft.com/azure/azure-cache-for-redis/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","redis","cache","memory","nosql"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Cache for Redis\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Cache for Redis with metrics covering:\n\n- **Performance** -- operations/second, command processing rates (get/set), cache hit/miss rates\n- **Latency** -- average latency, P99 latency\n- **Compute** -- CPU utilization, server load\n- **Memory** -- memory usage (used/RSS), memory utilization\n- **Connections** -- connected clients, connection rate (created/closed)\n- **Keys** -- total keys, evicted keys, expired keys, miss rate\n- **Throughput** -- read/write bytes per second\n- **Geo-replication** -- replication health, connectivity lag, sync events, data sync offset\n- **Per-shard** -- instance-level breakdowns for hit rate, clients, commands, server load, keys, operations, throughput\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_redis_cache_server_load ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_redis_cache.conf) | azure_monitor.redis_cache.server_load | Redis server load on ${label:resource_name} |\n| [ am_redis_cache_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_redis_cache.conf) | azure_monitor.redis_cache.cpu | Redis CPU on ${label:resource_name} |\n| [ am_redis_cache_memory_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_redis_cache.conf) | azure_monitor.redis_cache.memory_utilization | Redis memory utilization on ${label:resource_name} |\n| [ am_redis_cache_miss_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_redis_cache.conf) | azure_monitor.redis_cache.miss_rate | Redis cache miss rate on ${label:resource_name} |\n| [ am_redis_cache_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_redis_cache.conf) | azure_monitor.redis_cache.errors | Redis errors on ${label:resource_name} |\n| [ am_redis_cache_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_redis_cache.conf) | azure_monitor.redis_cache.latency | Redis average latency on ${label:resource_name} |\n| [ am_redis_cache_latency_p99 ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_redis_cache.conf) | azure_monitor.redis_cache.latency_p99 | Redis P99 latency on ${label:resource_name} |\n| [ am_redis_cache_evicted_keys ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_redis_cache.conf) | azure_monitor.redis_cache.key_events | Redis key evictions on ${label:resource_name} |\n| [ am_redis_cache_geo_replication_health ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_redis_cache.conf) | azure_monitor.redis_cache.geo_replication_health | Redis geo-replication health on ${label:resource_name} |\n| [ am_redis_cache_geo_replication_lag ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_redis_cache.conf) | azure_monitor.redis_cache.geo_replication_lag | Redis geo-replication lag on ${label:resource_name} |\n| [ am_redis_cache_geo_replication_sync_offset ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_redis_cache.conf) | azure_monitor.redis_cache.geo_replication_sync_offset | Redis geo-replication sync offset on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.redis_cache.cache_hits | hits, misses | operations/s |\n| azure_monitor.redis_cache.throughput | read, write | bytes/s |\n| azure_monitor.redis_cache.server_load | maximum | percentage |\n| azure_monitor.redis_cache.cpu | maximum | percentage |\n| azure_monitor.redis_cache.memory_usage | used, rss | bytes |\n| azure_monitor.redis_cache.memory_utilization | maximum | percentage |\n| azure_monitor.redis_cache.clients | maximum | clients |\n| azure_monitor.redis_cache.operations | maximum | operations/s |\n| azure_monitor.redis_cache.commands | total | commands/s |\n| azure_monitor.redis_cache.command_types | get, set | commands/s |\n| azure_monitor.redis_cache.latency | average | microseconds |\n| azure_monitor.redis_cache.key_events | evicted, expired | keys/s |\n| azure_monitor.redis_cache.total_keys | maximum | keys |\n| azure_monitor.redis_cache.errors | maximum | errors |\n| azure_monitor.redis_cache.miss_rate | miss_rate | percentage |\n| azure_monitor.redis_cache.latency_p99 | p99 | microseconds |\n| azure_monitor.redis_cache.connection_rate | created, closed | connections/s |\n| azure_monitor.redis_cache.aad_clients | maximum | clients |\n| azure_monitor.redis_cache.instance_cache_hits | hits, misses | operations/s |\n| azure_monitor.redis_cache.instance_throughput | read, write | bytes/s |\n| azure_monitor.redis_cache.instance_server_load | server_load, cpu | percentage |\n| azure_monitor.redis_cache.instance_memory_usage | used, rss | bytes |\n| azure_monitor.redis_cache.instance_memory_utilization | maximum | percentage |\n| azure_monitor.redis_cache.instance_clients | maximum | clients |\n| azure_monitor.redis_cache.instance_operations | maximum | operations/s |\n| azure_monitor.redis_cache.instance_commands | total, get, set | commands/s |\n| azure_monitor.redis_cache.instance_total_keys | maximum | keys |\n| azure_monitor.redis_cache.instance_key_events | evicted, expired | keys/s |\n| azure_monitor.redis_cache.geo_replication_lag | average | seconds |\n| azure_monitor.redis_cache.geo_replication_sync_offset | average | bytes |\n| azure_monitor.redis_cache.geo_replication_sync_events | started, finished | events/s |\n| azure_monitor.redis_cache.geo_replication_health | average | status |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Cache_for_Redis",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-cognitive_services",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Cognitive Services",link:"https://learn.microsoft.com/azure/ai-services/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","cognitive","ai","openai","gpt","ml"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Cognitive Services\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure AI and Cognitive Services with metrics covering:\n\n- **API calls** -- total calls (successful/blocked/token), model requests, OpenAI requests\n- **Errors** -- total, client, and server errors, rate limiting events\n- **Latency** -- service latency, model latency (time to response/first token/between tokens/last byte)\n- **Tokens** -- model token usage (input/output/total), OpenAI token usage (prompt/generated), cache tokens (read/write)\n- **Availability** -- service availability, model availability, OpenAI availability\n- **Content safety** -- content moderation calls (text/image), safety system events, harmful/blocked requests\n- **Speech** -- transcription, translation, synthesis, speaker recognition, voice training/hosting\n- **Vision** -- computer vision and custom vision transactions, images stored, training time\n- **Translator** -- text and document translation (standard/custom)\n- **Provisioned** -- model provisioned utilization, OpenAI provisioned-managed utilization\n- **Fine-tuning** -- training hours\n- **Personalizer** -- events, rewards, actions, feature cardinality\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_cognitive_services_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.availability | Cognitive Services availability on ${label:resource_name} |\n| [ am_cognitive_services_server_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.errors | Cognitive Services server errors on ${label:resource_name} |\n| [ am_cognitive_services_client_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.errors | Cognitive Services client errors on ${label:resource_name} |\n| [ am_cognitive_services_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.latency | Cognitive Services latency on ${label:resource_name} |\n| [ am_cognitive_services_rate_limit ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.rate_limit | Cognitive Services rate limiting on ${label:resource_name} |\n| [ am_cognitive_services_blocked_calls ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.calls | Cognitive Services blocked calls on ${label:resource_name} |\n| [ am_cognitive_services_openai_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.openai_availability | Azure OpenAI availability on ${label:resource_name} |\n| [ am_cognitive_services_openai_time_to_response ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.openai_latency | Azure OpenAI time to response on ${label:resource_name} |\n| [ am_cognitive_services_openai_time_to_first_token ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.openai_latency | Azure OpenAI time to first token on ${label:resource_name} |\n| [ am_cognitive_services_openai_provisioned_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.openai_provisioned_utilization | Azure OpenAI provisioned utilization on ${label:resource_name} |\n| [ am_cognitive_services_model_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.model_availability | Model availability on ${label:resource_name} |\n| [ am_cognitive_services_model_time_to_response ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.model_latency | Model time to response on ${label:resource_name} |\n| [ am_cognitive_services_model_time_to_first_token ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.model_latency | Model time to first token on ${label:resource_name} |\n| [ am_cognitive_services_model_provisioned_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.model_provisioned_utilization | Model provisioned utilization on ${label:resource_name} |\n| [ am_cognitive_services_harmful_requests ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.content_safety_requests | Harmful content requests on ${label:resource_name} |\n| [ am_cognitive_services_blocked_content_requests ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.content_safety_requests | Blocked content requests on ${label:resource_name} |\n| [ am_cognitive_services_abusive_users ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cognitive_services.conf) | azure_monitor.cognitive_services.content_safety_abusive_users | Abusive users detected on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.cognitive_services.availability | availability | percentage |\n| azure_monitor.cognitive_services.calls | total, successful, blocked, token | calls/s |\n| azure_monitor.cognitive_services.errors | total, client, server | errors/s |\n| azure_monitor.cognitive_services.latency | average | milliseconds |\n| azure_monitor.cognitive_services.data_transfer | in, out | bytes/s |\n| azure_monitor.cognitive_services.rate_limit | rate_limit | requests/s |\n| azure_monitor.cognitive_services.openai_availability | availability | percentage |\n| azure_monitor.cognitive_services.openai_requests | requests | requests/s |\n| azure_monitor.cognitive_services.openai_latency | time_to_response, time_to_first_token, time_between_tokens, time_to_last_byte | milliseconds |\n| azure_monitor.cognitive_services.openai_generation_speed | tokens_per_second | tokens/s |\n| azure_monitor.cognitive_services.openai_token_usage | total, prompt, generated, active | tokens/s |\n| azure_monitor.cognitive_services.openai_audio_tokens | prompt, completion | tokens/s |\n| azure_monitor.cognitive_services.openai_cache_match_rate | cache_match_rate | percentage |\n| azure_monitor.cognitive_services.openai_provisioned_utilization | utilization | percentage |\n| azure_monitor.cognitive_services.openai_finetuning | training_hours | hours/s |\n| azure_monitor.cognitive_services.openai_realtime_usage | seconds_used | seconds/s |\n| azure_monitor.cognitive_services.model_availability | availability | percentage |\n| azure_monitor.cognitive_services.model_requests | requests | requests/s |\n| azure_monitor.cognitive_services.model_latency | time_to_response, time_to_first_token, time_between_tokens, time_to_last_byte | milliseconds |\n| azure_monitor.cognitive_services.model_generation_speed | tokens_per_second | tokens/s |\n| azure_monitor.cognitive_services.model_token_usage | total, input, output | tokens/s |\n| azure_monitor.cognitive_services.model_audio_tokens | input, output | tokens/s |\n| azure_monitor.cognitive_services.model_cache_tokens | cache_read, cache_write_1h, cache_write_5m | tokens/s |\n| azure_monitor.cognitive_services.model_provisioned_utilization | utilization | percentage |\n| azure_monitor.cognitive_services.model_pages | total, annotated | pages/s |\n| azure_monitor.cognitive_services.model_generated_images | generated | images/s |\n| azure_monitor.cognitive_services.content_safety_requests | total, harmful, blocked | requests/s |\n| azure_monitor.cognitive_services.content_safety_abusive_users | abusive_users | users/s |\n| azure_monitor.cognitive_services.content_safety_system_events | events | events |\n| azure_monitor.cognitive_services.content_safety_moderation | text, image | requests/s |\n| azure_monitor.cognitive_services.job_duration | average | milliseconds |\n| azure_monitor.cognitive_services.personalizer_actions | occurrences | occurrences/s |\n| azure_monitor.cognitive_services.personalizer_actions_per_event | average | actions |\n| azure_monitor.cognitive_services.personalizer_feature_occurrences | action, context, slot | occurrences/s |\n| azure_monitor.cognitive_services.personalizer_feature_cardinality | action, context, slot | features |\n| azure_monitor.cognitive_services.personalizer_features_per_event | action, context, slot | features |\n| azure_monitor.cognitive_services.personalizer_namespaces_per_event | action, context, slot | namespaces |\n| azure_monitor.cognitive_services.personalizer_rewards | average, slot | reward |\n| azure_monitor.cognitive_services.personalizer_estimator_rewards | online, baseline, baseline_random | reward |\n| azure_monitor.cognitive_services.personalizer_estimator_slot_rewards | online, baseline, baseline_random | reward |\n| azure_monitor.cognitive_services.personalizer_slots | average | slots |\n| azure_monitor.cognitive_services.personalizer_slot_occurrences | occurrences | occurrences/s |\n| azure_monitor.cognitive_services.personalizer_event_counts | online, baseline_random, user_baseline | events/s |\n| azure_monitor.cognitive_services.personalizer_estimated_rewards | online, baseline_random, user_baseline | reward/s |\n| azure_monitor.cognitive_services.speech_transcription | realtime, batch, batch_whisper, fast, fast_whisper | seconds/s |\n| azure_monitor.cognitive_services.speech_translation | translated | seconds/s |\n| azure_monitor.cognitive_services.speech_synthesis | synthesized | characters/s |\n| azure_monitor.cognitive_services.speech_video_synthesis | synthesized | seconds/s |\n| azure_monitor.cognitive_services.speech_avatar | hosting, training | seconds/s |\n| azure_monitor.cognitive_services.speech_speaker_recognition | transactions | transactions/s |\n| azure_monitor.cognitive_services.speech_speaker_profiles | profiles | profiles/s |\n| azure_monitor.cognitive_services.speech_model_hosting | hosting | hours/s |\n| azure_monitor.cognitive_services.speech_voice_live_tokens | audio_input, audio_output, cached_audio_input, text_input, text_output, cached_text_input | tokens/s |\n| azure_monitor.cognitive_services.speech_voice_model | hosting | hours/s |\n| azure_monitor.cognitive_services.speech_voice_training | training | minutes/s |\n| azure_monitor.cognitive_services.translator_text | standard, custom, trained | characters/s |\n| azure_monitor.cognitive_services.translator_document | standard, custom | characters/s |\n| azure_monitor.cognitive_services.translator_document_sync | standard, custom | characters/s |\n| azure_monitor.cognitive_services.translator_pro_app | seconds | seconds/s |\n| azure_monitor.cognitive_services.vision_transactions | computer_vision, custom_vision | transactions/s |\n| azure_monitor.cognitive_services.vision_training | training_time | seconds/s |\n| azure_monitor.cognitive_services.vision_images_stored | stored | images/s |\n| azure_monitor.cognitive_services.face_transactions | transactions | transactions/s |\n| azure_monitor.cognitive_services.face_images_trained | trained | images/s |\n| azure_monitor.cognitive_services.faces_stored | stored | faces/s |\n| azure_monitor.cognitive_services.luis_requests | speech, text | requests/s |\n| azure_monitor.cognitive_services.text_processing | text, health_text, question_answering | records/s |\n| azure_monitor.cognitive_services.processed_characters | characters | characters/s |\n| azure_monitor.cognitive_services.processed_images | images | images/s |\n| azure_monitor.cognitive_services.processed_pages | pages | pages/s |\n| azure_monitor.cognitive_services.carnegie_inference | inferences | inferences/s |\n| azure_monitor.cognitive_services.personalizer_events | total, learned, non_activated | events/s |\n| azure_monitor.cognitive_services.personalizer_reward_tracking | matched, observed | rewards/s |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Cognitive_Services",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-container_apps",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Container Apps",link:"https://learn.microsoft.com/azure/container-apps/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","container","apps","serverless","microservices"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Container Apps\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Container Apps with metrics covering:\n\n- **Compute** -- CPU usage (nanocores and percentage), GPU utilization\n- **Memory** -- memory working set, memory percentage, JVM memory (total/pool/buffer)\n- **Requests** -- request rate, response time\n- **Network** -- network traffic (received/sent), resiliency pending connections and timeouts\n- **Replicas** -- replica count, restart count, reserved cores\n- **JVM** -- thread count, GC collections and duration, buffer count\n- **Resiliency** -- host ejections, request retries\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_container_apps_cpu_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_apps.conf) | azure_monitor.container_apps.cpu_percentage | Container Apps CPU on ${label:resource_name} |\n| [ am_container_apps_memory_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_apps.conf) | azure_monitor.container_apps.memory_percentage | Container Apps memory on ${label:resource_name} |\n| [ am_container_apps_restarts ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_apps.conf) | azure_monitor.container_apps.restart_count | Container Apps restarts on ${label:resource_name} |\n| [ am_container_apps_response_time ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_apps.conf) | azure_monitor.container_apps.response_time | Container Apps response time on ${label:resource_name} |\n| [ am_container_apps_resiliency_timeouts ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_apps.conf) | azure_monitor.container_apps.resiliency_timeouts | Container Apps resiliency timeouts on ${label:resource_name} |\n| [ am_container_apps_resiliency_retries ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_apps.conf) | azure_monitor.container_apps.resiliency_retries | Container Apps resiliency retries on ${label:resource_name} |\n| [ am_container_apps_pending_connections ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_apps.conf) | azure_monitor.container_apps.resiliency_pending_connections | Container Apps pending connections on ${label:resource_name} |\n| [ am_container_apps_host_ejections ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_apps.conf) | azure_monitor.container_apps.resiliency_ejections | Container Apps host ejections on ${label:resource_name} |\n| [ am_container_apps_replica_count ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_apps.conf) | azure_monitor.container_apps.replicas | Container Apps replicas on ${label:resource_name} |\n| [ am_container_apps_gpu_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_apps.conf) | azure_monitor.container_apps.gpu_utilization | Container Apps GPU on ${label:resource_name} |\n| [ am_container_apps_jvm_gc_duration ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_apps.conf) | azure_monitor.container_apps.jvm_gc_duration | Container Apps JVM GC duration on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.container_apps.cpu_usage | average, maximum | nanocores |\n| azure_monitor.container_apps.cpu_percentage | average, maximum | percentage |\n| azure_monitor.container_apps.memory_working_set | average, maximum | bytes |\n| azure_monitor.container_apps.memory_percentage | average, maximum | percentage |\n| azure_monitor.container_apps.replicas | average | replicas |\n| azure_monitor.container_apps.reserved_cores | per_revision, total | cores |\n| azure_monitor.container_apps.restart_count | restarts | restarts/s |\n| azure_monitor.container_apps.requests | requests | requests/s |\n| azure_monitor.container_apps.response_time | average | milliseconds |\n| azure_monitor.container_apps.network | received, sent | bytes/s |\n| azure_monitor.container_apps.resiliency_timeouts | connection, request | timeouts/s |\n| azure_monitor.container_apps.resiliency_retries | retries | retries/s |\n| azure_monitor.container_apps.resiliency_pending_connections | pending | requests/s |\n| azure_monitor.container_apps.resiliency_ejections | ejected, aborted | ejections/s |\n| azure_monitor.container_apps.gpu_utilization | average, maximum | percentage |\n| azure_monitor.container_apps.jvm_buffer_count | average | buffers |\n| azure_monitor.container_apps.jvm_buffer_memory | used, limit | bytes |\n| azure_monitor.container_apps.jvm_gc_count | collections | collections/s |\n| azure_monitor.container_apps.jvm_gc_duration | duration | milliseconds/s |\n| azure_monitor.container_apps.jvm_memory_pool | used, committed, limit | bytes |\n| azure_monitor.container_apps.jvm_memory_total | used, committed, limit | bytes |\n| azure_monitor.container_apps.jvm_thread_count | average | threads |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Container_Apps",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-container_instances",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Container Instances",link:"https://learn.microsoft.com/azure/container-instances/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","container","instances","aci","docker"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Container Instances\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Container Instances with metrics covering:\n\n- **Compute** -- CPU usage (average/max)\n- **Memory** -- memory usage (average/max)\n- **Network** -- network traffic (received/sent)\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_container_instances_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_instances.conf) | azure_monitor.container_instances.cpu_usage | Container CPU on ${label:resource_name} |\n| [ am_container_instances_memory_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_instances.conf) | azure_monitor.container_instances.memory_usage | Container memory on ${label:resource_name} |\n| [ am_container_instances_network_rx ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_instances.conf) | azure_monitor.container_instances.network | Container inbound traffic on ${label:resource_name} |\n| [ am_container_instances_network_tx ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_instances.conf) | azure_monitor.container_instances.network | Container outbound traffic on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.container_instances.cpu_usage | average, maximum | millicores |\n| azure_monitor.container_instances.memory_usage | average, maximum | bytes |\n| azure_monitor.container_instances.network | received, sent | bytes/s |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Container_Instances",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-container_registry",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Container Registry",link:"https://learn.microsoft.com/azure/container-registry/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","container","registry","acr","docker","images"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Container Registry\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Container Registry with metrics covering:\n\n- **Operations** -- image pulls (successful/total), image pushes (successful/total)\n- **Storage** -- storage used\n- **Tasks** -- task run duration, agent pool CPU time\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_container_registry_pull_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_registry.conf) | azure_monitor.container_registry.pull_count | ACR pull failures on ${label:resource_name} |\n| [ am_container_registry_push_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_container_registry.conf) | azure_monitor.container_registry.push_count | ACR push failures on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.container_registry.storage_used | used | bytes |\n| azure_monitor.container_registry.pull_count | successful, total | pulls/s |\n| azure_monitor.container_registry.push_count | successful, total | pushes/s |\n| azure_monitor.container_registry.agentpool_cpu_time | cpu_time | seconds/s |\n| azure_monitor.container_registry.run_duration | duration | milliseconds/s |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Container_Registry",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-cosmos_db",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Cosmos DB Account",link:"https://learn.microsoft.com/azure/cosmos-db/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","cosmos","cosmosdb","nosql","database","documentdb"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Cosmos DB Account\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Cosmos DB with metrics covering:\n\n- **Request units** -- RU consumption, provisioned throughput (provisioned/autoscale), normalized RU per partition\n- **Storage** -- data, index, and quota storage, physical partition size\n- **Latency** -- server-side latency (direct/gateway), replication latency\n- **Requests** -- total requests, API requests (Mongo/Cassandra/Gremlin), metadata requests, dedicated gateway requests\n- **Availability** -- service availability percentage\n- **Advanced** -- document count, partition count, dedicated gateway CPU/memory, integrated cache hit rate\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_cosmos_db_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cosmos_db.conf) | azure_monitor.cosmos_db.availability | Cosmos DB availability on ${label:resource_name} |\n| [ am_cosmos_db_normalized_ru_consumption ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cosmos_db.conf) | azure_monitor.cosmos_db.normalized_ru_consumption | Cosmos DB RU consumption on ${label:resource_name} |\n| [ am_cosmos_db_storage_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cosmos_db.conf) | azure_monitor.cosmos_db.storage | Cosmos DB storage utilization on ${label:resource_name} |\n| [ am_cosmos_db_server_side_latency_direct ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cosmos_db.conf) | azure_monitor.cosmos_db.server_side_latency | Cosmos DB direct latency on ${label:resource_name} |\n| [ am_cosmos_db_server_side_latency_gateway ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cosmos_db.conf) | azure_monitor.cosmos_db.server_side_latency | Cosmos DB gateway latency on ${label:resource_name} |\n| [ am_cosmos_db_replication_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cosmos_db.conf) | azure_monitor.cosmos_db.replication_latency | Cosmos DB replication latency on ${label:resource_name} |\n| [ am_cosmos_db_dedicated_gateway_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cosmos_db.conf) | azure_monitor.cosmos_db.dedicated_gateway_cpu | Cosmos DB dedicated gateway CPU on ${label:resource_name} |\n| [ am_cosmos_db_integrated_cache_item_hit_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cosmos_db.conf) | azure_monitor.cosmos_db.integrated_cache_hit_rate | Cosmos DB cache item hit rate on ${label:resource_name} |\n| [ am_cosmos_db_integrated_cache_query_hit_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cosmos_db.conf) | azure_monitor.cosmos_db.integrated_cache_hit_rate | Cosmos DB cache query hit rate on ${label:resource_name} |\n| [ am_cosmos_db_cassandra_connection_closures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_cosmos_db.conf) | azure_monitor.cosmos_db.cassandra_connections | Cosmos DB Cassandra connection closures on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.cosmos_db.total_requests | count | requests/s |\n| azure_monitor.cosmos_db.request_units | total | RU/s |\n| azure_monitor.cosmos_db.normalized_ru_consumption | maximum | percentage |\n| azure_monitor.cosmos_db.server_side_latency | direct, gateway | milliseconds |\n| azure_monitor.cosmos_db.replication_latency | average | milliseconds |\n| azure_monitor.cosmos_db.storage | data, index, quota | bytes |\n| azure_monitor.cosmos_db.document_count | average | documents |\n| azure_monitor.cosmos_db.partition_size | maximum | bytes |\n| azure_monitor.cosmos_db.partition_count | maximum | partitions |\n| azure_monitor.cosmos_db.provisioned_throughput | provisioned, autoscale_max, autoscaled | RU/s |\n| azure_monitor.cosmos_db.partition_throughput | maximum | RU/s |\n| azure_monitor.cosmos_db.availability | average | percentage |\n| azure_monitor.cosmos_db.metadata_requests | count | requests/s |\n| azure_monitor.cosmos_db.api_requests | mongo, cassandra, gremlin | requests/s |\n| azure_monitor.cosmos_db.api_request_charges | mongo, cassandra, gremlin | RU/s |\n| azure_monitor.cosmos_db.cassandra_connections | total | connections/s |\n| azure_monitor.cosmos_db.dedicated_gateway_cpu | average | percentage |\n| azure_monitor.cosmos_db.dedicated_gateway_memory | average | bytes |\n| azure_monitor.cosmos_db.dedicated_gateway_requests | count | requests/s |\n| azure_monitor.cosmos_db.integrated_cache_hit_rate | item, query | percentage |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Cosmos_DB_Account",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-data_explorer",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Data Explorer Cluster",link:"https://learn.microsoft.com/azure/data-explorer/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","data","explorer","kusto","adx","analytics"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Data Explorer Cluster\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Data Explorer (Kusto) with metrics covering:\n\n- **Ingestion** -- ingestion latency, volume, result (success/failure), queue length, batch processing\n- **Queries** -- query count, query duration, concurrent queries, throttled queries/commands\n- **Streaming ingest** -- data rate, duration, result, utilization\n- **Cache** -- cache and ingestion utilization\n- **Compute** -- CPU utilization\n- **Export** -- continuous export records, result, lateness, pending jobs, export utilization\n- **Materialized views** -- view health, age, data loss, records in delta, extents rebuild\n- **Cluster** -- instance count (average/max/min), keep alive, total extents\n- **Events** -- events received/processed/dropped, blobs received/processed/dropped\n- **Advanced** -- follower latency, discovery latency, weak consistency latency, partitioning percentage\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_data_explorer_keep_alive ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.keep_alive | Data Explorer keep alive on ${label:resource_name} |\n| [ am_data_explorer_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.cpu_utilization | Data Explorer CPU on ${label:resource_name} |\n| [ am_data_explorer_ingestion_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.utilization | Data Explorer ingestion utilization on ${label:resource_name} |\n| [ am_data_explorer_cache_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.utilization | Data Explorer cache utilization on ${label:resource_name} |\n| [ am_data_explorer_throttled_commands ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.throttled_commands | Data Explorer throttled commands on ${label:resource_name} |\n| [ am_data_explorer_query_duration ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.query_duration | Data Explorer query duration on ${label:resource_name} |\n| [ am_data_explorer_throttled_queries ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.throttled_queries | Data Explorer throttled queries on ${label:resource_name} |\n| [ am_data_explorer_ingestion_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.ingestion_latency | Data Explorer ingestion latency on ${label:resource_name} |\n| [ am_data_explorer_events_dropped ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.events | Data Explorer events dropped on ${label:resource_name} |\n| [ am_data_explorer_blobs_dropped ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.blobs | Data Explorer blobs dropped on ${label:resource_name} |\n| [ am_data_explorer_ingestion_queue_length ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.ingestion_queue | Data Explorer ingestion queue on ${label:resource_name} |\n| [ am_data_explorer_queue_oldest_message ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.queue_oldest_message | Data Explorer queue oldest message age on ${label:resource_name} |\n| [ am_data_explorer_export_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.export_utilization | Data Explorer export utilization on ${label:resource_name} |\n| [ am_data_explorer_continuous_export_pending ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.continuous_export_pending | Data Explorer continuous export pending on ${label:resource_name} |\n| [ am_data_explorer_continuous_export_lateness ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.continuous_export_lateness | Data Explorer continuous export lateness on ${label:resource_name} |\n| [ am_data_explorer_streaming_ingest_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.streaming_ingest_utilization | Data Explorer streaming ingest utilization on ${label:resource_name} |\n| [ am_data_explorer_streaming_ingest_duration ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.streaming_ingest_duration | Data Explorer streaming ingest duration on ${label:resource_name} |\n| [ am_data_explorer_materialized_view_health ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.materialized_view_health | Data Explorer materialized view health on ${label:resource_name} |\n| [ am_data_explorer_materialized_view_age ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.materialized_view_age | Data Explorer materialized view age on ${label:resource_name} |\n| [ am_data_explorer_materialized_view_data_loss ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.materialized_view_data_loss | Data Explorer materialized view data loss on ${label:resource_name} |\n| [ am_data_explorer_follower_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_explorer.conf) | azure_monitor.data_explorer.follower_latency | Data Explorer follower latency on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.data_explorer.cpu_utilization | average | percentage |\n| azure_monitor.data_explorer.utilization | ingestion, cache | percentage |\n| azure_monitor.data_explorer.keep_alive | average | count |\n| azure_monitor.data_explorer.instance_count | average, maximum, minimum | instances |\n| azure_monitor.data_explorer.extents | average | extents |\n| azure_monitor.data_explorer.throttled_commands | total | commands/s |\n| azure_monitor.data_explorer.follower_latency | average | milliseconds |\n| azure_monitor.data_explorer.query_duration | average | milliseconds |\n| azure_monitor.data_explorer.query_count | count | queries/s |\n| azure_monitor.data_explorer.concurrent_queries | average, maximum | queries |\n| azure_monitor.data_explorer.throttled_queries | total | queries/s |\n| azure_monitor.data_explorer.weak_consistency_latency | average | seconds |\n| azure_monitor.data_explorer.ingestion_result | total | sources/s |\n| azure_monitor.data_explorer.ingestion_volume | total | bytes/s |\n| azure_monitor.data_explorer.ingestion_latency | average | seconds |\n| azure_monitor.data_explorer.events | received, processed, dropped | events/s |\n| azure_monitor.data_explorer.blobs | received, processed, dropped | blobs/s |\n| azure_monitor.data_explorer.discovery_latency | average | seconds |\n| azure_monitor.data_explorer.stage_latency | average | seconds |\n| azure_monitor.data_explorer.ingestion_queue | length | messages |\n| azure_monitor.data_explorer.queue_oldest_message | age | seconds |\n| azure_monitor.data_explorer.received_data_size | total | bytes/s |\n| azure_monitor.data_explorer.batches_processed | total | batches/s |\n| azure_monitor.data_explorer.batch_blob_count | average | blobs |\n| azure_monitor.data_explorer.batch_size | average | bytes |\n| azure_monitor.data_explorer.batch_duration | average | seconds |\n| azure_monitor.data_explorer.export_utilization | maximum | percentage |\n| azure_monitor.data_explorer.continuous_export_records | total | records/s |\n| azure_monitor.data_explorer.continuous_export_result | count | results/s |\n| azure_monitor.data_explorer.continuous_export_pending | maximum | jobs |\n| azure_monitor.data_explorer.continuous_export_lateness | maximum | minutes |\n| azure_monitor.data_explorer.streaming_ingest_data_rate | average | bytes/s |\n| azure_monitor.data_explorer.streaming_ingest_duration | average | milliseconds |\n| azure_monitor.data_explorer.streaming_ingest_result | count | results/s |\n| azure_monitor.data_explorer.streaming_ingest_utilization | average | percentage |\n| azure_monitor.data_explorer.materialized_view_health | health | status |\n| azure_monitor.data_explorer.materialized_view_age | minutes | minutes |\n| azure_monitor.data_explorer.materialized_view_age_seconds | average | seconds |\n| azure_monitor.data_explorer.materialized_view_records_in_delta | average | records |\n| azure_monitor.data_explorer.materialized_view_extents_rebuild | average | extents |\n| azure_monitor.data_explorer.materialized_view_data_loss | maximum | status |\n| azure_monitor.data_explorer.materialized_view_result | average | status |\n| azure_monitor.data_explorer.partitioning_percentage | total, hot | percentage |\n| azure_monitor.data_explorer.partitioned_records | average | records |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Data_Explorer_Cluster",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-data_factory",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Data Factory",link:"https://learn.microsoft.com/azure/data-factory/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","data","factory","adf","etl","pipeline"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Data Factory\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Data Factory with metrics covering:\n\n- **Pipeline runs** -- pipeline runs (succeeded/failed/cancelled), elapsed time runs\n- **Activity runs** -- activity runs (succeeded/failed/cancelled)\n- **Trigger runs** -- trigger runs (succeeded/failed/cancelled)\n- **Integration runtime** -- IR CPU and memory utilization, available nodes, queue length, task pickup delay\n- **SSIS** -- SSIS package executions (succeeded/failed/cancelled), IR start/stop operations\n- **MVNet IR** -- pipeline and copy capacity/utilization, external capacity, queue lengths\n- **Airflow IR** -- CPU and memory, DAG processing, task instances, scheduler activity, triggers, pool slots\n- **Factory** -- entity count, factory size (current/max allowed)\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_data_factory_pipeline_failed_runs ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.pipeline_runs | Data Factory pipeline failures on ${label:resource_name} |\n| [ am_data_factory_pipeline_cancelled_runs ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.pipeline_runs | Data Factory pipeline cancellations on ${label:resource_name} |\n| [ am_data_factory_activity_failed_runs ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.activity_runs | Data Factory activity failures on ${label:resource_name} |\n| [ am_data_factory_trigger_failed_runs ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.trigger_runs | Data Factory trigger failures on ${label:resource_name} |\n| [ am_data_factory_ssis_ir_start_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.ssis_ir_starts | Data Factory SSIS IR start failures on ${label:resource_name} |\n| [ am_data_factory_ssis_ir_stop_stuck ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.ssis_ir_stops | Data Factory SSIS IR stuck stops on ${label:resource_name} |\n| [ am_data_factory_ssis_package_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.ssis_package_executions | Data Factory SSIS package failures on ${label:resource_name} |\n| [ am_data_factory_ir_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.ir_cpu | Data Factory IR CPU on ${label:resource_name} |\n| [ am_data_factory_ir_queue_length ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.ir_queue | Data Factory IR queue depth on ${label:resource_name} |\n| [ am_data_factory_ir_task_pickup_delay ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.ir_task_pickup_delay | Data Factory IR task pickup delay on ${label:resource_name} |\n| [ am_data_factory_size_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.factory_size | Data Factory size utilization on ${label:resource_name} |\n| [ am_data_factory_entity_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.entity_count | Data Factory entity count on ${label:resource_name} |\n| [ am_data_factory_mvnet_ir_copy_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.mvnet_ir_copy_capacity | Data Factory MVNet IR copy utilization on ${label:resource_name} |\n| [ am_data_factory_mvnet_ir_external_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.mvnet_ir_external_capacity | Data Factory MVNet IR external utilization on ${label:resource_name} |\n| [ am_data_factory_mvnet_ir_pipeline_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.mvnet_ir_pipeline_capacity | Data Factory MVNet IR pipeline utilization on ${label:resource_name} |\n| [ am_data_factory_airflow_ir_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.airflow_ir_cpu | Data Factory Airflow IR CPU on ${label:resource_name} |\n| [ am_data_factory_airflow_ir_memory ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.airflow_ir_memory | Data Factory Airflow IR memory on ${label:resource_name} |\n| [ am_data_factory_airflow_ir_dag_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.airflow_ir_dag_errors | Data Factory Airflow DAG errors on ${label:resource_name} |\n| [ am_data_factory_airflow_ir_operator_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.airflow_ir_operators | Data Factory Airflow operator failures on ${label:resource_name} |\n| [ am_data_factory_airflow_ir_job_heartbeat_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.airflow_ir_jobs | Data Factory Airflow job heartbeat failures on ${label:resource_name} |\n| [ am_data_factory_airflow_ir_pool_starving ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.airflow_ir_pool_starving | Data Factory Airflow pool starvation on ${label:resource_name} |\n| [ am_data_factory_airflow_ir_tasks_killed_externally ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.airflow_ir_scheduler_tasks | Data Factory Airflow tasks killed externally on ${label:resource_name} |\n| [ am_data_factory_airflow_ir_tasks_starving ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.airflow_ir_scheduler_tasks | Data Factory Airflow scheduler starving tasks on ${label:resource_name} |\n| [ am_data_factory_airflow_ir_task_instance_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.airflow_ir_task_instances | Data Factory Airflow task failures on ${label:resource_name} |\n| [ am_data_factory_airflow_ir_trigger_issues ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.airflow_ir_trigger_issues | Data Factory Airflow trigger issues on ${label:resource_name} |\n| [ am_data_factory_airflow_ir_zombies ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_data_factory.conf) | azure_monitor.data_factory.airflow_ir_zombies | Data Factory Airflow zombie tasks on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.data_factory.pipeline_runs | succeeded, failed, cancelled | runs/s |\n| azure_monitor.data_factory.pipeline_elapsed_time | elapsed_time | runs/s |\n| azure_monitor.data_factory.activity_runs | succeeded, failed, cancelled | runs/s |\n| azure_monitor.data_factory.trigger_runs | succeeded, failed, cancelled | runs/s |\n| azure_monitor.data_factory.ssis_ir_starts | succeeded, failed, cancelled | runs/s |\n| azure_monitor.data_factory.ssis_ir_stops | succeeded, stuck | runs/s |\n| azure_monitor.data_factory.ssis_package_executions | succeeded, failed, cancelled | executions/s |\n| azure_monitor.data_factory.ir_cpu | average | percentage |\n| azure_monitor.data_factory.ir_memory | available | bytes |\n| azure_monitor.data_factory.ir_nodes | available | nodes |\n| azure_monitor.data_factory.ir_queue | queue_length | tasks |\n| azure_monitor.data_factory.ir_task_pickup_delay | average | seconds |\n| azure_monitor.data_factory.factory_size | current, max_allowed | GiB |\n| azure_monitor.data_factory.entity_count | current, max_allowed | entities |\n| azure_monitor.data_factory.mvnet_ir_copy_capacity | utilization, available | percentage |\n| azure_monitor.data_factory.mvnet_ir_copy_queue | waiting | tasks |\n| azure_monitor.data_factory.mvnet_ir_external_capacity | utilization, available | percentage |\n| azure_monitor.data_factory.mvnet_ir_external_queue | waiting | tasks |\n| azure_monitor.data_factory.mvnet_ir_pipeline_capacity | utilization, available | percentage |\n| azure_monitor.data_factory.mvnet_ir_pipeline_queue | waiting | tasks |\n| azure_monitor.data_factory.airflow_ir_cpu | percentage | percentage |\n| azure_monitor.data_factory.airflow_ir_cpu_usage | average | millicores |\n| azure_monitor.data_factory.airflow_ir_memory | percentage | percentage |\n| azure_monitor.data_factory.airflow_ir_memory_usage | average | bytes |\n| azure_monitor.data_factory.airflow_ir_nodes | average | nodes |\n| azure_monitor.data_factory.airflow_ir_dag_collection | average | milliseconds |\n| azure_monitor.data_factory.airflow_ir_dag_bag | total | dags/s |\n| azure_monitor.data_factory.airflow_ir_dag_errors | callback_exceptions, file_refresh, import | errors/s |\n| azure_monitor.data_factory.airflow_ir_dag_processing_duration | last_duration | milliseconds |\n| azure_monitor.data_factory.airflow_ir_dag_processing_lag | last_run_seconds_ago, processor_timeouts, total_parse_time | seconds |\n| azure_monitor.data_factory.airflow_ir_dag_processing_activity | manager_stalls, processes | events/s |\n| azure_monitor.data_factory.airflow_ir_dag_run_duration | success, failed | milliseconds |\n| azure_monitor.data_factory.airflow_ir_dag_run_scheduling | dependency_check, first_task_delay, schedule_delay | milliseconds |\n| azure_monitor.data_factory.airflow_ir_executor | open_slots, queued_tasks, running_tasks | slots/s |\n| azure_monitor.data_factory.airflow_ir_jobs | started, ended, heartbeat_failures | jobs/s |\n| azure_monitor.data_factory.airflow_ir_operators | successes, failures | operations/s |\n| azure_monitor.data_factory.airflow_ir_pool_slots | open, queued, running | slots/s |\n| azure_monitor.data_factory.airflow_ir_pool_starving | starving | tasks/s |\n| azure_monitor.data_factory.airflow_ir_scheduler_critical_section | duration | milliseconds |\n| azure_monitor.data_factory.airflow_ir_scheduler_activity | critical_section_busy, heartbeats, failed_sla_emails | events/s |\n| azure_monitor.data_factory.airflow_ir_scheduler_orphaned_tasks | adopted, cleared | tasks/s |\n| azure_monitor.data_factory.airflow_ir_scheduler_tasks | executable, running, starving, killed_externally | tasks/s |\n| azure_monitor.data_factory.airflow_ir_task_instances | started, succeeded, failed, finished, previously_succeeded, created_via_operator | instances/s |\n| azure_monitor.data_factory.airflow_ir_task_instance_duration | average | milliseconds |\n| azure_monitor.data_factory.airflow_ir_task_dag_changes | removed, restored | tasks/s |\n| azure_monitor.data_factory.airflow_ir_triggers | succeeded, failed, running | triggers/s |\n| azure_monitor.data_factory.airflow_ir_trigger_issues | blocked_main_thread, celery_timeout_errors | events/s |\n| azure_monitor.data_factory.airflow_ir_zombies | killed | tasks/s |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Data_Factory",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-event_grid",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Event Grid Topic",link:"https://learn.microsoft.com/azure/event-grid/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","event","grid","messaging","events","serverless"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Event Grid Topic\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Event Grid with metrics covering:\n\n- **Publishing** -- publish rate (success/failed), publish latency\n- **Delivery** -- events delivered, failed, dropped, and dead-lettered\n- **Routing** -- matched and unmatched event routing, destination processing duration\n- **Filters** -- advanced filter evaluations\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_event_grid_publish_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_event_grid.conf) | azure_monitor.event_grid.publish_rate | Event Grid publish failures on ${label:resource_name} |\n| [ am_event_grid_delivery_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_event_grid.conf) | azure_monitor.event_grid.delivery | Event Grid delivery failures on ${label:resource_name} |\n| [ am_event_grid_dropped_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_event_grid.conf) | azure_monitor.event_grid.delivery | Event Grid dropped events on ${label:resource_name} |\n| [ am_event_grid_dead_lettered_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_event_grid.conf) | azure_monitor.event_grid.delivery | Event Grid dead-lettered events on ${label:resource_name} |\n| [ am_event_grid_unmatched_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_event_grid.conf) | azure_monitor.event_grid.routing | Event Grid unmatched events on ${label:resource_name} |\n| [ am_event_grid_destination_processing_duration ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_event_grid.conf) | azure_monitor.event_grid.destination_processing_duration | Event Grid destination processing duration on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.event_grid.publish_rate | success, failed | events/s |\n| azure_monitor.event_grid.publish_latency | latency | milliseconds |\n| azure_monitor.event_grid.routing | matched, unmatched | events/s |\n| azure_monitor.event_grid.advanced_filter_evaluations | evaluations | evaluations/s |\n| azure_monitor.event_grid.delivery | delivered, failed, dropped, dead_lettered | events/s |\n| azure_monitor.event_grid.destination_processing_duration | average | milliseconds |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Event_Grid_Topic",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-event_hubs",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Event Hubs Namespace",link:"https://learn.microsoft.com/azure/event-hubs/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","event","hubs","streaming","kafka","messaging"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Event Hubs Namespace\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Event Hubs with metrics covering:\n\n- **Messages** -- message flow (in/out), captured messages and bytes\n- **Throughput** -- data throughput (in/out bytes per second)\n- **Connections** -- active connections, connection events (opened/closed)\n- **Requests** -- incoming and successful request rates\n- **Errors** -- server errors, user errors, throttled requests, quota exceeded\n- **Replication** -- replication lag (messages and duration)\n- **Resources** -- namespace size, CPU and memory utilization\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_event_hubs_server_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_event_hubs.conf) | azure_monitor.event_hubs.errors | Event Hubs server errors on ${label:resource_name} |\n| [ am_event_hubs_throttled_requests ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_event_hubs.conf) | azure_monitor.event_hubs.errors | Event Hubs throttled requests on ${label:resource_name} |\n| [ am_event_hubs_quota_exceeded ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_event_hubs.conf) | azure_monitor.event_hubs.errors | Event Hubs quota exceeded on ${label:resource_name} |\n| [ am_event_hubs_user_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_event_hubs.conf) | azure_monitor.event_hubs.errors | Event Hubs user errors on ${label:resource_name} |\n| [ am_event_hubs_success_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_event_hubs.conf) | azure_monitor.event_hubs.requests | Event Hubs request success rate on ${label:resource_name} |\n| [ am_event_hubs_namespace_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_event_hubs.conf) | azure_monitor.event_hubs.namespace_resources | Event Hubs namespace CPU on ${label:resource_name} |\n| [ am_event_hubs_namespace_memory ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_event_hubs.conf) | azure_monitor.event_hubs.namespace_resources | Event Hubs namespace memory on ${label:resource_name} |\n| [ am_event_hubs_capture_backlog ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_event_hubs.conf) | azure_monitor.event_hubs.capture_backlog | Event Hubs capture backlog on ${label:resource_name} |\n| [ am_event_hubs_replication_lag ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_event_hubs.conf) | azure_monitor.event_hubs.replication_lag | Event Hubs replication lag on ${label:resource_name} |\n| [ am_event_hubs_replication_lag_duration ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_event_hubs.conf) | azure_monitor.event_hubs.replication_lag_duration | Event Hubs replication lag duration on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.event_hubs.message_flow | in, out | messages/s |\n| azure_monitor.event_hubs.data_throughput | in, out | bytes/s |\n| azure_monitor.event_hubs.requests | incoming, successful | requests/s |\n| azure_monitor.event_hubs.errors | server, user, throttled, quota_exceeded | errors/s |\n| azure_monitor.event_hubs.connections | active | connections |\n| azure_monitor.event_hubs.connection_events | opened, closed | connections |\n| azure_monitor.event_hubs.captured_messages | total | messages/s |\n| azure_monitor.event_hubs.captured_data | total | bytes/s |\n| azure_monitor.event_hubs.namespace_size | average | bytes |\n| azure_monitor.event_hubs.capture_backlog | backlog | messages |\n| azure_monitor.event_hubs.namespace_resources | cpu, memory | percentage |\n| azure_monitor.event_hubs.replication_lag | messages | messages |\n| azure_monitor.event_hubs.replication_lag_duration | duration | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Event_Hubs_Namespace",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-express_route_circuit",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure ExpressRoute Circuit",link:"https://learn.microsoft.com/azure/expressroute/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","expressroute","circuit","networking","hybrid"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure ExpressRoute Circuit\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure ExpressRoute Circuit with metrics covering:\n\n- **Throughput** -- circuit throughput (bits/s in/out), GlobalReach throughput\n- **Availability** -- ARP availability, BGP availability\n- **Bandwidth** -- bandwidth utilization (ingress/egress)\n- **QoS** -- QoS dropped bits (in/out)\n- **Routes** -- FastPath routes count\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_express_route_circuit_arp_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_express_route_circuit.conf) | azure_monitor.express_route_circuit.arp_availability | ExpressRoute ARP availability on ${label:resource_name} |\n| [ am_express_route_circuit_bgp_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_express_route_circuit.conf) | azure_monitor.express_route_circuit.bgp_availability | ExpressRoute BGP availability on ${label:resource_name} |\n| [ am_express_route_circuit_ingress_bandwidth_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_express_route_circuit.conf) | azure_monitor.express_route_circuit.bandwidth_utilization | ExpressRoute ingress bandwidth on ${label:resource_name} |\n| [ am_express_route_circuit_egress_bandwidth_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_express_route_circuit.conf) | azure_monitor.express_route_circuit.bandwidth_utilization | ExpressRoute egress bandwidth on ${label:resource_name} |\n| [ am_express_route_circuit_qos_drop_in ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_express_route_circuit.conf) | azure_monitor.express_route_circuit.qos_dropped_bits | ExpressRoute QoS ingress drops on ${label:resource_name} |\n| [ am_express_route_circuit_qos_drop_out ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_express_route_circuit.conf) | azure_monitor.express_route_circuit.qos_dropped_bits | ExpressRoute QoS egress drops on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.express_route_circuit.arp_availability | average | percentage |\n| azure_monitor.express_route_circuit.bgp_availability | average | percentage |\n| azure_monitor.express_route_circuit.throughput | in, out | bits/s |\n| azure_monitor.express_route_circuit.bandwidth_utilization | ingress, egress | percentage |\n| azure_monitor.express_route_circuit.qos_dropped_bits | in, out | bits/s |\n| azure_monitor.express_route_circuit.fastpath_routes | maximum | routes |\n| azure_monitor.express_route_circuit.global_reach_throughput | in, out | bits/s |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_ExpressRoute_Circuit",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-express_route_gateway",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure ExpressRoute Gateway",link:"https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","expressroute","gateway","networking","hybrid"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure ExpressRoute Gateway\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure ExpressRoute Gateway with metrics covering:\n\n- **Throughput** -- gateway throughput, connection throughput (bits/s in/out), packets per second\n- **Compute** -- CPU utilization\n- **Flows** -- active flows, max flow creation rate\n- **Routes** -- routes advertised to peer, routes learned from peer, route changes\n- **Scale** -- VMs in VNet\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_express_route_gateway_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_express_route_gateway.conf) | azure_monitor.express_route_gateway.cpu_utilization | ExpressRoute GW CPU on ${label:resource_name} |\n| [ am_express_route_gateway_active_flows ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_express_route_gateway.conf) | azure_monitor.express_route_gateway.active_flows | ExpressRoute GW active flows on ${label:resource_name} |\n| [ am_express_route_gateway_route_changes ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_express_route_gateway.conf) | azure_monitor.express_route_gateway.route_changes | ExpressRoute GW route churn on ${label:resource_name} |\n| [ am_express_route_gateway_routes_advertised ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_express_route_gateway.conf) | azure_monitor.express_route_gateway.routes_advertised | ExpressRoute GW routes advertised on ${label:resource_name} |\n| [ am_express_route_gateway_routes_learned ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_express_route_gateway.conf) | azure_monitor.express_route_gateway.routes_learned | ExpressRoute GW routes learned on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.express_route_gateway.connection_throughput | in, out | bits/s |\n| azure_monitor.express_route_gateway.gateway_throughput | average | bits/s |\n| azure_monitor.express_route_gateway.cpu_utilization | average | percentage |\n| azure_monitor.express_route_gateway.packets | average | packets/s |\n| azure_monitor.express_route_gateway.active_flows | average | flows |\n| azure_monitor.express_route_gateway.routes_advertised | maximum | routes |\n| azure_monitor.express_route_gateway.routes_learned | maximum | routes |\n| azure_monitor.express_route_gateway.route_changes | total | changes/s |\n| azure_monitor.express_route_gateway.max_flows_creation_rate | maximum | flows/s |\n| azure_monitor.express_route_gateway.vm_count | maximum | VMs |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_ExpressRoute_Gateway",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-firewall",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Firewall",link:"https://learn.microsoft.com/azure/firewall/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","firewall","network","security","nsg"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Firewall\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Firewall with metrics covering:\n\n- **Traffic** -- data processed, throughput (bits/s)\n- **Rules** -- application and network rule hit counts\n- **SNAT** -- SNAT port utilization\n- **Health** -- firewall health state percentage\n- **Latency** -- latency probe\n- **Capacity** -- observed capacity units\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_firewall_health ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_firewall.conf) | azure_monitor.firewall.health | Firewall health on ${label:resource_name} |\n| [ am_firewall_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_firewall.conf) | azure_monitor.firewall.latency | Firewall latency on ${label:resource_name} |\n| [ am_firewall_snat_port_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_firewall.conf) | azure_monitor.firewall.snat_port_utilization | Firewall SNAT port utilization on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.firewall.health | average | percentage |\n| azure_monitor.firewall.latency | average | milliseconds |\n| azure_monitor.firewall.throughput | average | bits/s |\n| azure_monitor.firewall.data_processed | total | bytes/s |\n| azure_monitor.firewall.rule_hits | application, network | hits/s |\n| azure_monitor.firewall.snat_port_utilization | average | percentage |\n| azure_monitor.firewall.capacity | average | units |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Firewall",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-front_door",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Front Door",link:"https://learn.microsoft.com/azure/frontdoor/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","front","door","cdn","waf","networking"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Front Door\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Front Door with metrics covering:\n\n- **Requests** -- client and origin request rates, origin shield requests (to shield/to origin/rate limited)\n- **Latency** -- total latency, origin latency\n- **Data transfer** -- request and response data transfer, origin shield data transfer, byte hit ratio\n- **Errors** -- 4xx and 5xx error rates\n- **Origin** -- origin health probe percentage\n- **WAF** -- WAF requests, challenges (CAPTCHA/JS challenge)\n- **WebSocket** -- WebSocket connections (requested/active), connection duration\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_front_door_origin_health ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_front_door.conf) | azure_monitor.front_door.origin_health | Front Door origin health on ${label:resource_name} |\n| [ am_front_door_total_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_front_door.conf) | azure_monitor.front_door.latency | Front Door total latency on ${label:resource_name} |\n| [ am_front_door_origin_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_front_door.conf) | azure_monitor.front_door.latency | Front Door origin latency on ${label:resource_name} |\n| [ am_front_door_5xx_error_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_front_door.conf) | azure_monitor.front_door.error_rate | Front Door 5xx error rate on ${label:resource_name} |\n| [ am_front_door_4xx_error_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_front_door.conf) | azure_monitor.front_door.error_rate | Front Door 4xx error rate on ${label:resource_name} |\n| [ am_front_door_byte_hit_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_front_door.conf) | azure_monitor.front_door.byte_hit_ratio | Front Door cache hit ratio on ${label:resource_name} |\n| [ am_front_door_waf_rate_limited ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_front_door.conf) | azure_monitor.front_door.origin_shield_requests | Front Door origin shield rate limiting on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.front_door.latency | total, origin | milliseconds |\n| azure_monitor.front_door.origin_health | health | percentage |\n| azure_monitor.front_door.byte_hit_ratio | hit_ratio | percentage |\n| azure_monitor.front_door.error_rate | 4xx, 5xx | percentage |\n| azure_monitor.front_door.requests | client, origin | requests/s |\n| azure_monitor.front_door.data_transfer | request, response | bytes/s |\n| azure_monitor.front_door.origin_shield_requests | to_shield, to_origin, rate_limited | requests/s |\n| azure_monitor.front_door.origin_shield_data_transfer | request | bytes/s |\n| azure_monitor.front_door.waf_requests | total | requests/s |\n| azure_monitor.front_door.waf_challenges | captcha, js_challenge | requests/s |\n| azure_monitor.front_door.websocket_connections | requested, active | connections/s |\n| azure_monitor.front_door.websocket_duration | average | milliseconds |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Front_Door",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-azure_functions",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Functions",link:"https://learn.microsoft.com/azure/azure-functions/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","functions","serverless","faas","lambda"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Functions\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Functions with metrics covering:\n\n- **Executions** -- function invocation counts, execution units (MB-milliseconds)\n- **HTTP** -- request rates, response status codes\n- **Compute** -- CPU utilization, CPU time consumed\n- **Memory** -- memory usage (working set, private bytes)\n- **Flex Consumption** -- always-ready and on-demand function executions and units\n\nAzure Functions runs on the App Service platform and shares the same underlying metrics.\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.app_service.requests | requests | requests/s |\n| azure_monitor.app_service.response_time | average | seconds |\n| azure_monitor.app_service.http_status | 2xx, 3xx, 4xx, 5xx | responses/s |\n| azure_monitor.app_service.http_error_detail | 101_websocket, 401_unauthorized, 403_forbidden, 404_not_found, 406_not_acceptable | responses/s |\n| azure_monitor.app_service.cpu | average | percentage |\n| azure_monitor.app_service.cpu_time | total | seconds |\n| azure_monitor.app_service.memory_usage | average_working_set, working_set, private | bytes |\n| azure_monitor.app_service.health | average | percentage |\n| azure_monitor.app_service.network_traffic | received, sent | bytes/s |\n| azure_monitor.app_service.connections | average | connections |\n| azure_monitor.app_service.io_throughput | read, write, other | bytes/s |\n| azure_monitor.app_service.io_operations | read, write, other | operations/s |\n| azure_monitor.app_service.threads | average | threads |\n| azure_monitor.app_service.handles | average | handles |\n| azure_monitor.app_service.gc_collections | gen0, gen1, gen2 | collections/s |\n| azure_monitor.app_service.function_executions | total | executions/s |\n| azure_monitor.app_service.function_execution_units | total | MB-milliseconds/s |\n| azure_monitor.app_service.always_ready_function_executions | total | executions/s |\n| azure_monitor.app_service.always_ready_function_execution_units | total | MB-milliseconds/s |\n| azure_monitor.app_service.always_ready_units | total | units |\n| azure_monitor.app_service.on_demand_function_executions | total | executions/s |\n| azure_monitor.app_service.on_demand_function_execution_units | total | MB-milliseconds/s |\n| azure_monitor.app_service.request_queue | queued | requests |\n| azure_monitor.app_service.instances | running | instances |\n| azure_monitor.app_service.assemblies | loaded | assemblies |\n| azure_monitor.app_service.app_domains | loaded, unloaded | domains |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Functions",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-iot_hub",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure IoT Hub",link:"https://learn.microsoft.com/azure/iot-hub/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","iot","hub","devices","telemetry","mqtt"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure IoT Hub\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure IoT Hub with metrics covering:\n\n- **Telemetry** -- device telemetry messages (attempted/sent), throttling errors, daily message quota usage\n- **Routing** -- message deliveries by endpoint (Event Hubs, Service Bus, storage), routing latency, delivery status\n- **Device twins** -- backend and device twin reads/writes (successful/failed), query results\n- **Direct methods** -- method invocations (successful/failed), request/response sizes\n- **Cloud-to-device** -- C2D commands (completed/abandoned/rejected), expired messages\n- **Jobs** -- job completions, cancellations, list calls, twin update and method job creations\n- **Connections** -- successful connections, connected devices, total devices\n- **Event Grid** -- Event Grid deliveries, Event Grid latency\n- **Data** -- device data usage\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_iot_hub_d2c_telemetry_throttle ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.d2c_telemetry_throttle | IoT Hub telemetry throttling on ${label:resource_name} |\n| [ am_iot_hub_c2d_messages_expired ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.c2d_messages_expired | IoT Hub C2D messages expiring on ${label:resource_name} |\n| [ am_iot_hub_c2d_methods_failed ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.c2d_methods | IoT Hub direct method failures on ${label:resource_name} |\n| [ am_iot_hub_c2d_twin_read_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.c2d_twin_reads | IoT Hub backend twin read failures on ${label:resource_name} |\n| [ am_iot_hub_c2d_twin_update_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.c2d_twin_updates | IoT Hub backend twin update failures on ${label:resource_name} |\n| [ am_iot_hub_d2c_twin_read_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.d2c_twin_reads | IoT Hub device twin read failures on ${label:resource_name} |\n| [ am_iot_hub_d2c_twin_update_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.d2c_twin_updates | IoT Hub device twin update failures on ${label:resource_name} |\n| [ am_iot_hub_routing_dropped ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.routing_deliveries | IoT Hub routing dropped messages on ${label:resource_name} |\n| [ am_iot_hub_routing_orphaned ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.routing_deliveries | IoT Hub routing orphaned messages on ${label:resource_name} |\n| [ am_iot_hub_routing_invalid ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.routing_deliveries | IoT Hub routing invalid messages on ${label:resource_name} |\n| [ am_iot_hub_routing_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.routing_latency | IoT Hub routing latency on ${label:resource_name} |\n| [ am_iot_hub_event_grid_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.event_grid_latency | IoT Hub Event Grid latency on ${label:resource_name} |\n| [ am_iot_hub_jobs_failed ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.jobs_status | IoT Hub job failures on ${label:resource_name} |\n| [ am_iot_hub_twin_query_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.twin_queries | IoT Hub twin query failures on ${label:resource_name} |\n| [ am_iot_hub_c2d_commands_abandoned ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.c2d_commands | IoT Hub C2D commands abandoned on ${label:resource_name} |\n| [ am_iot_hub_c2d_commands_rejected ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.c2d_commands | IoT Hub C2D commands rejected on ${label:resource_name} |\n| [ am_iot_hub_routing_delivery_latency_preview ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_iot_hub.conf) | azure_monitor.iot_hub.routing_delivery_latency_preview | IoT Hub routing delivery latency on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.iot_hub.c2d_commands | completed, abandoned, rejected | messages/s |\n| azure_monitor.iot_hub.c2d_messages_expired | expired | messages/s |\n| azure_monitor.iot_hub.c2d_methods | successful, failed | invocations/s |\n| azure_monitor.iot_hub.c2d_methods_request_size | average | bytes |\n| azure_monitor.iot_hub.c2d_methods_response_size | average | bytes |\n| azure_monitor.iot_hub.c2d_twin_reads | successful, failed | operations/s |\n| azure_monitor.iot_hub.c2d_twin_read_size | average | bytes |\n| azure_monitor.iot_hub.c2d_twin_updates | successful, failed | operations/s |\n| azure_monitor.iot_hub.c2d_twin_update_size | average | bytes |\n| azure_monitor.iot_hub.d2c_telemetry | attempted, sent | messages/s |\n| azure_monitor.iot_hub.d2c_telemetry_throttle | throttled | errors/s |\n| azure_monitor.iot_hub.d2c_twin_reads | successful, failed | operations/s |\n| azure_monitor.iot_hub.d2c_twin_read_size | average | bytes |\n| azure_monitor.iot_hub.d2c_twin_updates | successful, failed | operations/s |\n| azure_monitor.iot_hub.d2c_twin_update_size | average | bytes |\n| azure_monitor.iot_hub.routing_deliveries | delivered, dropped, orphaned, invalid, fallback | messages/s |\n| azure_monitor.iot_hub.routing_delivery_by_endpoint | builtin_events, event_hubs, service_bus_queues, service_bus_topics, storage | messages/s |\n| azure_monitor.iot_hub.routing_storage_blobs | blobs | blobs/s |\n| azure_monitor.iot_hub.routing_storage_data | bytes | bytes/s |\n| azure_monitor.iot_hub.routing_latency | builtin_events, event_hubs, service_bus_queues, service_bus_topics, storage | milliseconds |\n| azure_monitor.iot_hub.routing_deliveries_preview | deliveries | deliveries/s |\n| azure_monitor.iot_hub.routing_delivery_latency_preview | average | milliseconds |\n| azure_monitor.iot_hub.routing_data_size_preview | bytes | bytes/s |\n| azure_monitor.iot_hub.connections | successful | connections/s |\n| azure_monitor.iot_hub.connected_devices | connected | devices |\n| azure_monitor.iot_hub.total_devices | total | devices |\n| azure_monitor.iot_hub.daily_message_quota | used | messages |\n| azure_monitor.iot_hub.data_usage | data_usage, data_usage_v2 | bytes/s |\n| azure_monitor.iot_hub.configurations | operations | operations/s |\n| azure_monitor.iot_hub.event_grid_deliveries | deliveries | deliveries/s |\n| azure_monitor.iot_hub.event_grid_latency | average | milliseconds |\n| azure_monitor.iot_hub.jobs_status | completed, failed | operations/s |\n| azure_monitor.iot_hub.jobs_cancel | successful, failed | operations/s |\n| azure_monitor.iot_hub.jobs_create_method | successful, failed | operations/s |\n| azure_monitor.iot_hub.jobs_create_twin_update | successful, failed | operations/s |\n| azure_monitor.iot_hub.jobs_list | successful, failed | operations/s |\n| azure_monitor.iot_hub.jobs_query | successful, failed | operations/s |\n| azure_monitor.iot_hub.twin_queries | successful, failed | queries/s |\n| azure_monitor.iot_hub.twin_queries_result_size | average | bytes |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_IoT_Hub",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-key_vault",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Key Vault",link:"https://learn.microsoft.com/azure/key-vault/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","key","vault","secrets","certificates","security"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Key Vault\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Key Vault with metrics covering:\n\n- **Availability** -- overall vault availability percentage\n- **API** -- API activity (hits/results), API latency\n- **Saturation** -- API saturation approaching service limits\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_key_vault_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_key_vault.conf) | azure_monitor.key_vault.availability | Key Vault availability on ${label:resource_name} |\n| [ am_key_vault_api_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_key_vault.conf) | azure_monitor.key_vault.api_latency | Key Vault API latency on ${label:resource_name} |\n| [ am_key_vault_saturation ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_key_vault.conf) | azure_monitor.key_vault.saturation | Key Vault saturation on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.key_vault.availability | average | percentage |\n| azure_monitor.key_vault.api_latency | average | milliseconds |\n| azure_monitor.key_vault.saturation | average | percentage |\n| azure_monitor.key_vault.api_activity | hits, results | operations/s |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Key_Vault",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-aks",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Kubernetes Service Cluster",link:"https://learn.microsoft.com/azure/aks/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","kubernetes","aks","k8s","containers","cluster"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Kubernetes Service Cluster\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Kubernetes Service (AKS) with metrics covering:\n\n- **Control plane** -- API server CPU/memory, etcd CPU/memory/database utilization, inflight requests\n- **Nodes** -- allocatable CPU/memory, per-node CPU (millicores and %), memory (RSS, working set), disk usage, network traffic\n- **Pods** -- pods by phase, pods in ready state, node conditions\n- **Autoscaler** -- autoscaler health, unneeded nodes, unschedulable pods\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_aks_apiserver_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_aks.conf) | azure_monitor.aks.apiserver_cpu | AKS API server CPU on ${label:resource_name} |\n| [ am_aks_apiserver_memory ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_aks.conf) | azure_monitor.aks.apiserver_memory | AKS API server memory on ${label:resource_name} |\n| [ am_aks_apiserver_inflight_requests ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_aks.conf) | azure_monitor.aks.apiserver_inflight_requests | AKS API server inflight requests on ${label:resource_name} |\n| [ am_aks_etcd_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_aks.conf) | azure_monitor.aks.etcd_cpu | AKS etcd CPU on ${label:resource_name} |\n| [ am_aks_etcd_memory ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_aks.conf) | azure_monitor.aks.etcd_memory | AKS etcd memory on ${label:resource_name} |\n| [ am_aks_etcd_database ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_aks.conf) | azure_monitor.aks.etcd_database | AKS etcd database usage on ${label:resource_name} |\n| [ am_aks_autoscaler_safe_to_autoscale ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_aks.conf) | azure_monitor.aks.autoscaler_health | AKS autoscaler unsafe on ${label:resource_name} |\n| [ am_aks_autoscaler_unschedulable_pods ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_aks.conf) | azure_monitor.aks.autoscaler_unschedulable_pods | AKS unschedulable pods on ${label:resource_name} |\n| [ am_aks_node_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_aks.conf) | azure_monitor.aks.node_cpu_percentage | AKS node CPU on ${label:resource_name} |\n| [ am_aks_node_memory_working_set ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_aks.conf) | azure_monitor.aks.node_memory_working_set_percentage | AKS node memory working set on ${label:resource_name} |\n| [ am_aks_node_memory_rss ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_aks.conf) | azure_monitor.aks.node_memory_rss_percentage | AKS node memory RSS on ${label:resource_name} |\n| [ am_aks_node_disk ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_aks.conf) | azure_monitor.aks.node_disk_percentage | AKS node disk usage on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.aks.apiserver_cpu | average, maximum | percentage |\n| azure_monitor.aks.apiserver_memory | average, maximum | percentage |\n| azure_monitor.aks.apiserver_inflight_requests | average | requests |\n| azure_monitor.aks.etcd_cpu | average, maximum | percentage |\n| azure_monitor.aks.etcd_memory | average, maximum | percentage |\n| azure_monitor.aks.etcd_database | average, maximum | percentage |\n| azure_monitor.aks.pod_status_phase | average | pods |\n| azure_monitor.aks.pod_status_ready | average | pods |\n| azure_monitor.aks.allocatable_cpu | average | cores |\n| azure_monitor.aks.allocatable_memory | average | bytes |\n| azure_monitor.aks.node_conditions | average | nodes |\n| azure_monitor.aks.autoscaler_health | safe_to_autoscale, cooldown | state |\n| azure_monitor.aks.autoscaler_unschedulable_pods | average | pods |\n| azure_monitor.aks.autoscaler_unneeded_nodes | average | nodes |\n| azure_monitor.aks.node_cpu_millicores | average, maximum | millicores |\n| azure_monitor.aks.node_cpu_percentage | average, maximum | percentage |\n| azure_monitor.aks.node_memory_working_set | average, maximum | bytes |\n| azure_monitor.aks.node_memory_working_set_percentage | average, maximum | percentage |\n| azure_monitor.aks.node_memory_rss | average, maximum | bytes |\n| azure_monitor.aks.node_memory_rss_percentage | average, maximum | percentage |\n| azure_monitor.aks.node_disk_usage | average, maximum | bytes |\n| azure_monitor.aks.node_disk_percentage | average, maximum | percentage |\n| azure_monitor.aks.node_network | in, out | bytes |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Kubernetes_Service_Cluster",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-load_balancers",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Load Balancer",link:"https://learn.microsoft.com/azure/load-balancer/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","load","balancer","networking","lb"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Load Balancer\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Load Balancer with metrics covering:\n\n- **Availability** -- data path availability, health probe status, global backend availability\n- **Throughput** -- byte and packet throughput\n- **Connections** -- SNAT connections, SYN packet count\n- **SNAT ports** -- allocated and used SNAT ports\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_load_balancers_vip_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_load_balancers.conf) | azure_monitor.load_balancers.vip_availability | LB data path availability on ${label:resource_name} |\n| [ am_load_balancers_dip_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_load_balancers.conf) | azure_monitor.load_balancers.dip_availability | LB health probe status on ${label:resource_name} |\n| [ am_load_balancers_global_backend_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_load_balancers.conf) | azure_monitor.load_balancers.global_backend_availability | LB global backend availability on ${label:resource_name} |\n| [ am_load_balancers_snat_port_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_load_balancers.conf) | azure_monitor.load_balancers.snat_ports | LB SNAT port utilization on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.load_balancers.vip_availability | average | percentage |\n| azure_monitor.load_balancers.dip_availability | average | percentage |\n| azure_monitor.load_balancers.global_backend_availability | average | percentage |\n| azure_monitor.load_balancers.byte_throughput | total | bytes/s |\n| azure_monitor.load_balancers.packet_throughput | total | packets/s |\n| azure_monitor.load_balancers.syn_count | total | packets/s |\n| azure_monitor.load_balancers.snat_connections | total | connections/s |\n| azure_monitor.load_balancers.snat_ports | allocated, used | ports |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Load_Balancer",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-log_analytics",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Log Analytics Workspace",link:"https://learn.microsoft.com/azure/azure-monitor/logs/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","log","analytics","monitoring","logs","kusto"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Log Analytics Workspace\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Log Analytics Workspace with metrics covering:\n\n- **Ingestion** -- ingestion volume (records/s), ingestion latency (average/max/min)\n- **Queries** -- query count (total/failed), query availability\n- **Export** -- exported data (bytes/s), exported records\n- **Legacy agent** -- CPU utilization (processor/privileged/user/idle), memory (available/used/free), disk (free space/utilization/I/O/queue/latency), network (traffic/packets/errors/throughput), swap, paging, system processes, uptime, events, heartbeats, users\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_log_analytics_query_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_log_analytics.conf) | azure_monitor.log_analytics.query_availability | Log Analytics query availability on ${label:resource_name} |\n| [ am_log_analytics_ingestion_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_log_analytics.conf) | azure_monitor.log_analytics.ingestion_latency | Log Analytics ingestion latency on ${label:resource_name} |\n| [ am_log_analytics_query_failure_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_log_analytics.conf) | azure_monitor.log_analytics.queries | Log Analytics query failures on ${label:resource_name} |\n| [ am_log_analytics_export_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_log_analytics.conf) | azure_monitor.log_analytics.export_failures | Log Analytics export failures on ${label:resource_name} |\n| [ am_log_analytics_legacy_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_log_analytics.conf) | azure_monitor.log_analytics.legacy_cpu_utilization | Legacy agent CPU on ${label:resource_name} |\n| [ am_log_analytics_legacy_memory ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_log_analytics.conf) | azure_monitor.log_analytics.legacy_memory_utilization | Legacy agent memory on ${label:resource_name} |\n| [ am_log_analytics_legacy_swap ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_log_analytics.conf) | azure_monitor.log_analytics.legacy_swap_utilization | Legacy agent swap usage on ${label:resource_name} |\n| [ am_log_analytics_legacy_disk_space ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_log_analytics.conf) | azure_monitor.log_analytics.legacy_disk_space_utilization | Legacy agent disk space on ${label:resource_name} |\n| [ am_log_analytics_legacy_disk_inodes ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_log_analytics.conf) | azure_monitor.log_analytics.legacy_disk_inodes | Legacy agent inode usage on ${label:resource_name} |\n| [ am_log_analytics_legacy_disk_read_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_log_analytics.conf) | azure_monitor.log_analytics.legacy_disk_io_latency | Legacy agent disk read latency on ${label:resource_name} |\n| [ am_log_analytics_legacy_disk_write_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_log_analytics.conf) | azure_monitor.log_analytics.legacy_disk_io_latency | Legacy agent disk write latency on ${label:resource_name} |\n| [ am_log_analytics_legacy_disk_queue ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_log_analytics.conf) | azure_monitor.log_analytics.legacy_disk_queue | Legacy agent disk queue on ${label:resource_name} |\n| [ am_log_analytics_legacy_network_rx_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_log_analytics.conf) | azure_monitor.log_analytics.legacy_network_errors | Legacy agent network RX errors on ${label:resource_name} |\n| [ am_log_analytics_legacy_network_tx_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_log_analytics.conf) | azure_monitor.log_analytics.legacy_network_errors | Legacy agent network TX errors on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.log_analytics.query_availability | availability | percentage |\n| azure_monitor.log_analytics.ingestion_latency | average, maximum, minimum | seconds |\n| azure_monitor.log_analytics.ingestion_volume | records | records/s |\n| azure_monitor.log_analytics.queries | total, failed | queries/s |\n| azure_monitor.log_analytics.export_data | exported | bytes/s |\n| azure_monitor.log_analytics.export_records | exported | records/s |\n| azure_monitor.log_analytics.export_failures | failed | exports/s |\n| azure_monitor.log_analytics.legacy_cpu_utilization | processor, privileged, user, idle | percentage |\n| azure_monitor.log_analytics.legacy_cpu_detailed | dpc, interrupt, io_wait, nice | percentage |\n| azure_monitor.log_analytics.legacy_cpu_pct | privileged, user | percentage |\n| azure_monitor.log_analytics.legacy_memory_utilization | available, used, committed | percentage |\n| azure_monitor.log_analytics.legacy_memory_available | available_mbytes, available_mbytes_memory | megabytes |\n| azure_monitor.log_analytics.legacy_memory_used_kbytes | used | kilobytes |\n| azure_monitor.log_analytics.legacy_memory_used_mbytes | used | megabytes |\n| azure_monitor.log_analytics.legacy_memory_free | physical, virtual, shared | megabytes |\n| azure_monitor.log_analytics.legacy_swap_utilization | available, used | percentage |\n| azure_monitor.log_analytics.legacy_swap_size | available, used | megabytes |\n| azure_monitor.log_analytics.legacy_disk_space_utilization | free, used | percentage |\n| azure_monitor.log_analytics.legacy_disk_inodes | free, used | percentage |\n| azure_monitor.log_analytics.legacy_disk_free | free | megabytes |\n| azure_monitor.log_analytics.legacy_disk_io_throughput | read, write, logical, physical | bytes/s |\n| azure_monitor.log_analytics.legacy_disk_io_operations | reads, writes, transfers | operations/s |\n| azure_monitor.log_analytics.legacy_disk_io_latency | read, write, transfer | seconds |\n| azure_monitor.log_analytics.legacy_disk_queue | queue_length | operations |\n| azure_monitor.log_analytics.legacy_paging | reads, writes, total | pages/s |\n| azure_monitor.log_analytics.legacy_paging_files | free, stored | megabytes |\n| azure_monitor.log_analytics.legacy_network_throughput_win | received, sent, total | bytes/s |\n| azure_monitor.log_analytics.legacy_network_traffic | total, received, transmitted | bytes |\n| azure_monitor.log_analytics.legacy_network_packets | received, transmitted | packets |\n| azure_monitor.log_analytics.legacy_network_errors | rx, tx, collisions | errors |\n| azure_monitor.log_analytics.legacy_system | processes | processes |\n| azure_monitor.log_analytics.legacy_processor_queue | queue_length | threads |\n| azure_monitor.log_analytics.legacy_uptime | uptime | seconds |\n| azure_monitor.log_analytics.legacy_users | users | users |\n| azure_monitor.log_analytics.legacy_events | events | events/s |\n| azure_monitor.log_analytics.legacy_heartbeat | heartbeats | heartbeats/s |\n| azure_monitor.log_analytics.legacy_updates | updates | updates |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Log_Analytics_Workspace",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-logic_apps",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Logic Apps Workflow",link:"https://learn.microsoft.com/azure/logic-apps/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","logic","apps","workflow","integration","automation"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Logic Apps Workflow\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Logic Apps with metrics covering:\n\n- **Runs** -- run lifecycle (started/completed/succeeded/failed/cancelled), run failure rate\n- **Actions** -- action lifecycle (started/completed/succeeded/failed/skipped)\n- **Triggers** -- trigger lifecycle (started/completed/succeeded/fired/failed/skipped)\n- **Latency** -- run, action, and trigger latency\n- **Billing** -- billable executions (total/actions/triggers), billing by type (native/connector/storage)\n- **Throttling** -- run, action, and trigger throttling events\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_logic_apps_run_failure_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_logic_apps.conf) | azure_monitor.logic_apps.run_failure_rate | Logic Apps run failure rate on ${label:resource_name} |\n| [ am_logic_apps_runs_failed ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_logic_apps.conf) | azure_monitor.logic_apps.run_lifecycle | Logic Apps failed runs on ${label:resource_name} |\n| [ am_logic_apps_run_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_logic_apps.conf) | azure_monitor.logic_apps.run_latency | Logic Apps run latency on ${label:resource_name} |\n| [ am_logic_apps_run_throttled ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_logic_apps.conf) | azure_monitor.logic_apps.run_throttling | Logic Apps run throttling on ${label:resource_name} |\n| [ am_logic_apps_actions_failed ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_logic_apps.conf) | azure_monitor.logic_apps.action_lifecycle | Logic Apps failed actions on ${label:resource_name} |\n| [ am_logic_apps_action_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_logic_apps.conf) | azure_monitor.logic_apps.action_latency | Logic Apps action latency on ${label:resource_name} |\n| [ am_logic_apps_action_throttled ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_logic_apps.conf) | azure_monitor.logic_apps.action_throttling | Logic Apps action throttling on ${label:resource_name} |\n| [ am_logic_apps_triggers_failed ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_logic_apps.conf) | azure_monitor.logic_apps.trigger_lifecycle | Logic Apps failed triggers on ${label:resource_name} |\n| [ am_logic_apps_trigger_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_logic_apps.conf) | azure_monitor.logic_apps.trigger_latency | Logic Apps trigger latency on ${label:resource_name} |\n| [ am_logic_apps_trigger_throttled ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_logic_apps.conf) | azure_monitor.logic_apps.trigger_throttling | Logic Apps trigger throttling on ${label:resource_name} |\n| [ am_logic_apps_completion_token_overflow ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_logic_apps.conf) | azure_monitor.logic_apps.agent | Logic Apps completion token overflow on ${label:resource_name} |\n| [ am_logic_apps_prompt_token_overflow ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_logic_apps.conf) | azure_monitor.logic_apps.agent | Logic Apps prompt token overflow on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.logic_apps.run_lifecycle | started, completed, succeeded, failed, cancelled | runs/s |\n| azure_monitor.logic_apps.run_latency | all, success | seconds |\n| azure_monitor.logic_apps.run_failure_rate | failure_rate | percentage |\n| azure_monitor.logic_apps.run_throttling | during_run, at_start | events/s |\n| azure_monitor.logic_apps.action_lifecycle | started, completed, succeeded, failed, skipped | actions/s |\n| azure_monitor.logic_apps.action_latency | all, success | seconds |\n| azure_monitor.logic_apps.action_throttling | total | events/s |\n| azure_monitor.logic_apps.trigger_lifecycle | started, completed, succeeded, fired, failed, skipped | triggers/s |\n| azure_monitor.logic_apps.trigger_latency | all, fire, success | seconds |\n| azure_monitor.logic_apps.trigger_throttling | total | events/s |\n| azure_monitor.logic_apps.billable_executions | total, actions, triggers | executions/s |\n| azure_monitor.logic_apps.billing_by_type | native, standard_connector, storage | operations/s |\n| azure_monitor.logic_apps.agent | loop_executions, completion_overflow, prompt_overflow | events/s |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Logic_Apps_Workflow",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-machine_learning",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Machine Learning Workspace",link:"https://learn.microsoft.com/azure/machine-learning/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","machine","learning","ml","ai","workspace"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Machine Learning Workspace\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Machine Learning with metrics covering:\n\n- **Compute** -- CPU utilization and millicores (used/capacity), CPU memory (used/capacity)\n- **GPU** -- GPU utilization (cluster/node), GPU memory (used/capacity), GPU energy\n- **Cluster** -- total cores and nodes, cluster cores and nodes by state (active/idle/leaving/preempted/unusable)\n- **Runs** -- run completion (completed/failed/cancelled), run lifecycle, run issues (errors/warnings)\n- **Models** -- model registrations (succeeded/failed), model deployments (started/succeeded/failed)\n- **Quota** -- quota utilization\n- **Storage** -- disk I/O (read/write), disk usage (used/available), storage API calls\n- **Network** -- network traffic (in/out), InfiniBand traffic\n- **AI agents** -- agent runs, messages, tokens, tool calls, events, indexed files\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_ml_quota_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_machine_learning.conf) | azure_monitor.machine_learning.quota_utilization | ML quota utilization on ${label:resource_name} |\n| [ am_ml_unusable_cores ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_machine_learning.conf) | azure_monitor.machine_learning.cluster_cores | ML unusable cores on ${label:resource_name} |\n| [ am_ml_preempted_cores ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_machine_learning.conf) | azure_monitor.machine_learning.cluster_cores | ML preempted cores on ${label:resource_name} |\n| [ am_ml_unusable_nodes ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_machine_learning.conf) | azure_monitor.machine_learning.cluster_nodes | ML unusable nodes on ${label:resource_name} |\n| [ am_ml_cpu_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_machine_learning.conf) | azure_monitor.machine_learning.cpu_utilization | ML CPU utilization on ${label:resource_name} |\n| [ am_ml_cpu_memory_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_machine_learning.conf) | azure_monitor.machine_learning.cpu_memory_utilization | ML CPU memory utilization on ${label:resource_name} |\n| [ am_ml_gpu_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_machine_learning.conf) | azure_monitor.machine_learning.gpu_utilization | ML GPU utilization on ${label:resource_name} |\n| [ am_ml_gpu_memory_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_machine_learning.conf) | azure_monitor.machine_learning.gpu_memory_utilization | ML GPU memory utilization on ${label:resource_name} |\n| [ am_ml_disk_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_machine_learning.conf) | azure_monitor.machine_learning.disk_usage | ML disk utilization on ${label:resource_name} |\n| [ am_ml_model_deploy_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_machine_learning.conf) | azure_monitor.machine_learning.model_deployments | ML model deployment failures on ${label:resource_name} |\n| [ am_ml_model_register_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_machine_learning.conf) | azure_monitor.machine_learning.model_registrations | ML model registration failures on ${label:resource_name} |\n| [ am_ml_failed_runs ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_machine_learning.conf) | azure_monitor.machine_learning.run_completion | ML failed runs on ${label:resource_name} |\n| [ am_ml_not_responding_runs ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_machine_learning.conf) | azure_monitor.machine_learning.run_completion | ML not-responding runs on ${label:resource_name} |\n| [ am_ml_run_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_machine_learning.conf) | azure_monitor.machine_learning.run_issues | ML run errors on ${label:resource_name} |\n| [ am_ml_storage_api_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_machine_learning.conf) | azure_monitor.machine_learning.storage_api_calls | ML storage API failure rate on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.machine_learning.agent_events | agent_events, thread_events | events/s |\n| azure_monitor.machine_learning.agent_messages | messages | messages/s |\n| azure_monitor.machine_learning.agent_runs | runs | runs/s |\n| azure_monitor.machine_learning.agent_tokens | tokens | tokens/s |\n| azure_monitor.machine_learning.agent_tool_calls | tool_calls | calls/s |\n| azure_monitor.machine_learning.agent_indexed_files | indexed_files | files/s |\n| azure_monitor.machine_learning.model_deployments | started, succeeded, failed | deployments/s |\n| azure_monitor.machine_learning.model_registrations | succeeded, failed | registrations/s |\n| azure_monitor.machine_learning.cluster_cores | active, idle, leaving, preempted, unusable | cores |\n| azure_monitor.machine_learning.total_cores | total | cores |\n| azure_monitor.machine_learning.cluster_nodes | active, idle, leaving, preempted, unusable | nodes |\n| azure_monitor.machine_learning.total_nodes | total | nodes |\n| azure_monitor.machine_learning.quota_utilization | utilization | percentage |\n| azure_monitor.machine_learning.cpu_utilization | cluster_cpu, node_cpu | percentage |\n| azure_monitor.machine_learning.cpu_millicores | used, capacity | millicores |\n| azure_monitor.machine_learning.cpu_memory_utilization | utilization | percentage |\n| azure_monitor.machine_learning.cpu_memory_megabytes | used, capacity | megabytes |\n| azure_monitor.machine_learning.gpu_utilization | cluster_gpu, node_gpu | percentage |\n| azure_monitor.machine_learning.gpu_milligpus | used, capacity | milliGPUs |\n| azure_monitor.machine_learning.gpu_memory_utilization | cluster_gpu_memory, node_gpu_memory | percentage |\n| azure_monitor.machine_learning.gpu_memory_megabytes | used, capacity | megabytes |\n| azure_monitor.machine_learning.gpu_energy | energy | joules/s |\n| azure_monitor.machine_learning.disk_usage | used, available | megabytes |\n| azure_monitor.machine_learning.disk_io | read, write | megabytes/s |\n| azure_monitor.machine_learning.network_traffic | in, out | megabytes/s |\n| azure_monitor.machine_learning.infiniband_traffic | receive, transmit | megabytes/s |\n| azure_monitor.machine_learning.storage_api_calls | success, failure | calls/s |\n| azure_monitor.machine_learning.run_lifecycle | not_started, starting, preparing, provisioning, queued, started | runs/s |\n| azure_monitor.machine_learning.run_completion | completed, failed, finalizing, cancelled, cancel_requested, not_responding | runs/s |\n| azure_monitor.machine_learning.run_issues | errors, warnings | events/s |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Machine_Learning_Workspace",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Monitor",link:"https://learn.microsoft.com/azure/azure-monitor/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","monitor","cloud"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Monitor\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\nThis collector provides real-time visibility into your Azure infrastructure by collecting platform metrics from the Azure Monitor Metrics API.\n\n**Key capabilities:**\n\n- **Multi-subscription** -- monitor resources across one or more Azure subscriptions in a single job\n- **Automatic service detection** -- discovers resources and enables matching metric profiles without manual configuration\n- **[38 built-in service profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default)** -- covers databases, compute, networking, storage, AI, analytics, and more\n- **Flexible discovery** -- use structured filters (resource groups, regions, tags) or a custom Azure Resource Graph KQL query\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThe metrics collected depend on which Azure Monitor profiles are active. Each profile corresponds to an Azure service (e.g., SQL Database, Virtual Machines) and defines the specific charts and metrics for that service.\n\nWith the default `profiles.mode: auto`, profiles are activated automatically based on the resource types found in your subscriptions.\n\n**See the service-specific integrations below for detailed metric lists per Azure service.**\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Monitor",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-mysql_flexible",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure MySQL Flexible Server",link:"https://learn.microsoft.com/azure/mysql/flexible-server/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","mysql","database","flexible"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure MySQL Flexible Server\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure MySQL Flexible Server with metrics covering:\n\n- **Compute** -- CPU utilization, CPU credits (consumed/remaining)\n- **Memory** -- memory utilization\n- **Storage** -- storage used/limit, storage breakdown (data/ibdata1/binlog), backup storage, server log storage, I/O utilization\n- **Connections** -- active connections, aborted connections, total connections, threads running\n- **Queries** -- queries (total/slow), DML statements (select/insert/update/delete), DDL statements\n- **InnoDB** -- buffer pool I/O (read requests/disk reads), buffer pool pages, data writes, row lock time/waits\n- **Replication** -- replication lag (replica/HA), HA status (I/O/SQL), replica status\n- **Network** -- network traffic (in/out)\n- **Health** -- uptime, deadlocks, lock timeouts\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_mysql_flexible_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.cpu | MySQL Flexible CPU on ${label:resource_name} |\n| [ am_mysql_flexible_memory ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.memory | MySQL Flexible memory on ${label:resource_name} |\n| [ am_mysql_flexible_io_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.io_utilization | MySQL Flexible I/O utilization on ${label:resource_name} |\n| [ am_mysql_flexible_storage_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.storage_utilization | MySQL Flexible storage on ${label:resource_name} |\n| [ am_mysql_flexible_serverlog_storage_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.serverlog_storage_utilization | MySQL Flexible server log storage on ${label:resource_name} |\n| [ am_mysql_flexible_cpu_credits_remaining ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.cpu_credits | MySQL Flexible CPU credits low on ${label:resource_name} |\n| [ am_mysql_flexible_ha_io_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.ha_status | MySQL Flexible HA IO thread down on ${label:resource_name} |\n| [ am_mysql_flexible_ha_sql_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.ha_status | MySQL Flexible HA SQL thread down on ${label:resource_name} |\n| [ am_mysql_flexible_replica_io_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.replica_status | MySQL Flexible replica IO thread down on ${label:resource_name} |\n| [ am_mysql_flexible_replica_sql_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.replica_status | MySQL Flexible replica SQL thread down on ${label:resource_name} |\n| [ am_mysql_flexible_replication_lag ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.replication_lag | MySQL Flexible replica lag on ${label:resource_name} |\n| [ am_mysql_flexible_ha_replication_lag ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.replication_lag | MySQL Flexible HA replication lag on ${label:resource_name} |\n| [ am_mysql_flexible_innodb_row_lock_time ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.innodb_row_lock_time | MySQL Flexible row lock wait time on ${label:resource_name} |\n| [ am_mysql_flexible_lock_deadlocks ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.lock_deadlocks | MySQL Flexible deadlocks on ${label:resource_name} |\n| [ am_mysql_flexible_lock_timeouts ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.lock_timeouts | MySQL Flexible lock timeouts on ${label:resource_name} |\n| [ am_mysql_flexible_aborted_connections ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.aborted_connections | MySQL Flexible aborted connections on ${label:resource_name} |\n| [ am_mysql_flexible_slow_queries ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.queries | MySQL Flexible slow queries on ${label:resource_name} |\n| [ am_mysql_flexible_innodb_row_lock_waits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.innodb_row_lock_waits | MySQL Flexible row lock waits on ${label:resource_name} |\n| [ am_mysql_flexible_history_list_length ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_mysql_flexible.conf) | azure_monitor.mysql_flexible.history_list_length | MySQL Flexible history list length on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.mysql_flexible.cpu | average | percentage |\n| azure_monitor.mysql_flexible.memory | average | percentage |\n| azure_monitor.mysql_flexible.io_utilization | average | percentage |\n| azure_monitor.mysql_flexible.cpu_credits | consumed, remaining | credits |\n| azure_monitor.mysql_flexible.ha_status | io, sql | status |\n| azure_monitor.mysql_flexible.replica_status | io, sql | status |\n| azure_monitor.mysql_flexible.uptime | uptime | seconds |\n| azure_monitor.mysql_flexible.replication_lag | replica, ha | seconds |\n| azure_monitor.mysql_flexible.innodb_row_lock_time | average | milliseconds |\n| azure_monitor.mysql_flexible.innodb_row_lock_waits | total | waits/s |\n| azure_monitor.mysql_flexible.aborted_connections | total | connections/s |\n| azure_monitor.mysql_flexible.active_connections | average | connections |\n| azure_monitor.mysql_flexible.total_connections | total | connections/s |\n| azure_monitor.mysql_flexible.active_transactions | average | transactions |\n| azure_monitor.mysql_flexible.threads_running | maximum | threads |\n| azure_monitor.mysql_flexible.queries | total, slow | queries/s |\n| azure_monitor.mysql_flexible.dml_statements | select, insert, update, delete | statements/s |\n| azure_monitor.mysql_flexible.ddl_statements | create_table, alter_table, drop_table, create_db, drop_db | statements/s |\n| azure_monitor.mysql_flexible.lock_deadlocks | total | deadlocks/s |\n| azure_monitor.mysql_flexible.lock_timeouts | total | timeouts/s |\n| azure_monitor.mysql_flexible.innodb_buffer_pool_pages | data, dirty, free, flushed | pages |\n| azure_monitor.mysql_flexible.innodb_buffer_pool_io | read_requests, disk_reads | requests/s |\n| azure_monitor.mysql_flexible.innodb_data_writes | total | writes/s |\n| azure_monitor.mysql_flexible.sort_merge_passes | total | passes/s |\n| azure_monitor.mysql_flexible.network | in, out | bytes/s |\n| azure_monitor.mysql_flexible.storage_io | total | operations/s |\n| azure_monitor.mysql_flexible.storage | used, limit | bytes |\n| azure_monitor.mysql_flexible.storage_utilization | average | percentage |\n| azure_monitor.mysql_flexible.storage_breakdown | data, ibdata1, binlog, others | bytes |\n| azure_monitor.mysql_flexible.backup_storage | used | bytes |\n| azure_monitor.mysql_flexible.serverlog_storage | used, limit | bytes |\n| azure_monitor.mysql_flexible.serverlog_storage_utilization | average | percentage |\n| azure_monitor.mysql_flexible.history_list_length | maximum | entries |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_MySQL_Flexible_Server",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-nat_gateway",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure NAT Gateway",link:"https://learn.microsoft.com/azure/nat-gateway/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","nat","gateway","networking"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure NAT Gateway\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure NAT Gateway with metrics covering:\n\n- **Throughput** -- byte and packet throughput\n- **Connections** -- SNAT connections, total SNAT connections\n- **Drops** -- dropped packets\n- **Availability** -- datapath availability percentage\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_nat_gateway_datapath_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_nat_gateway.conf) | azure_monitor.nat_gateway.datapath_availability | NAT Gateway availability on ${label:resource_name} |\n| [ am_nat_gateway_dropped_packets ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_nat_gateway.conf) | azure_monitor.nat_gateway.dropped_packets | NAT Gateway packet drops on ${label:resource_name} |\n| [ am_nat_gateway_snat_connections ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_nat_gateway.conf) | azure_monitor.nat_gateway.snat_connections | NAT Gateway SNAT connections on ${label:resource_name} |\n| [ am_nat_gateway_total_connections ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_nat_gateway.conf) | azure_monitor.nat_gateway.total_connections | NAT Gateway total connections on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.nat_gateway.datapath_availability | average | percentage |\n| azure_monitor.nat_gateway.byte_throughput | total | bytes/s |\n| azure_monitor.nat_gateway.packet_throughput | total | packets/s |\n| azure_monitor.nat_gateway.dropped_packets | total | packets/s |\n| azure_monitor.nat_gateway.snat_connections | total | connections/s |\n| azure_monitor.nat_gateway.total_connections | total | connections/s |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_NAT_Gateway",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-postgres_flexible",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure PostgreSQL Flexible Server",link:"https://learn.microsoft.com/azure/postgresql/flexible-server/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","postgresql","postgres","database","flexible"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure PostgreSQL Flexible Server\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure PostgreSQL Flexible Server with metrics covering:\n\n- **Compute** -- CPU utilization, burstable CPU credits (consumed/remaining)\n- **Memory** -- memory utilization\n- **Storage** -- storage used/free, backup storage, WAL storage, database size, disk queue depth and saturation\n- **I/O** -- IOPS (read/write), disk throughput, temp bytes/files\n- **Connections** -- active connections, connection rate, max connections, PgBouncer client/server/pooled connections\n- **Database** -- transaction rate, commits/rollbacks, tuple reads/writes, replication lag (time/bytes), deadlocks\n- **Maintenance** -- autovacuum operations, table coverage, bloat percentage, buffer cache hit rate\n- **Sessions** -- sessions by state and wait event type, backend count\n- **Availability** -- database alive state\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_postgres_flexible_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.availability | PostgreSQL Flexible Server down on ${label:resource_name} |\n| [ am_postgres_flexible_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.cpu | PostgreSQL Flexible CPU on ${label:resource_name} |\n| [ am_postgres_flexible_memory ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.memory | PostgreSQL Flexible memory on ${label:resource_name} |\n| [ am_postgres_flexible_storage_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.storage_utilization | PostgreSQL Flexible storage on ${label:resource_name} |\n| [ am_postgres_flexible_disk_bandwidth_saturation ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.disk_saturation | PostgreSQL Flexible disk bandwidth saturation on ${label:resource_name} |\n| [ am_postgres_flexible_disk_iops_saturation ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.disk_saturation | PostgreSQL Flexible disk IOPS saturation on ${label:resource_name} |\n| [ am_postgres_flexible_disk_queue_depth ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.disk_queue_depth | PostgreSQL Flexible disk queue depth on ${label:resource_name} |\n| [ am_postgres_flexible_failed_connections ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.connection_rate | PostgreSQL Flexible failed connections on ${label:resource_name} |\n| [ am_postgres_flexible_tcp_connection_backlog ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.tcp_connection_backlog | PostgreSQL Flexible TCP connection backlog on ${label:resource_name} |\n| [ am_postgres_flexible_deadlocks ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.deadlocks | PostgreSQL Flexible deadlocks on ${label:resource_name} |\n| [ am_postgres_flexible_rollback_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.transactions | PostgreSQL Flexible rollback ratio on ${label:resource_name} |\n| [ am_postgres_flexible_longest_query ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.long_running | PostgreSQL Flexible long running query on ${label:resource_name} |\n| [ am_postgres_flexible_longest_transaction ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.long_running | PostgreSQL Flexible long running transaction on ${label:resource_name} |\n| [ am_postgres_flexible_xid_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.xid_usage | PostgreSQL Flexible transaction ID usage on ${label:resource_name} |\n| [ am_postgres_flexible_xmin_age ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.xmin_age | PostgreSQL Flexible backend xmin age on ${label:resource_name} |\n| [ am_postgres_flexible_bloat ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.bloat | PostgreSQL Flexible table bloat on ${label:resource_name} |\n| [ am_postgres_flexible_replication_lag ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.replication_lag_time | PostgreSQL Flexible replication lag on ${label:resource_name} |\n| [ am_postgres_flexible_cpu_credits_remaining ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.cpu_credits | PostgreSQL Flexible CPU credits low on ${label:resource_name} |\n| [ am_postgres_flexible_temp_bytes ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_postgres_flexible.conf) | azure_monitor.postgres_flexible.temp_bytes | PostgreSQL Flexible temp file I/O on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.postgres_flexible.cpu | average | percentage |\n| azure_monitor.postgres_flexible.memory | average | percentage |\n| azure_monitor.postgres_flexible.availability | maximum | state |\n| azure_monitor.postgres_flexible.iops | total, read, write | operations/s |\n| azure_monitor.postgres_flexible.disk_throughput | read, write | bytes/s |\n| azure_monitor.postgres_flexible.disk_saturation | bandwidth, iops | percentage |\n| azure_monitor.postgres_flexible.disk_queue_depth | average | operations |\n| azure_monitor.postgres_flexible.buffer_cache | hits, reads | blocks/s |\n| azure_monitor.postgres_flexible.active_connections | average | connections |\n| azure_monitor.postgres_flexible.connection_rate | succeeded, failed | connections/s |\n| azure_monitor.postgres_flexible.transactions | committed, rolled_back | transactions/s |\n| azure_monitor.postgres_flexible.transaction_rate | total, xact_total | transactions/s |\n| azure_monitor.postgres_flexible.deadlocks | total | deadlocks/s |\n| azure_monitor.postgres_flexible.tuple_reads | returned, fetched | tuples/s |\n| azure_monitor.postgres_flexible.tuple_writes | inserted, updated, deleted | tuples/s |\n| azure_monitor.postgres_flexible.temp_files | total | files/s |\n| azure_monitor.postgres_flexible.temp_bytes | total | bytes/s |\n| azure_monitor.postgres_flexible.long_running | query, transaction | seconds |\n| azure_monitor.postgres_flexible.xid_usage | max_used, oldest_xmin | transactions |\n| azure_monitor.postgres_flexible.xmin_age | maximum | transactions |\n| azure_monitor.postgres_flexible.network | in, out | bytes/s |\n| azure_monitor.postgres_flexible.storage | used, free | bytes |\n| azure_monitor.postgres_flexible.storage_utilization | average | percentage |\n| azure_monitor.postgres_flexible.wal_storage | used | bytes |\n| azure_monitor.postgres_flexible.database_size | average | bytes |\n| azure_monitor.postgres_flexible.backup_storage | used | bytes |\n| azure_monitor.postgres_flexible.replication_lag_time | average | seconds |\n| azure_monitor.postgres_flexible.replication_lag_bytes | physical, logical | bytes |\n| azure_monitor.postgres_flexible.sessions_by_state | maximum | sessions |\n| azure_monitor.postgres_flexible.sessions_by_wait_event_type | maximum | sessions |\n| azure_monitor.postgres_flexible.autovacuum_operations | vacuum, autovacuum, analyze, autoanalyze | operations |\n| azure_monitor.postgres_flexible.autovacuum_table_coverage | vacuumed, autovacuumed, analyzed, autoanalyzed, total | tables |\n| azure_monitor.postgres_flexible.tuple_liveness | live, dead, modified_since_analyze | tuples |\n| azure_monitor.postgres_flexible.bloat | maximum | percentage |\n| azure_monitor.postgres_flexible.backend_count | maximum | connections |\n| azure_monitor.postgres_flexible.pgbouncer_client_connections | active, waiting | connections |\n| azure_monitor.postgres_flexible.pgbouncer_server_connections | active, idle | connections |\n| azure_monitor.postgres_flexible.pgbouncer_pool_count | pools | pools |\n| azure_monitor.postgres_flexible.pgbouncer_pooled_connections | pooled_connections | connections |\n| azure_monitor.postgres_flexible.cpu_credits | consumed, remaining | credits |\n| azure_monitor.postgres_flexible.postmaster_cpu | average | percentage |\n| azure_monitor.postgres_flexible.max_connections | maximum | connections |\n| azure_monitor.postgres_flexible.tcp_connection_backlog | maximum | connections |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_PostgreSQL_Flexible_Server",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-sql_database",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure SQL Database",link:"https://learn.microsoft.com/azure/azure-sql/database/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","sql","database","mssql","dtu"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure SQL Database\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure SQL Database with metrics covering:\n\n- **CPU and DTU** -- CPU utilization (average/max), instance CPU, DTU consumption, vCore usage\n- **Memory** -- instance memory utilization\n- **Storage** -- data and allocated storage, storage utilization, tempdb size, in-memory OLTP storage\n- **I/O** -- data read and log write utilization, tempdb log utilization\n- **Connections** -- successful, failed, and firewall-blocked connections, active sessions and workers\n- **Availability** -- database availability percentage\n- **Advanced** -- deadlocks, replication lag, serverless CPU/memory/billing, ledger digest, free tier usage\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_sql_database_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.availability | SQL Database availability on ${label:resource_name} |\n| [ am_sql_database_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.cpu | SQL Database CPU on ${label:resource_name} |\n| [ am_sql_database_instance_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.instance_cpu | SQL Database instance CPU on ${label:resource_name} |\n| [ am_sql_database_instance_memory ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.instance_memory | SQL Database instance memory on ${label:resource_name} |\n| [ am_sql_database_dtu_consumption ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.dtu_consumption | SQL Database DTU consumption on ${label:resource_name} |\n| [ am_sql_database_data_io ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.io_utilization | SQL Database data I/O on ${label:resource_name} |\n| [ am_sql_database_log_write ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.io_utilization | SQL Database log write I/O on ${label:resource_name} |\n| [ am_sql_database_workers ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.resource_utilization | SQL Database worker utilization on ${label:resource_name} |\n| [ am_sql_database_sessions ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.resource_utilization | SQL Database session utilization on ${label:resource_name} |\n| [ am_sql_database_connection_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.connections | SQL Database system connection failures on ${label:resource_name} |\n| [ am_sql_database_firewall_blocks ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.connections | SQL Database firewall blocks on ${label:resource_name} |\n| [ am_sql_database_deadlocks ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.deadlocks | SQL Database deadlocks on ${label:resource_name} |\n| [ am_sql_database_storage_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.storage_utilization | SQL Database storage utilization on ${label:resource_name} |\n| [ am_sql_database_xtp_storage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.xtp_storage | SQL Database In-Memory OLTP storage on ${label:resource_name} |\n| [ am_sql_database_tempdb_log_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.tempdb_log_utilization | SQL Database tempdb log utilization on ${label:resource_name} |\n| [ am_sql_database_replication_lag ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.replication_lag | SQL Database replication lag on ${label:resource_name} |\n| [ am_sql_database_serverless_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.serverless_utilization | SQL Database serverless CPU on ${label:resource_name} |\n| [ am_sql_database_serverless_memory ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.serverless_utilization | SQL Database serverless memory on ${label:resource_name} |\n| [ am_sql_database_ledger_digest_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_database.conf) | azure_monitor.sql_database.ledger_digest | SQL Database ledger digest failures on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.sql_database.cpu | average, maximum | percentage |\n| azure_monitor.sql_database.instance_cpu | average | percentage |\n| azure_monitor.sql_database.instance_memory | average | percentage |\n| azure_monitor.sql_database.dtu_consumption | average | percentage |\n| azure_monitor.sql_database.io_utilization | data_read, log_write | percentage |\n| azure_monitor.sql_database.resource_utilization | workers, sessions | percentage |\n| azure_monitor.sql_database.availability | average | percentage |\n| azure_monitor.sql_database.connections | successful, failed_system, failed_user, firewall_blocked | connections/s |\n| azure_monitor.sql_database.deadlocks | total | deadlocks/s |\n| azure_monitor.sql_database.storage | used, allocated | bytes |\n| azure_monitor.sql_database.storage_utilization | average | percentage |\n| azure_monitor.sql_database.tempdb_size | data, log | KiB |\n| azure_monitor.sql_database.tempdb_log_utilization | average | percentage |\n| azure_monitor.sql_database.vcore_usage | used, limit | vCores |\n| azure_monitor.sql_database.dtu_usage | used, limit | DTU |\n| azure_monitor.sql_database.sessions_count | average | sessions |\n| azure_monitor.sql_database.replication_lag | average | seconds |\n| azure_monitor.sql_database.xtp_storage | average | percentage |\n| azure_monitor.sql_database.serverless_utilization | cpu, memory | percentage |\n| azure_monitor.sql_database.serverless_billing | total, ha_replicas | vCore-seconds/s |\n| azure_monitor.sql_database.free_tier_usage | consumed, remaining | vCore-seconds |\n| azure_monitor.sql_database.ledger_digest | success, failed | events/s |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_SQL_Database",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-sql_elastic_pool",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure SQL Elastic Pool",link:"https://learn.microsoft.com/azure/azure-sql/database/elastic-pool-overview",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","sql","elastic","pool","database","mssql"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure SQL Elastic Pool\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure SQL Elastic Pool with metrics covering:\n\n- **CPU and DTU** -- CPU utilization (average/max), instance CPU, DTU consumption, eDTU and vCore usage\n- **Memory** -- instance memory utilization\n- **Storage** -- data and allocated storage, storage utilization, tempdb size, in-memory OLTP storage\n- **I/O** -- data read and log write utilization, tempdb log utilization\n- **Sessions** -- active sessions and workers count, serverless CPU/memory utilization\n- **Billing** -- serverless billing (vCore-seconds)\n\nMetrics are aggregated across all databases in the pool.\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_sql_elastic_pool_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_elastic_pool.conf) | azure_monitor.sql_elastic_pool.cpu | SQL Elastic Pool CPU on ${label:resource_name} |\n| [ am_sql_elastic_pool_instance_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_elastic_pool.conf) | azure_monitor.sql_elastic_pool.instance_cpu | SQL Elastic Pool instance CPU on ${label:resource_name} |\n| [ am_sql_elastic_pool_instance_memory ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_elastic_pool.conf) | azure_monitor.sql_elastic_pool.instance_memory | SQL Elastic Pool instance memory on ${label:resource_name} |\n| [ am_sql_elastic_pool_dtu_consumption ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_elastic_pool.conf) | azure_monitor.sql_elastic_pool.dtu_consumption | SQL Elastic Pool DTU consumption on ${label:resource_name} |\n| [ am_sql_elastic_pool_data_io ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_elastic_pool.conf) | azure_monitor.sql_elastic_pool.io_utilization | SQL Elastic Pool data I/O on ${label:resource_name} |\n| [ am_sql_elastic_pool_log_write ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_elastic_pool.conf) | azure_monitor.sql_elastic_pool.io_utilization | SQL Elastic Pool log write on ${label:resource_name} |\n| [ am_sql_elastic_pool_workers ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_elastic_pool.conf) | azure_monitor.sql_elastic_pool.resource_utilization | SQL Elastic Pool workers on ${label:resource_name} |\n| [ am_sql_elastic_pool_sessions ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_elastic_pool.conf) | azure_monitor.sql_elastic_pool.resource_utilization | SQL Elastic Pool sessions on ${label:resource_name} |\n| [ am_sql_elastic_pool_storage_used ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_elastic_pool.conf) | azure_monitor.sql_elastic_pool.storage_utilization | SQL Elastic Pool storage used on ${label:resource_name} |\n| [ am_sql_elastic_pool_storage_allocated ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_elastic_pool.conf) | azure_monitor.sql_elastic_pool.storage_utilization | SQL Elastic Pool storage allocated on ${label:resource_name} |\n| [ am_sql_elastic_pool_xtp_storage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_elastic_pool.conf) | azure_monitor.sql_elastic_pool.xtp_storage | SQL Elastic Pool In-Memory OLTP storage on ${label:resource_name} |\n| [ am_sql_elastic_pool_tempdb_log ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_elastic_pool.conf) | azure_monitor.sql_elastic_pool.tempdb_log_utilization | SQL Elastic Pool tempdb log on ${label:resource_name} |\n| [ am_sql_elastic_pool_serverless_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_elastic_pool.conf) | azure_monitor.sql_elastic_pool.serverless_utilization | SQL Elastic Pool serverless CPU on ${label:resource_name} |\n| [ am_sql_elastic_pool_serverless_memory ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_elastic_pool.conf) | azure_monitor.sql_elastic_pool.serverless_utilization | SQL Elastic Pool serverless memory on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.sql_elastic_pool.cpu | average, maximum | percentage |\n| azure_monitor.sql_elastic_pool.instance_cpu | average | percentage |\n| azure_monitor.sql_elastic_pool.instance_memory | average | percentage |\n| azure_monitor.sql_elastic_pool.dtu_consumption | average | percentage |\n| azure_monitor.sql_elastic_pool.io_utilization | data_read, log_write | percentage |\n| azure_monitor.sql_elastic_pool.resource_utilization | workers, sessions | percentage |\n| azure_monitor.sql_elastic_pool.sessions_count | average | sessions |\n| azure_monitor.sql_elastic_pool.storage | used, allocated, limit | bytes |\n| azure_monitor.sql_elastic_pool.storage_utilization | used, allocated | percentage |\n| azure_monitor.sql_elastic_pool.xtp_storage | average | percentage |\n| azure_monitor.sql_elastic_pool.tempdb_size | data, log | KiB |\n| azure_monitor.sql_elastic_pool.tempdb_log_utilization | average | percentage |\n| azure_monitor.sql_elastic_pool.vcore_usage | used, limit | vCores |\n| azure_monitor.sql_elastic_pool.edtu_usage | used, limit | eDTU |\n| azure_monitor.sql_elastic_pool.serverless_utilization | cpu, memory | percentage |\n| azure_monitor.sql_elastic_pool.serverless_billing | total | vCore-seconds/s |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_SQL_Elastic_Pool",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-sql_managed_instance",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure SQL Managed Instance",link:"https://learn.microsoft.com/azure/azure-sql/managed-instance/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","sql","managed","instance","database","mssql"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure SQL Managed Instance\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure SQL Managed Instance with metrics covering:\n\n- **Compute** -- CPU utilization (average/max), virtual core count\n- **Storage** -- reserved and used storage\n- **I/O** -- read/write throughput, I/O request rate\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_sql_managed_instance_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_managed_instance.conf) | azure_monitor.sql_managed_instance.cpu | SQL MI CPU utilization on ${label:resource_name} |\n| [ am_sql_managed_instance_storage_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_managed_instance.conf) | azure_monitor.sql_managed_instance.storage | SQL MI storage utilization on ${label:resource_name} |\n| [ am_sql_managed_instance_io_requests ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_sql_managed_instance.conf) | azure_monitor.sql_managed_instance.io_requests | SQL MI I/O requests on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.sql_managed_instance.cpu | average, maximum | percentage |\n| azure_monitor.sql_managed_instance.io_throughput | read, written | bytes/s |\n| azure_monitor.sql_managed_instance.io_requests | average | requests/s |\n| azure_monitor.sql_managed_instance.storage | reserved, used | MiB |\n| azure_monitor.sql_managed_instance.virtual_core_count | average | cores |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_SQL_Managed_Instance",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-service_bus",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Service Bus Namespace",link:"https://learn.microsoft.com/azure/service-bus-messaging/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","service","bus","messaging","queue","topic"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Service Bus Namespace\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Service Bus with metrics covering:\n\n- **Messages** -- message flow (in/out), active messages, dead-lettered messages, scheduled messages, queue depth\n- **Throughput** -- data throughput (in/out bytes per second)\n- **Operations** -- completed and abandoned message operations, send latency\n- **Connections** -- active connections, connection events (opened/closed)\n- **Requests** -- incoming and successful request rates\n- **Errors** -- server errors, user errors, throttled requests\n- **Replication** -- replication lag (messages and duration)\n- **Resources** -- namespace size, CPU and memory utilization, pending checkpoint operations\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_service_bus_server_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_service_bus.conf) | azure_monitor.service_bus.errors | Service Bus server errors on ${label:resource_name} |\n| [ am_service_bus_throttled_requests ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_service_bus.conf) | azure_monitor.service_bus.errors | Service Bus throttled requests on ${label:resource_name} |\n| [ am_service_bus_user_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_service_bus.conf) | azure_monitor.service_bus.errors | Service Bus user errors on ${label:resource_name} |\n| [ am_service_bus_namespace_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_service_bus.conf) | azure_monitor.service_bus.namespace_resources | Service Bus namespace CPU on ${label:resource_name} |\n| [ am_service_bus_namespace_memory ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_service_bus.conf) | azure_monitor.service_bus.namespace_resources | Service Bus namespace memory on ${label:resource_name} |\n| [ am_service_bus_send_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_service_bus.conf) | azure_monitor.service_bus.send_latency | Service Bus send latency on ${label:resource_name} |\n| [ am_service_bus_dead_lettered_messages ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_service_bus.conf) | azure_monitor.service_bus.problem_messages | Service Bus dead-lettered messages on ${label:resource_name} |\n| [ am_service_bus_active_messages ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_service_bus.conf) | azure_monitor.service_bus.queue_depth | Service Bus queue depth on ${label:resource_name} |\n| [ am_service_bus_request_success_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_service_bus.conf) | azure_monitor.service_bus.requests | Service Bus request success rate on ${label:resource_name} |\n| [ am_service_bus_abandoned_messages ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_service_bus.conf) | azure_monitor.service_bus.message_operations | Service Bus abandoned messages on ${label:resource_name} |\n| [ am_service_bus_replication_lag ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_service_bus.conf) | azure_monitor.service_bus.replication_lag | Service Bus replication lag on ${label:resource_name} |\n| [ am_service_bus_replication_lag_duration ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_service_bus.conf) | azure_monitor.service_bus.replication_lag_duration | Service Bus replication lag duration on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.service_bus.message_flow | in, out | messages/s |\n| azure_monitor.service_bus.message_operations | completed, abandoned | messages/s |\n| azure_monitor.service_bus.queue_depth | active | messages |\n| azure_monitor.service_bus.problem_messages | dead_lettered, scheduled | messages |\n| azure_monitor.service_bus.requests | incoming, successful | requests/s |\n| azure_monitor.service_bus.errors | server, user, throttled | errors/s |\n| azure_monitor.service_bus.connections | active | connections |\n| azure_monitor.service_bus.connection_events | opened, closed | connections |\n| azure_monitor.service_bus.namespace_size | average | bytes |\n| azure_monitor.service_bus.data_throughput | in, out | bytes/s |\n| azure_monitor.service_bus.total_messages | total | messages |\n| azure_monitor.service_bus.namespace_resources | cpu, memory | percentage |\n| azure_monitor.service_bus.send_latency | average | milliseconds |\n| azure_monitor.service_bus.replication_lag | messages | messages |\n| azure_monitor.service_bus.replication_lag_duration | duration | seconds |\n| azure_monitor.service_bus.checkpoint_operations | pending | operations |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Service_Bus_Namespace",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-storage_accounts",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Storage Account",link:"https://learn.microsoft.com/azure/storage/common/storage-account-overview",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","storage","blob","account","files","queue","table"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Storage Account\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Storage Account with metrics covering:\n\n- **Transactions** -- transaction count\n- **Latency** -- end-to-end latency and server latency (average/max)\n- **Throughput** -- ingress and egress bytes per second\n- **Availability** -- service availability percentage\n- **Capacity** -- used storage capacity\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_storage_accounts_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_storage_accounts.conf) | azure_monitor.storage_accounts.availability | Storage availability on ${label:resource_name} |\n| [ am_storage_accounts_e2e_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_storage_accounts.conf) | azure_monitor.storage_accounts.e2e_latency | Storage E2E latency on ${label:resource_name} |\n| [ am_storage_accounts_e2e_latency_peak ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_storage_accounts.conf) | azure_monitor.storage_accounts.e2e_latency | Storage E2E latency peak on ${label:resource_name} |\n| [ am_storage_accounts_server_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_storage_accounts.conf) | azure_monitor.storage_accounts.server_latency | Storage server latency on ${label:resource_name} |\n| [ am_storage_accounts_server_latency_peak ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_storage_accounts.conf) | azure_monitor.storage_accounts.server_latency | Storage server latency peak on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.storage_accounts.availability | average | percentage |\n| azure_monitor.storage_accounts.transactions | total | transactions/s |\n| azure_monitor.storage_accounts.throughput | ingress, egress | bytes/s |\n| azure_monitor.storage_accounts.e2e_latency | average, maximum | milliseconds |\n| azure_monitor.storage_accounts.server_latency | average, maximum | milliseconds |\n| azure_monitor.storage_accounts.used_capacity | average | bytes |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Storage_Account",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-stream_analytics",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Stream Analytics Job",link:"https://learn.microsoft.com/azure/stream-analytics/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","stream","analytics","streaming","realtime"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Stream Analytics Job\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Stream Analytics with metrics covering:\n\n- **Events** -- event flow (in/out), backlogged input events\n- **Errors** -- runtime errors, data conversion errors, deserialization errors\n- **Timing** -- late, early, and out-of-order events, watermark delay\n- **Resources** -- CPU and streaming unit memory utilization\n- **Input** -- input data throughput, input sources received\n- **Functions** -- function events and requests (total/failed)\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_stream_analytics_su_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_stream_analytics.conf) | azure_monitor.stream_analytics.resource_utilization | Stream Analytics SU utilization on ${label:resource_name} |\n| [ am_stream_analytics_cpu_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_stream_analytics.conf) | azure_monitor.stream_analytics.resource_utilization | Stream Analytics CPU on ${label:resource_name} |\n| [ am_stream_analytics_watermark_delay ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_stream_analytics.conf) | azure_monitor.stream_analytics.watermark_delay | Stream Analytics watermark delay on ${label:resource_name} |\n| [ am_stream_analytics_runtime_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_stream_analytics.conf) | azure_monitor.stream_analytics.errors | Stream Analytics runtime errors on ${label:resource_name} |\n| [ am_stream_analytics_data_conversion_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_stream_analytics.conf) | azure_monitor.stream_analytics.errors | Stream Analytics conversion errors on ${label:resource_name} |\n| [ am_stream_analytics_deserialization_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_stream_analytics.conf) | azure_monitor.stream_analytics.errors | Stream Analytics deserialization errors on ${label:resource_name} |\n| [ am_stream_analytics_out_of_order_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_stream_analytics.conf) | azure_monitor.stream_analytics.event_timing | Stream Analytics out-of-order events on ${label:resource_name} |\n| [ am_stream_analytics_late_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_stream_analytics.conf) | azure_monitor.stream_analytics.event_timing | Stream Analytics late events on ${label:resource_name} |\n| [ am_stream_analytics_backlogged_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_stream_analytics.conf) | azure_monitor.stream_analytics.backlogged_events | Stream Analytics backlog on ${label:resource_name} |\n| [ am_stream_analytics_function_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_stream_analytics.conf) | azure_monitor.stream_analytics.function_requests | Stream Analytics ML function failures on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.stream_analytics.event_flow | in, out | events/s |\n| azure_monitor.stream_analytics.input_data_throughput | received | bytes/s |\n| azure_monitor.stream_analytics.input_sources_received | received | sources/s |\n| azure_monitor.stream_analytics.event_timing | late, early, out_of_order | events/s |\n| azure_monitor.stream_analytics.backlogged_events | backlogged | events |\n| azure_monitor.stream_analytics.watermark_delay | delay | seconds |\n| azure_monitor.stream_analytics.errors | runtime, data_conversion, deserialization | errors/s |\n| azure_monitor.stream_analytics.function_requests | total, failed | requests/s |\n| azure_monitor.stream_analytics.function_events | input | events/s |\n| azure_monitor.stream_analytics.resource_utilization | cpu, su_memory | percentage |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Stream_Analytics_Job",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-synapse",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Synapse Analytics Workspace",link:"https://learn.microsoft.com/azure/synapse-analytics/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","synapse","analytics","data","warehouse","sql"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Synapse Analytics Workspace\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Synapse Analytics with metrics covering:\n\n- **Pipeline** -- pipeline runs, activity runs, trigger runs\n- **SQL pool** -- built-in SQL pool requests, login attempts, data processed\n- **Streaming** -- event flow (in/out), event timing (late/early/out-of-order/backlogged), watermark delay, resource utilization, errors\n- **Streaming I/O** -- input data throughput, input sources received\n- **Link** -- connection events, processed data volume, changed rows, processing latency, table events\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_synapse_streaming_resource_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_synapse.conf) | azure_monitor.synapse.streaming_resource_utilization | Synapse streaming SU utilization on ${label:resource_name} |\n| [ am_synapse_streaming_runtime_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_synapse.conf) | azure_monitor.synapse.streaming_errors | Synapse streaming runtime errors on ${label:resource_name} |\n| [ am_synapse_streaming_data_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_synapse.conf) | azure_monitor.synapse.streaming_errors | Synapse streaming data errors on ${label:resource_name} |\n| [ am_synapse_streaming_watermark_delay ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_synapse.conf) | azure_monitor.synapse.streaming_watermark_delay | Synapse streaming watermark delay on ${label:resource_name} |\n| [ am_synapse_streaming_late_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_synapse.conf) | azure_monitor.synapse.streaming_event_timing | Synapse streaming late events on ${label:resource_name} |\n| [ am_synapse_streaming_out_of_order_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_synapse.conf) | azure_monitor.synapse.streaming_event_timing | Synapse streaming out-of-order events on ${label:resource_name} |\n| [ am_synapse_streaming_backlogged_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_synapse.conf) | azure_monitor.synapse.streaming_event_timing | Synapse streaming backlogged events on ${label:resource_name} |\n| [ am_synapse_link_processing_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_synapse.conf) | azure_monitor.synapse.link_processing_latency | Synapse Link processing latency on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.synapse.builtin_sql_pool_data_processed | processed | bytes/s |\n| azure_monitor.synapse.builtin_sql_pool_login_attempts | login_attempts | attempts/s |\n| azure_monitor.synapse.builtin_sql_pool_requests | requests | requests/s |\n| azure_monitor.synapse.activity_runs | ended | runs/s |\n| azure_monitor.synapse.pipeline_runs | ended | runs/s |\n| azure_monitor.synapse.trigger_runs | ended | runs/s |\n| azure_monitor.synapse.link_connection_events | events | events/s |\n| azure_monitor.synapse.link_table_events | events | events/s |\n| azure_monitor.synapse.link_processed_rows | changed_rows | rows/s |\n| azure_monitor.synapse.link_data_volume | processed | bytes/s |\n| azure_monitor.synapse.link_processing_latency | average | seconds |\n| azure_monitor.synapse.streaming_event_flow | in, out | events/s |\n| azure_monitor.synapse.streaming_input_throughput | received | bytes/s |\n| azure_monitor.synapse.streaming_input_sources | received | sources/s |\n| azure_monitor.synapse.streaming_event_timing | late, early, out_of_order, backlogged | events/s |\n| azure_monitor.synapse.streaming_watermark_delay | delay | seconds |\n| azure_monitor.synapse.streaming_errors | runtime, data_conversion, deserialization | errors/s |\n| azure_monitor.synapse.streaming_resource_utilization | utilization | percentage |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Synapse_Analytics_Workspace",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-vpn_gateway",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure VPN Gateway",link:"https://learn.microsoft.com/azure/vpn-gateway/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","vpn","gateway","networking","ipsec","tunnel"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure VPN Gateway\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure VPN Gateway with metrics covering:\n\n- **Site-to-site** -- S2S bandwidth, tunnel bandwidth, tunnel bytes (ingress/egress), tunnel packets and drops\n- **Point-to-site** -- P2S connection count, P2S bandwidth\n- **BGP** -- BGP peer status, routes advertised and learned\n- **ExpressRoute** -- ExpressRoute gateway bandwidth, CPU, packets, active flows, route changes, VMs in VNet\n- **IPsec** -- MMSA and QMSA security association counts\n- **NAT** -- NAT flows, NAT allocations, NATed bytes and packets, NAT packet drops\n- **Routes** -- user VPN and VNet prefix route counts\n- **Flows** -- gateway inbound/outbound flows, tunnel total flows, peak PPS, TS mismatch drops\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_vpn_gateway_tunnel_packet_drops ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vpn_gateway.conf) | azure_monitor.vpn_gateway.tunnel_packet_drops | VPN Gateway tunnel packet drops on ${label:resource_name} |\n| [ am_vpn_gateway_tunnel_ts_mismatch_drops ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vpn_gateway.conf) | azure_monitor.vpn_gateway.tunnel_ts_mismatch_drops | VPN Gateway TS mismatch drops on ${label:resource_name} |\n| [ am_vpn_gateway_tunnel_nat_packet_drops ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vpn_gateway.conf) | azure_monitor.vpn_gateway.tunnel_nat_packet_drops | VPN Gateway NAT packet drops on ${label:resource_name} |\n| [ am_vpn_gateway_bgp_peer_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vpn_gateway.conf) | azure_monitor.vpn_gateway.bgp_peer_status | VPN Gateway BGP peer down on ${label:resource_name} |\n| [ am_vpn_gateway_er_gateway_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vpn_gateway.conf) | azure_monitor.vpn_gateway.er_gateway_cpu | VPN GW ExpressRoute CPU on ${label:resource_name} |\n| [ am_vpn_gateway_er_gateway_active_flows ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vpn_gateway.conf) | azure_monitor.vpn_gateway.er_gateway_active_flows | VPN GW ExpressRoute active flows on ${label:resource_name} |\n| [ am_vpn_gateway_er_gateway_route_changes ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vpn_gateway.conf) | azure_monitor.vpn_gateway.er_gateway_route_changes | VPN GW ExpressRoute route churn on ${label:resource_name} |\n| [ am_vpn_gateway_er_gateway_routes_advertised ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vpn_gateway.conf) | azure_monitor.vpn_gateway.er_gateway_routes_advertised | VPN GW ExpressRoute routes advertised on ${label:resource_name} |\n| [ am_vpn_gateway_er_gateway_routes_learned ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vpn_gateway.conf) | azure_monitor.vpn_gateway.er_gateway_routes_learned | VPN GW ExpressRoute routes learned on ${label:resource_name} |\n| [ am_vpn_gateway_scalable_er_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vpn_gateway.conf) | azure_monitor.vpn_gateway.scalable_er_cpu | VPN GW Scalable ER CPU on ${label:resource_name} |\n| [ am_vpn_gateway_scalable_er_active_flows ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vpn_gateway.conf) | azure_monitor.vpn_gateway.scalable_er_active_flows | VPN GW Scalable ER active flows on ${label:resource_name} |\n| [ am_vpn_gateway_scalable_er_route_changes ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vpn_gateway.conf) | azure_monitor.vpn_gateway.scalable_er_route_changes | VPN GW Scalable ER route churn on ${label:resource_name} |\n| [ am_vpn_gateway_scalable_er_routes_advertised ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vpn_gateway.conf) | azure_monitor.vpn_gateway.scalable_er_routes_advertised | VPN GW Scalable ER routes advertised on ${label:resource_name} |\n| [ am_vpn_gateway_scalable_er_routes_learned ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vpn_gateway.conf) | azure_monitor.vpn_gateway.scalable_er_routes_learned | VPN GW Scalable ER routes learned on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.vpn_gateway.s2s_bandwidth | average | bytes/s |\n| azure_monitor.vpn_gateway.p2s_bandwidth | average | bytes/s |\n| azure_monitor.vpn_gateway.p2s_connections | total | connections |\n| azure_monitor.vpn_gateway.gateway_flows | inbound, outbound | flows |\n| azure_monitor.vpn_gateway.tunnel_bandwidth | average | bytes/s |\n| azure_monitor.vpn_gateway.tunnel_bytes | egress, ingress | bytes/s |\n| azure_monitor.vpn_gateway.tunnel_packets | egress, ingress | packets/s |\n| azure_monitor.vpn_gateway.tunnel_peak_pps | peak | packets/s |\n| azure_monitor.vpn_gateway.tunnel_total_flows | total | flows/s |\n| azure_monitor.vpn_gateway.tunnel_nat_allocations | total | allocations/s |\n| azure_monitor.vpn_gateway.tunnel_nated_bytes | nated, reverse_nated | bytes/s |\n| azure_monitor.vpn_gateway.tunnel_nated_packets | nated, reverse_nated | packets/s |\n| azure_monitor.vpn_gateway.tunnel_nat_flows | total | flows/s |\n| azure_monitor.vpn_gateway.tunnel_packet_drops | egress, ingress | packets/s |\n| azure_monitor.vpn_gateway.tunnel_ts_mismatch_drops | egress, ingress | packets/s |\n| azure_monitor.vpn_gateway.tunnel_nat_packet_drops | total | packets/s |\n| azure_monitor.vpn_gateway.ipsec_sa | mmsa, qmsa | associations |\n| azure_monitor.vpn_gateway.bgp_peer_status | average | status |\n| azure_monitor.vpn_gateway.bgp_routes | advertised, learned | routes/s |\n| azure_monitor.vpn_gateway.route_counts | user_vpn, vnet_prefix | routes |\n| azure_monitor.vpn_gateway.er_gateway_bandwidth | average | bits/s |\n| azure_monitor.vpn_gateway.er_gateway_cpu | average | percentage |\n| azure_monitor.vpn_gateway.er_gateway_packets | average | packets/s |\n| azure_monitor.vpn_gateway.er_gateway_active_flows | average | flows |\n| azure_monitor.vpn_gateway.er_gateway_routes_advertised | maximum | routes |\n| azure_monitor.vpn_gateway.er_gateway_routes_learned | maximum | routes |\n| azure_monitor.vpn_gateway.er_gateway_route_changes | total | changes/s |\n| azure_monitor.vpn_gateway.er_gateway_max_flows_rate | maximum | flows/s |\n| azure_monitor.vpn_gateway.er_gateway_vm_count | maximum | VMs |\n| azure_monitor.vpn_gateway.scalable_er_bandwidth | average | bits/s |\n| azure_monitor.vpn_gateway.scalable_er_cpu | average | percentage |\n| azure_monitor.vpn_gateway.scalable_er_packets | average | packets/s |\n| azure_monitor.vpn_gateway.scalable_er_active_flows | average | flows |\n| azure_monitor.vpn_gateway.scalable_er_routes_advertised | maximum | routes |\n| azure_monitor.vpn_gateway.scalable_er_routes_learned | maximum | routes |\n| azure_monitor.vpn_gateway.scalable_er_route_changes | total | changes/s |\n| azure_monitor.vpn_gateway.scalable_er_max_flows_rate | maximum | flows/s |\n| azure_monitor.vpn_gateway.scalable_er_vm_count | maximum | VMs |\n| azure_monitor.vpn_gateway.scalable_er_scale_units | maximum | units |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_VPN_Gateway",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-virtual_machines",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Virtual Machine",link:"https://learn.microsoft.com/azure/virtual-machines/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","virtual","machine","vm","compute","iaas"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Virtual Machine\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Virtual Machines with metrics covering:\n\n- **Compute** -- CPU utilization, CPU credits (consumed/remaining)\n- **Memory** -- available memory (bytes and percentage)\n- **Disk** -- IOPS, throughput, latency, and queue depth for OS, data, and temp disks\n- **Disk burst** -- burst credits and capacity for OS and data disks, VM-level cached/uncached burst credits\n- **Disk cache** -- premium OS and data disk cache hit/miss rates\n- **Network** -- traffic in/out, network flows, flow creation rate\n- **Availability** -- VM availability state\n- **Throttling** -- cached and uncached I/O bandwidth/IOPS throttling\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_vm_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.cpu | VM CPU on ${label:resource_name} |\n| [ am_vm_cpu_credits_remaining ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.cpu_credits | VM CPU credits low on ${label:resource_name} |\n| [ am_vm_memory_available ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.memory_percentage | VM available memory on ${label:resource_name} |\n| [ am_vm_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.availability | VM unavailable ${label:resource_name} |\n| [ am_vm_os_disk_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.os_disk_latency | VM OS disk latency on ${label:resource_name} |\n| [ am_vm_os_disk_queue_depth ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.os_disk_queue_depth | VM OS disk queue depth on ${label:resource_name} |\n| [ am_vm_os_disk_bandwidth_throttling ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.os_disk_throttling | VM OS disk bandwidth throttling on ${label:resource_name} |\n| [ am_vm_os_disk_iops_throttling ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.os_disk_throttling | VM OS disk IOPS throttling on ${label:resource_name} |\n| [ am_vm_os_disk_burst_bps_credits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.os_disk_burst_credits | VM OS disk burst bandwidth credits on ${label:resource_name} |\n| [ am_vm_os_disk_burst_io_credits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.os_disk_burst_credits | VM OS disk burst IO credits on ${label:resource_name} |\n| [ am_vm_data_disk_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.data_disk_latency | VM data disk latency on ${label:resource_name} |\n| [ am_vm_data_disk_queue_depth ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.data_disk_queue_depth | VM data disk queue depth on ${label:resource_name} |\n| [ am_vm_data_disk_bandwidth_throttling ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.data_disk_throttling | VM data disk bandwidth throttling on ${label:resource_name} |\n| [ am_vm_data_disk_iops_throttling ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.data_disk_throttling | VM data disk IOPS throttling on ${label:resource_name} |\n| [ am_vm_data_disk_burst_bps_credits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.data_disk_burst_credits | VM data disk burst bandwidth credits on ${label:resource_name} |\n| [ am_vm_data_disk_burst_io_credits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.data_disk_burst_credits | VM data disk burst IO credits on ${label:resource_name} |\n| [ am_vm_cached_bandwidth_throttling ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.vm_cached_throttling | VM cached bandwidth throttling on ${label:resource_name} |\n| [ am_vm_cached_iops_throttling ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.vm_cached_throttling | VM cached IOPS throttling on ${label:resource_name} |\n| [ am_vm_uncached_bandwidth_throttling ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.vm_uncached_throttling | VM uncached bandwidth throttling on ${label:resource_name} |\n| [ am_vm_uncached_iops_throttling ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.vm_uncached_throttling | VM uncached IOPS throttling on ${label:resource_name} |\n| [ am_vm_cached_burst_bps_credits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.vm_cached_burst_credits | VM cached burst bandwidth credits on ${label:resource_name} |\n| [ am_vm_cached_burst_io_credits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.vm_cached_burst_credits | VM cached burst IO credits on ${label:resource_name} |\n| [ am_vm_uncached_burst_bps_credits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.vm_uncached_burst_credits | VM uncached burst bandwidth credits on ${label:resource_name} |\n| [ am_vm_uncached_burst_io_credits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_virtual_machines.conf) | azure_monitor.virtual_machines.vm_uncached_burst_credits | VM uncached burst IO credits on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.virtual_machines.cpu | average | percentage |\n| azure_monitor.virtual_machines.cpu_credits | consumed, remaining | credits |\n| azure_monitor.virtual_machines.memory | available | bytes |\n| azure_monitor.virtual_machines.memory_percentage | available | percentage |\n| azure_monitor.virtual_machines.availability | average | state |\n| azure_monitor.virtual_machines.network_traffic | in, out | bytes/s |\n| azure_monitor.virtual_machines.network_flows | in, out | flows |\n| azure_monitor.virtual_machines.network_flow_creation_rate | in, out | flows/s |\n| azure_monitor.virtual_machines.disk_throughput | read, write | bytes/s |\n| azure_monitor.virtual_machines.disk_iops | read, write | operations/s |\n| azure_monitor.virtual_machines.os_disk_throughput | read, write | bytes/s |\n| azure_monitor.virtual_machines.os_disk_iops | read, write | operations/s |\n| azure_monitor.virtual_machines.os_disk_latency | average | milliseconds |\n| azure_monitor.virtual_machines.os_disk_queue_depth | average | operations |\n| azure_monitor.virtual_machines.os_disk_throttling | bandwidth, iops | percentage |\n| azure_monitor.virtual_machines.os_disk_burst_capacity | max_burst, target | bytes/s |\n| azure_monitor.virtual_machines.os_disk_burst_iops_capacity | max_burst, target | iops |\n| azure_monitor.virtual_machines.os_disk_burst_credits | bandwidth, io | percentage |\n| azure_monitor.virtual_machines.data_disk_throughput | read, write | bytes/s |\n| azure_monitor.virtual_machines.data_disk_iops | read, write | operations/s |\n| azure_monitor.virtual_machines.data_disk_latency | average | milliseconds |\n| azure_monitor.virtual_machines.data_disk_queue_depth | average | operations |\n| azure_monitor.virtual_machines.data_disk_throttling | bandwidth, iops | percentage |\n| azure_monitor.virtual_machines.data_disk_burst_capacity | max_burst, target | bytes/s |\n| azure_monitor.virtual_machines.data_disk_burst_iops_capacity | max_burst, target | iops |\n| azure_monitor.virtual_machines.data_disk_burst_credits | bandwidth, io | percentage |\n| azure_monitor.virtual_machines.temp_disk_throughput | read, write | bytes/s |\n| azure_monitor.virtual_machines.temp_disk_iops | read, write | operations/s |\n| azure_monitor.virtual_machines.temp_disk_latency | average | milliseconds |\n| azure_monitor.virtual_machines.temp_disk_queue_depth | average | operations |\n| azure_monitor.virtual_machines.premium_data_disk_cache | hit, miss | percentage |\n| azure_monitor.virtual_machines.premium_os_disk_cache | hit, miss | percentage |\n| azure_monitor.virtual_machines.vm_cached_throttling | bandwidth, iops | percentage |\n| azure_monitor.virtual_machines.vm_uncached_throttling | bandwidth, iops | percentage |\n| azure_monitor.virtual_machines.vm_cached_burst_credits | bandwidth, io | percentage |\n| azure_monitor.virtual_machines.vm_uncached_burst_credits | bandwidth, io | percentage |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Virtual_Machine",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-azure_monitor-vmss",plugin_name:"go.d.plugin",module_name:"azure_monitor",monitored_instance:{name:"Azure Virtual Machine Scale Set",link:"https://learn.microsoft.com/azure/virtual-machine-scale-sets/",icon_filename:"azure.svg",categories:["data-collection.cloud-and-devops"]},keywords:["azure","vmss","scale","set","virtual","machine","compute"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure Virtual Machine Scale Set\n\nPlugin: go.d.plugin\nModule: azure_monitor\n\n## Overview\n\n:::info\n\nThis is part of the [Azure Monitor](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md) collector. No separate setup is needed -- a single Azure Monitor job discovers and monitors all supported resource types automatically.\n\n:::\n\nMonitor Azure Virtual Machine Scale Sets with metrics covering:\n\n- **Compute** -- CPU utilization, CPU credits (consumed/remaining)\n- **Memory** -- available memory (bytes and percentage)\n- **Disk** -- IOPS, throughput, latency, and queue depth for OS, data, and temp disks\n- **Disk burst** -- burst credits and capacity for OS and data disks, VM-level cached/uncached burst credits\n- **Disk cache** -- premium OS and data disk cache hit/miss rates\n- **Network** -- traffic in/out, network flows, flow creation rate\n- **Availability** -- VMSS availability state\n- **Throttling** -- cached and uncached I/O bandwidth/IOPS throttling\n\nMetrics are aggregated across all instances in the scale set.\n\n\nIt uses the [Azure Monitor Metrics batch API](https://learn.microsoft.com/en-us/azure/azure-monitor/essentials/migrate-to-batch-api) to collect metrics, grouping requests by subscription, region, and time grain. Resources are discovered via [Azure Resource Graph](https://learn.microsoft.com/en-us/azure/governance/resource-graph/overview) queries at startup and refreshed periodically. Authentication is handled through [Microsoft Entra ID](https://learn.microsoft.com/en-us/entra/identity/) (service principal, managed identity, or default credentials).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe service principal or managed identity requires these Azure RBAC roles:\n\n| Role | Purpose | Scope |\n|:-----|:--------|:------|\n| **Monitoring Reader** | Read Azure Monitor metrics | Subscription or resource group |\n| **Reader** | Query Azure Resource Graph for resource discovery | Subscription or resource group |\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector has two discovery phases:\n\n**Bootstrap (first run)**\n\n- With the default `profiles.mode: auto`, the collector queries Azure Resource Graph within the configured `subscription_ids` to find candidate resources.\n- It matches discovered resource types against [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) and automatically enables the relevant ones.\n- Discovery scope can be narrowed using `discovery.mode: filters` (resource groups, regions, tags) or replaced entirely with `discovery.mode: query` for a custom KQL query.\n- A single job can monitor multiple subscriptions.\n\n**Runtime (periodic refresh)**\n\n- Periodically re-discovers resources for **already-active profile types only**.\n- Controlled by `discovery.refresh_every` (default: 300 seconds, set to 0 to disable).\n\n> **Important:** Runtime refresh does not activate new profiles. If a new resource type appears after bootstrap, restart the collector to pick it up.\n\n\n#### Limits\n\n- **Minimum collection interval:** 60 seconds (enforced). Azure Monitor metrics granularity is typically 1 minute.\n- **Metrics reporting delay:** Azure Monitor metrics have a 1-3 minute reporting delay. The collector uses `query_offset` (default: 180s) as a minimum offset and automatically uses a larger effective offset for slower time-grain batches when needed.\n- **API throttling:** Azure Monitor applies per-subscription rate limits. The collector uses bounded concurrency and batching to stay within limits, but monitoring many resources in a single subscription may require tuning `limits.*` options.\n\n\n#### Performance Impact\n\nThe collector batches resources and metrics to minimize Azure API calls and uses bounded concurrency to avoid overwhelming the API.\n\n**Default concurrency and batching limits:**\n\n| Setting | Default | Description |\n|:--------|:--------|:------------|\n| `limits.max_concurrency` | 4 | Maximum concurrent batch queries |\n| `limits.max_batch_resources` | 50 | Maximum resources per batch request |\n| `limits.max_metrics_per_query` | 20 | Maximum metrics per batch request |\n\nFor large deployments, consider splitting resources across multiple jobs. If you hit Azure API rate limits, reduce `max_concurrency`.\n\n",setup:'## Setup\n\n\nYou can configure the **azure_monitor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **azure_monitor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/azure_monitor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an Azure monitoring principal\n\nThe collector requires a service principal or managed identity with two Azure RBAC roles:\n\n| Role | Purpose |\n|:-----|:--------|\n| **Monitoring Reader** | Access Azure Monitor metrics for target resources |\n| **Reader** | Query Azure Resource Graph for resource discovery |\n\n**Option A: Service principal**\n\n```bash\n# Create service principal with Monitoring Reader role\naz ad sp create-for-rbac --name "netdata-monitor" --role "Monitoring Reader" \\\n --scopes /subscriptions/<subscription-id>\n\n# Add the Reader role for resource discovery\naz role assignment create --assignee <appId-from-above> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n\n# Note the appId (client_id), password (client_secret), and tenant\n```\n\n**Option B: Managed identity** (Azure VMs, VMSS, or AKS)\n\n```bash\n# Assign both roles to the VM\'s managed identity\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Monitoring Reader" --scope /subscriptions/<subscription-id>\n\naz role assignment create --assignee <managed-identity-principal-id> \\\n --role "Reader" --scope /subscriptions/<subscription-id>\n```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: `update_every`, `autodetection_retry`.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/azure_monitor.profiles/` |\n\nUser profile files with the same basename as a [stock profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) override it.\nCustom profiles extend the collector\'s catalog -- they do not replace the discovery mechanism.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| | subscription_ids | List of Azure subscription IDs to monitor. Used as the scope for resource discovery. | | yes |\n| | cloud | Azure cloud environment: `public`, `government`, or `china`. | public | no |\n| | [query_offset](#option-collection-query-offset) | Minimum offset (seconds) subtracted from metric query windows. Increase if metrics appear incomplete. | 180 | no |\n| | timeout | Timeout for Azure Resource Graph and Azure Monitor API requests, in seconds. | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `service_principal`, `managed_identity`, or `default`. | | yes |\n| | auth.mode_service_principal.tenant_id | Entra ID tenant ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_id | Entra ID application (client) ID (required for `service_principal` mode). | | no |\n| | auth.mode_service_principal.client_secret | Entra ID client secret (required for `service_principal` mode). | | no |\n| | auth.mode_managed_identity.client_id | Client ID for user-assigned managed identity. Leave empty for system-assigned. | | no |\n| **Discovery** | discovery.refresh_every | Interval (seconds) for refreshing discovered resources. Set `0` to disable runtime re-discovery after bootstrap. | 300 | no |\n| | [discovery.mode](#option-discovery-discovery-mode) | Resource discovery method: `filters` (structured filters) or `query` (custom KQL). | filters | no |\n| | discovery.mode_filters.resource_groups | Optional list of Azure resource groups to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.regions | Optional list of Azure regions to include in `filters` mode. | [] | no |\n| | discovery.mode_filters.tags | Optional exact-match tag filters for `filters` mode. Keys are matched case-insensitively and values case-sensitively. | {} | no |\n| | [discovery.mode_query.kql](#option-discovery-discovery-mode-query-kql) | Custom Azure Resource Graph KQL for `query` mode. Must project `id`, `name`, `type`, `resourceGroup`, `location`; project `tags` too when using `virtual_nodes.by_resource_tag`. | | no |\n| **Profiles** | [profiles.mode](#option-profiles-profiles-mode) | How profiles are selected: `auto` (discover from resources), `exact` (explicit list), or `combined` (both). | auto | no |\n| | [profiles.mode_auto.entries](#option-profiles-profiles-mode-auto-entries) | Optional per-profile overrides applied only to profiles that auto-activate at bootstrap. | [] | no |\n| | [profiles.mode_exact.entries](#option-profiles-profiles-mode-exact-entries) | Explicit profile entries used by `exact` mode. | [] | no |\n| | [profiles.mode_combined.entries](#option-profiles-profiles-mode-combined-entries) | Explicit profile entries merged with auto-discovered profiles in `combined` mode. | [] | no |\n| **Limits** | limits.max_concurrency | Maximum concurrent batch queries to Azure Monitor. | 4 | no |\n| | limits.max_batch_resources | Maximum resources per Azure Monitor batch request. | 50 | no |\n| | limits.max_metrics_per_query | Maximum metrics per Azure Monitor batch request. | 20 | no |\n| **Virtual Node** | [vnode](#option-virtual-node-vnode) | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n| | [virtual_nodes.by_resource_tag](#option-virtual-node-virtual-nodes-by-resource-tag) | Creates workload virtual nodes from an Azure resource tag value. | | no |\n\n<a id="option-collection-query-offset"></a>\n##### query_offset\n\nAzure Monitor metrics have a built-in reporting delay of 1-3 minutes. The collector subtracts this offset from the current time when building metric query windows to avoid fetching incomplete data points.\n\nThe configured `query_offset` acts as a minimum floor. For slower metric batches, the collector automatically uses a larger effective offset when the batch time grain is longer than the configured value.\n\n- **Default (180s)** works for most services.\n- **Longer time grains** (for example `PT5M`) automatically use at least one full time grain as the effective offset.\n- **Increase to 240-300s** if you still see gaps or missing data points.\n- **Do not set below 60s** -- metrics will likely be incomplete.\n\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with Azure.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `service_principal` | Running outside Azure, or when you need explicit credentials | `tenant_id`, `client_id`, `client_secret` |\n| `managed_identity` | Running on Azure VMs, VMSS, or AKS with a managed identity | Optionally `client_id` for user-assigned identity |\n| `default` | Uses the Azure SDK default credential chain (environment variables, managed identity, Azure CLI, etc.) | None |\n\n\n<a id="option-discovery-discovery-mode"></a>\n##### discovery.mode\n\nControls how the collector finds candidate Azure resources.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `filters` | Builds an Azure Resource Graph query from the structured `mode_filters.*` options (resource groups, regions, tags). This is the default. |\n| `query` | Uses the raw KQL you provide in `discovery.mode_query.kql`. The query must project `id`, `name`, `type`, `resourceGroup`, and `location`. Project `tags` too when using `virtual_nodes.by_resource_tag`. |\n\n\n<a id="option-discovery-discovery-mode-query-kql"></a>\n##### discovery.mode_query.kql\n\nA raw Azure Resource Graph KQL query used when `discovery.mode` is `query`.\nSee the [Azure Resource Graph query language documentation](https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/query-language) for syntax and supported operators.\n\nThe query **must** project these five columns:\n\n| Column | Description |\n|:-------|:------------|\n| `id` | Full Azure resource ID (ARM format) |\n| `name` | Resource name |\n| `type` | Resource type (e.g., `microsoft.sql/servers/databases`) |\n| `resourceGroup` | Resource group name |\n| `location` | Azure region |\n\nIf `virtual_nodes.by_resource_tag` is set, also project `tags`. Missing `tags` or non-object-shaped `tags` do not fail discovery; affected resources fall back to the default job host scope and the collector logs a warning once per successful discovery refresh.\n\n:::info\n\n- Returned resource `type` values should match the Azure resource types expected by the active profiles. \n- Resources with unsupported or non-matching types are ignored and do not activate profiles. \n- For the stock catalog, see [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default).\n\n:::\n\nExample:\n\n```\nresources\n| where tags.env =~ "prod"\n| project id, name, type, resourceGroup, location, tags\n```\n\n\n<a id="option-profiles-profiles-mode"></a>\n##### profiles.mode\n\nControls how the collector decides which metric profiles to activate.\n\n| Mode | Behavior |\n|:-----|:---------|\n| `auto` | Discovers resource types in your subscriptions and enables matching [built-in profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) automatically. This is the default. |\n| `exact` | Uses only the profile entries listed under `profiles.mode_exact.entries`. No auto-discovery. |\n| `combined` | Merges auto-discovered profiles with the explicit entries listed under `profiles.mode_combined.entries`. |\n\nEach profile entry uses `name` as the canonical profile basename. The basename is the profile filename without the `.yaml` / `.yml` suffix and must be lowercase.\n\nFilter layering:\n\n- `discovery.mode_filters.*` defines the job-wide discovery scope.\n- `profiles.mode_*.entries[].filters.*` narrows resources for one profile only.\n- The effective resource set for a profile is the intersection of both filter sets.\n- Per-profile filters never widen or bypass the global discovery scope.\n- In `discovery.mode: query`, per-profile filters can use only `resource_groups` and `regions`. If you need per-profile tag filtering there, encode it in the KQL.\n\n\n<a id="option-profiles-profiles-mode-auto-entries"></a>\n##### profiles.mode_auto.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nAuto-mode entries do not activate profiles on their own. They only override filtering for profiles that were auto-selected at bootstrap.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-exact-entries"></a>\n##### profiles.mode_exact.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nPer-profile filters only narrow the globally discovered resource set. They never widen it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-profiles-profiles-mode-combined-entries"></a>\n##### profiles.mode_combined.entries\n\nEach entry has:\n\n| Field | Description |\n|:------|:------------|\n| `name` | Canonical profile basename. |\n| `filters.resource_groups` | Optional resource-group narrowing for this profile. |\n| `filters.regions` | Optional region narrowing for this profile. |\n| `filters.tags` | Optional tag narrowing for this profile in `discovery.mode: filters`. |\n\nIf an explicit `combined` entry matches an auto-selected profile, the collector keeps one runtime profile and overlays the explicit entry filters onto it.\nIn `discovery.mode: query`, only `filters.resource_groups` and `filters.regions` apply.\n\n\n<a id="option-virtual-node-vnode"></a>\n##### vnode\n\nThis job-level virtual node is used for metrics written to the default host scope.\nIf `virtual_nodes.by_resource_tag` is also set, resources that have a safe value for the configured tag are routed to workload virtual nodes instead. Resources without that tag, with an empty value, or with an unsafe hostname value continue to use the job-level `vnode` when configured.\n\n\n<a id="option-virtual-node-virtual-nodes-by-resource-tag"></a>\n##### virtual_nodes.by_resource_tag\n\nSet this to an Azure resource tag key, for example `workload`, to route resource metrics under virtual nodes named after that tag value.\n\n- Tag keys are matched case-insensitively; tag values keep their Azure case and are trimmed.\n- Empty or missing tag values use the default job host scope.\n- Unsafe hostname values use the default job host scope and are summarized in a warning once per successful discovery refresh.\n- The virtual node GUID is deterministic from `azure_monitor:` plus the trimmed tag value, so the same Azure workload value maps to the same Azure Monitor virtual node across jobs and subscriptions.\n- Virtual node metadata includes `_vnode_type=azure_workload`. Netdata also adds `_hostname` when emitting the virtual node definition.\n- Workload virtual nodes increase host and alert cardinality. Health alerts defined for Azure Monitor charts attach per workload virtual node.\n- The metrix scoped vec cache grows with observed workload scope and label cardinality during the collector runtime; keep the configured tag\'s cardinality bounded by operator policy.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **azure_monitor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the azure_monitor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _azure_monitor_ (or scroll the list) to locate the **azure_monitor** collector.\n5. Click the **+** next to the **azure_monitor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/azure_monitor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/azure_monitor.conf\n```\n\n##### Examples\n\n###### Service principal with structured discovery\n\nAuthenticate with a service principal and auto-discover resources across two subscriptions, filtered to the `production-rg` resource group in `eastus` with the tag `env=prod`.\n\n```yaml\njobs:\n - name: prod\n subscription_ids:\n - "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"\n - "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n tags:\n env:\n - prod\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n###### Workload virtual nodes from resource tags\n\nRoute resources with `tags.workload` to virtual nodes named after the workload value. Resources without the tag stay on the default job host scope.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n###### Custom KQL with workload virtual nodes\n\nIn `query` discovery mode, project `tags` so `virtual_nodes.by_resource_tag` can derive workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query-workloads\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Job virtual node plus workload virtual nodes\n\nUse a job-level `vnode` as the default host scope while tagged resources route to workload virtual nodes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-with-fallback-node\n vnode: azure-fallback-node\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n virtual_nodes:\n by_resource_tag: workload\n discovery:\n mode: filters\n profiles:\n mode: auto\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Managed identity with exact profiles\n\nUse a managed identity (on an Azure VM, VMSS, or AKS) and monitor only SQL Database and PostgreSQL Flexible Server resources -- skip auto-discovery of other services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: sql_database\n - name: postgres_flexible\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Global and per-profile filters together\n\nApply a global discovery boundary to the whole job, then narrow only the SQL Database profile further with a per-profile tag filter.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-databases\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: filters\n mode_filters:\n resource_groups:\n - production-rg\n regions:\n - eastus\n profiles:\n mode: combined\n mode_combined:\n entries:\n - name: sql_database\n filters:\n tags:\n env:\n - prod\n # Effective scope:\n # 1. Discovery first keeps only resources in production-rg and eastus.\n # 2. Auto-selected profiles use that global scope as-is.\n # 3. The sql_database profile is narrowed further to resources tagged env=prod.\n # 4. The sql_database profile cannot see resources outside production-rg/eastus,\n # because per-profile filters only narrow the globally discovered set.\n auth:\n mode: managed_identity\n\n```\n{% /details %}\n###### Custom Azure Resource Graph KQL\n\nReplace the built-in discovery filters with your own KQL query. Useful when you need joins, computed columns, or filtering logic that structured filters cannot express.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: prod-query\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n discovery:\n mode: query\n mode_query:\n kql: |\n resources\n | where tags.env =~ "prod"\n | project id, name, type, resourceGroup, location, tags\n profiles:\n mode: auto\n auth:\n mode: default\n\n```\n{% /details %}\n###### Azure Government cloud\n\nConnect to an Azure Government environment. Set `cloud: government` to use the correct authentication and API endpoints.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: gov\n subscription_ids:\n - "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n cloud: government\n auth:\n mode: service_principal\n mode_service_principal:\n tenant_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"\n client_secret: "your-client-secret"\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `azure_monitor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m azure_monitor -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `azure_monitor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep azure_monitor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep azure_monitor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep azure_monitor\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- The principal has both **Monitoring Reader** and **Reader** roles on the target subscription.\n- **Subscription IDs** -- The `subscription_ids` list includes the correct subscription(s).\n- **Resources are active** -- Verify in Azure Portal > Metrics that the resources are producing metrics.\n- **Collector logs** -- Check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep azure_monitor --since "5 minutes ago"\n # non-systemd\n grep azure_monitor /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some resource types\n\nProfiles are matched by Azure resource type. If a resource type exists but metrics are missing:\n\n- **Check profile mode** -- Ensure `profiles.mode: auto` (default), or explicitly list the profile basename under `profiles.mode_exact.entries` or `profiles.mode_combined.entries`.\n- **Verify a [built-in profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/azure_monitor.profiles/default) exists** -- List available profiles:\n ```bash\n ls /usr/lib/netdata/conf.d/go.d/azure_monitor.profiles/default/\n ```\n- **Check resource activity** -- Some metrics only appear when the resource is actively processing data (e.g., IoT Hub telemetry metrics require devices to be sending messages).\n- **New resource types after startup** -- Runtime discovery does not activate new profiles. Restart the collector if new resource types were added after bootstrap.\n\n\n### Charts have gaps or incomplete data\n\nAzure Monitor metrics have a built-in reporting delay of **1-3 minutes**.\n\n- The collector uses `query_offset` (default: **180 seconds**) as the minimum offset for metric query windows.\n- Slower time-grain batches automatically use a larger effective offset when needed.\n- If metrics are still missing or incomplete, increase `query_offset` to **240** or **300** seconds.\n\n\n### Workload virtual nodes are not created\n\nWhen `virtual_nodes.by_resource_tag` is set, check the discovered resource tags:\n\n- The configured tag key is matched case-insensitively, but the value must be non-empty after trimming.\n- In `discovery.mode: query`, the KQL must project `tags`. If the `tags` column is missing or not an object, the collector logs a warning and affected resources use the default job host scope.\n- Tag values must be safe Netdata hostnames. Unsafe values are summarized in a warning once per successful discovery refresh and affected resources use the default job host scope.\n- The same Azure workload value intentionally maps to the same Azure Monitor virtual node across subscriptions and jobs. Use distinct tag values when tenants should remain separate.\n- Azure Monitor namespaces workload GUID input with `azure_monitor:` to avoid accidental collisions with other collectors that derive virtual node GUIDs from hostnames.\n\n\n### More alerts appear after enabling workload virtual nodes\n\nWorkload virtual nodes multiply the host scope of Azure Monitor charts. Health alerts attached to those charts evaluate per workload virtual node, so alert volume can increase with the number of distinct workload tag values.\n\n\n### Authentication errors in sovereign clouds\n\nFor Azure Government or Azure China clouds, set the `cloud` parameter:\n\n- Azure Government: `cloud: government`\n- Azure China (21Vianet): `cloud: china`\n\nEnsure the service principal is registered in the correct cloud tenant.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ am_vmss_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.cpu | VMSS CPU utilization on ${label:resource_name} |\n| [ am_vmss_cpu_credits_remaining ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.cpu_credits | VMSS CPU credits low on ${label:resource_name} |\n| [ am_vmss_memory_available ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.memory_percentage | VMSS available memory low on ${label:resource_name} |\n| [ am_vmss_availability ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.availability | VMSS availability degraded on ${label:resource_name} |\n| [ am_vmss_os_disk_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.os_disk_latency | VMSS OS disk latency on ${label:resource_name} |\n| [ am_vmss_os_disk_queue_depth ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.os_disk_queue_depth | VMSS OS disk queue depth on ${label:resource_name} |\n| [ am_vmss_os_disk_bandwidth_throttling ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.os_disk_throttling | VMSS OS disk bandwidth consumed on ${label:resource_name} |\n| [ am_vmss_os_disk_iops_throttling ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.os_disk_throttling | VMSS OS disk IOPS consumed on ${label:resource_name} |\n| [ am_vmss_os_disk_burst_bps_credits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.os_disk_burst_credits | VMSS OS disk burst BPS credits depleting on ${label:resource_name} |\n| [ am_vmss_os_disk_burst_io_credits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.os_disk_burst_credits | VMSS OS disk burst IO credits depleting on ${label:resource_name} |\n| [ am_vmss_data_disk_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.data_disk_latency | VMSS data disk latency on ${label:resource_name} |\n| [ am_vmss_data_disk_queue_depth ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.data_disk_queue_depth | VMSS data disk queue depth on ${label:resource_name} |\n| [ am_vmss_data_disk_bandwidth_throttling ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.data_disk_throttling | VMSS data disk bandwidth consumed on ${label:resource_name} |\n| [ am_vmss_data_disk_iops_throttling ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.data_disk_throttling | VMSS data disk IOPS consumed on ${label:resource_name} |\n| [ am_vmss_data_disk_burst_bps_credits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.data_disk_burst_credits | VMSS data disk burst BPS credits depleting on ${label:resource_name} |\n| [ am_vmss_data_disk_burst_io_credits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.data_disk_burst_credits | VMSS data disk burst IO credits depleting on ${label:resource_name} |\n| [ am_vmss_temp_disk_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.temp_disk_latency | VMSS temp disk latency on ${label:resource_name} |\n| [ am_vmss_temp_disk_queue_depth ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.temp_disk_queue_depth | VMSS temp disk queue depth on ${label:resource_name} |\n| [ am_vmss_vm_cached_bandwidth_throttling ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.vm_cached_throttling | VMSS cached bandwidth consumed on ${label:resource_name} |\n| [ am_vmss_vm_cached_iops_throttling ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.vm_cached_throttling | VMSS cached IOPS consumed on ${label:resource_name} |\n| [ am_vmss_vm_uncached_bandwidth_throttling ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.vm_uncached_throttling | VMSS uncached bandwidth consumed on ${label:resource_name} |\n| [ am_vmss_vm_uncached_iops_throttling ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.vm_uncached_throttling | VMSS uncached IOPS consumed on ${label:resource_name} |\n| [ am_vmss_vm_cached_burst_bps_credits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.vm_cached_burst_credits | VMSS cached burst BPS credits depleting on ${label:resource_name} |\n| [ am_vmss_vm_cached_burst_io_credits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.vm_cached_burst_credits | VMSS cached burst IO credits depleting on ${label:resource_name} |\n| [ am_vmss_vm_uncached_burst_bps_credits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.vm_uncached_burst_credits | VMSS uncached burst BPS credits depleting on ${label:resource_name} |\n| [ am_vmss_vm_uncached_burst_io_credits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/azure_monitor_vmss.conf) | azure_monitor.vmss.vm_uncached_burst_credits | VMSS uncached burst IO credits depleting on ${label:resource_name} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per resource\n\nThese metrics refer to each monitored Azure resource.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource_name | The Azure resource name. |\n| resource_group | The Azure resource group. |\n| region | The Azure region where the resource is deployed. |\n| resource_type | The Azure resource type identifier. |\n| profile | The Azure Monitor profile basename. |\n| subscription_id | The Azure subscription identifier. |\n| resource_uid | The unique Azure resource identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| azure_monitor.vmss.cpu | average | percentage |\n| azure_monitor.vmss.cpu_credits | consumed, remaining | credits |\n| azure_monitor.vmss.memory | available | bytes |\n| azure_monitor.vmss.memory_percentage | available | percentage |\n| azure_monitor.vmss.availability | average | state |\n| azure_monitor.vmss.network_traffic | in, out | bytes/s |\n| azure_monitor.vmss.network_flows | in, out | flows |\n| azure_monitor.vmss.network_flow_creation_rate | in, out | flows/s |\n| azure_monitor.vmss.disk_throughput | read, write | bytes/s |\n| azure_monitor.vmss.disk_iops | read, write | operations/s |\n| azure_monitor.vmss.os_disk_throughput | read, write | bytes/s |\n| azure_monitor.vmss.os_disk_iops | read, write | operations/s |\n| azure_monitor.vmss.os_disk_latency | average | milliseconds |\n| azure_monitor.vmss.os_disk_queue_depth | average | operations |\n| azure_monitor.vmss.os_disk_throttling | bandwidth, iops | percentage |\n| azure_monitor.vmss.os_disk_burst_capacity | max_burst, target | bytes/s |\n| azure_monitor.vmss.os_disk_burst_iops_capacity | max_burst, target | iops |\n| azure_monitor.vmss.os_disk_burst_credits | bandwidth, io | percentage |\n| azure_monitor.vmss.data_disk_throughput | read, write | bytes/s |\n| azure_monitor.vmss.data_disk_iops | read, write | operations/s |\n| azure_monitor.vmss.data_disk_latency | average | milliseconds |\n| azure_monitor.vmss.data_disk_queue_depth | average | operations |\n| azure_monitor.vmss.data_disk_throttling | bandwidth, iops | percentage |\n| azure_monitor.vmss.data_disk_burst_capacity | max_burst, target | bytes/s |\n| azure_monitor.vmss.data_disk_burst_iops_capacity | max_burst, target | iops |\n| azure_monitor.vmss.data_disk_burst_credits | bandwidth, io | percentage |\n| azure_monitor.vmss.temp_disk_throughput | read, write | bytes/s |\n| azure_monitor.vmss.temp_disk_iops | read, write | operations/s |\n| azure_monitor.vmss.temp_disk_latency | average | milliseconds |\n| azure_monitor.vmss.temp_disk_queue_depth | average | operations |\n| azure_monitor.vmss.premium_data_disk_cache | hit, miss | percentage |\n| azure_monitor.vmss.premium_os_disk_cache | hit, miss | percentage |\n| azure_monitor.vmss.vm_cached_throttling | bandwidth, iops | percentage |\n| azure_monitor.vmss.vm_uncached_throttling | bandwidth, iops | percentage |\n| azure_monitor.vmss.vm_cached_burst_credits | bandwidth, io | percentage |\n| azure_monitor.vmss.vm_uncached_burst_credits | bandwidth, io | percentage |\n\n",integration_type:"collector",id:"go.d.plugin-azure_monitor-Azure_Virtual_Machine_Scale_Set",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/azure_monitor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-beanstalk",plugin_name:"go.d.plugin",module_name:"beanstalk",monitored_instance:{name:"Beanstalk",link:"https://beanstalkd.github.io/",categories:["data-collection.databases"],icon_filename:"beanstalk.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["beanstalk","beanstalkd","message"]},overview:"# Beanstalk\n\nPlugin: go.d.plugin\nModule: beanstalk\n\n## Overview\n\nThis collector monitors Beanstalk server performance and provides detailed statistics for each tube.\n\n\nUsing the [beanstalkd protocol](https://github.com/beanstalkd/beanstalkd/blob/master/doc/protocol.txt), it communicates with the Beanstalk daemon to gather essential metrics that help understand the server's performance and activity.\nExecuted commands:\n\n- [stats](https://github.com/beanstalkd/beanstalkd/blob/91c54fc05dc759ef27459ce4383934e1a4f2fb4b/doc/protocol.txt#L553).\n- [list-tubes](https://github.com/beanstalkd/beanstalkd/blob/91c54fc05dc759ef27459ce4383934e1a4f2fb4b/doc/protocol.txt#L688).\n- [stats-tube](https://github.com/beanstalkd/beanstalkd/blob/91c54fc05dc759ef27459ce4383934e1a4f2fb4b/doc/protocol.txt#L497).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Beanstalk instances running on localhost that are listening on port 11300.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **beanstalk** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **beanstalk**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/beanstalk.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | Beanstalk service address (`IP:PORT`). | 127.0.0.1:11300 | yes |\n| | timeout | Connection, read, write, and name resolution timeout (seconds). | 1 | no |\n| **Filters** | tube_selector | Tube selector. Defines which Beanstalk tubes to monitor. Uses [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#readme). | * | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **beanstalk** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the beanstalk data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _beanstalk_ (or scroll the list) to locate the **beanstalk** collector.\n5. Click the **+** next to the **beanstalk** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/beanstalk.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/beanstalk.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:11300\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:11300\n\n - name: remote\n address: 203.0.113.0:11300\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `beanstalk` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m beanstalk\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m beanstalk -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `beanstalk` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep beanstalk\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep beanstalk /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep beanstalk\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ beanstalk_server_buried_jobs ](https://github.com/netdata/netdata/blob/master/src/health/health.d/beanstalkd.conf) | beanstalk.current_jobs | number of buried jobs across all tubes. You need to manually kick them so they can be processed. Presence of buried jobs in a tube does not affect new jobs. |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Beanstalk instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| beanstalk.current_jobs | ready, buried, urgent, delayed, reserved | jobs |\n| beanstalk.jobs_rate | created | jobs/s |\n| beanstalk.jobs_timeouts | timeouts | jobs/s |\n| beanstalk.current_tubes | tubes | tubes |\n| beanstalk.commands_rate | put, peek, peek-ready, peek-delayed, peek-buried, reserve, reserve-with-timeout, touch, use, watch, ignore, delete, bury, kick, stats, stats-job, stats-tube, list-tubes, list-tube-used, list-tubes-watched, pause-tube | commands/s |\n| beanstalk.current_connections | open, producers, workers, waiting | connections |\n| beanstalk.connections_rate | created | connections/s |\n| beanstalk.binlog_records | written, migrated | records/s |\n| beanstalk.cpu_usage | user, system | percent |\n| beanstalk.uptime | uptime | seconds |\n\n### Per tube\n\nMetrics related to Beanstalk tubes. This set of metrics is provided for each tube.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| tube_name | Tube name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| beanstalk.tube_current_jobs | ready, buried, urgent, delayed, reserved | jobs |\n| beanstalk.tube_jobs_rate | created | jobs/s |\n| beanstalk.tube_commands_rate | delete, pause-tube | commands/s |\n| beanstalk.tube_current_connections | using, waiting, watching | connections |\n| beanstalk.tube_pause_time | since, left | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-beanstalk-Beanstalk",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/beanstalk/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-boinc",plugin_name:"go.d.plugin",module_name:"boinc",monitored_instance:{name:"BOINC",link:"https://boinc.berkeley.edu/",categories:["data-collection.applications"],icon_filename:"bolt.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["boinc","distributed"]},overview:"# BOINC\n\nPlugin: go.d.plugin\nModule: boinc\n\n## Overview\n\nThis collector monitors task counts for the Berkeley Open Infrastructure Networking Computing (BOINC) distributed computing client.\n\n\nIt communicates with BOING using [GIU RPC Protocol](https://boinc.berkeley.edu/trac/wiki/GuiRpcProtocol).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects BOINC client instances running on localhost that are listening on port 31416.\nOn startup, it tries to collect metrics from:\n\n- http://127.0.0.1:31416\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **boinc** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **boinc**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/boinc.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 1 | no |\n| autodetection_retry | Recheck interval in seconds. Zero means no recheck will be scheduled. | 0 | no |\n| address | The IP address and port where the BOINC client listens for connections. | 127.0.0.1:31416 | yes |\n| timeout | Connection, read, and write timeout duration in seconds. The timeout includes name resolution. | 1 | no |\n| password | The GUI RPC password for authentication. | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **boinc** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the boinc data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _boinc_ (or scroll the list) to locate the **boinc** collector.\n5. Click the **+** next to the **boinc** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/boinc.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/boinc.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:31416\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:31416\n\n - name: remote\n address: 203.0.113.0:31416\n password: somePassword\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `boinc` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m boinc\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m boinc -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `boinc` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep boinc\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep boinc /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep boinc\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ boinc_total_tasks ](https://github.com/netdata/netdata/blob/master/src/health/health.d/boinc.conf) | boinc.tasks | average number of total tasks over the last 10 minutes |\n| [ boinc_active_tasks ](https://github.com/netdata/netdata/blob/master/src/health/health.d/boinc.conf) | boinc.tasks | average number of active tasks over the last 10 minutes |\n| [ boinc_compute_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/boinc.conf) | boinc.tasks_state | average number of compute errors over the last 10 minutes |\n| [ boinc_upload_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/boinc.conf) | boinc.tasks_state | average number of failed uploads over the last 10 minutes |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per BOINC instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| boinc.tasks | total, active | tasks |\n| boinc.tasks_per_state | new, downloading, downloaded, compute_error, uploading, uploaded, aborted, upload_failed | tasks |\n| boinc.active_tasks_per_state | uninitialized, executing, abort_pending, quit_pending, suspended, copy_pending | tasks |\n| boinc.active_tasks_per_scheduler_state | uninitialized, preempted, scheduled | tasks |\n\n",integration_type:"collector",id:"go.d.plugin-boinc-BOINC",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/boinc/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-cassandra",module_name:"cassandra",plugin_name:"go.d.plugin",monitored_instance:{categories:["data-collection.databases"],icon_filename:"cassandra.svg",name:"Cassandra",link:"https://cassandra.apache.org/_/index.html"},alternative_monitored_instances:[],keywords:["nosql","dbms","db","database"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cassandra\n\nPlugin: go.d.plugin\nModule: cassandra\n\n## Overview\n\nThis collector gathers metrics about client requests, cache hits, and many more, while also providing metrics per each thread pool.\n\n\nThe [JMX Exporter](https://github.com/prometheus/jmx_exporter) is used to fetch metrics from a Cassandra instance and make them available at an endpoint like `http://127.0.0.1:7072/metrics`.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis collector discovers instances running on the local host that provide metrics on port 7072.\n\nOn startup, it tries to collect metrics from:\n\n- http://127.0.0.1:7072/metrics\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **cassandra** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **cassandra**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/cassandra.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Configure Cassandra with Prometheus JMX Exporter\n\nTo configure Cassandra with the [JMX Exporter](https://github.com/prometheus/jmx_exporter):\n\n> **Note**: paths can differ depends on your setup.\n\n- Download latest [jmx_exporter](https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/) jar file\n and install it in a directory where Cassandra can access it.\n- Add\n the [jmx_exporter.yaml](https://raw.githubusercontent.com/netdata/go.d.plugin/master/modules/cassandra/jmx_exporter.yaml)\n file to `/etc/cassandra`.\n- Add the following line to `/etc/cassandra/cassandra-env.sh`\n ```\n JVM_OPTS="$JVM_OPTS $JVM_EXTRA_OPTS -javaagent:/opt/jmx_exporter/jmx_exporter.jar=7072:/etc/cassandra/jmx_exporter.yaml\n ```\n- Restart cassandra service.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:7072/metrics | yes |\n| | timeout | HTTP request timeout (seconds). | 2 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **cassandra** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the cassandra data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _cassandra_ (or scroll the list) to locate the **cassandra** collector.\n5. Click the **+** next to the **cassandra** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/cassandra.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/cassandra.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:7072/metrics\n\n```\n###### HTTP authentication\n\nLocal server with basic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:7072/metrics\n username: foo\n password: bar\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nLocal server with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:7072/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:7072/metrics\n\n - name: remote\n url: http://192.0.2.1:7072/metrics\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `cassandra` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m cassandra\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m cassandra -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `cassandra` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep cassandra\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep cassandra /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep cassandra\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Cassandra instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cassandra.client_requests_rate | read, write | requests/s |\n| cassandra.client_request_read_latency_histogram | p50, p75, p95, p98, p99, p999 | seconds |\n| cassandra.client_request_write_latency_histogram | p50, p75, p95, p98, p99, p999 | seconds |\n| cassandra.client_requests_latency | read, write | seconds |\n| cassandra.row_cache_hit_ratio | hit_ratio | percentage |\n| cassandra.row_cache_hit_rate | hits, misses | events/s |\n| cassandra.row_cache_utilization | used | percentage |\n| cassandra.row_cache_size | size | bytes |\n| cassandra.key_cache_hit_ratio | hit_ratio | percentage |\n| cassandra.key_cache_hit_rate | hits, misses | events/s |\n| cassandra.key_cache_utilization | used | percentage |\n| cassandra.key_cache_size | size | bytes |\n| cassandra.storage_live_disk_space_used | used | bytes |\n| cassandra.compaction_completed_tasks_rate | completed | tasks/s |\n| cassandra.compaction_pending_tasks_count | pending | tasks |\n| cassandra.compaction_compacted_rate | compacted | bytes/s |\n| cassandra.jvm_memory_used | heap, nonheap | bytes |\n| cassandra.jvm_gc_rate | parnew, cms | gc/s |\n| cassandra.jvm_gc_time | parnew, cms | seconds |\n| cassandra.dropped_messages_rate | dropped | messages/s |\n| cassandra.client_requests_timeouts_rate | read, write | timeout/s |\n| cassandra.client_requests_unavailables_rate | read, write | exceptions/s |\n| cassandra.client_requests_failures_rate | read, write | failures/s |\n| cassandra.storage_exceptions_rate | storage | exceptions/s |\n\n### Per thread pool\n\nMetrics related to Cassandra's thread pools. Each thread pool provides its own set of the following metrics.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| thread_pool | thread pool name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cassandra.thread_pool_active_tasks_count | active | tasks |\n| cassandra.thread_pool_pending_tasks_count | pending | tasks |\n| cassandra.thread_pool_blocked_tasks_count | blocked | tasks |\n| cassandra.thread_pool_blocked_tasks_rate | blocked | tasks/s |\n\n",integration_type:"collector",id:"go.d.plugin-cassandra-Cassandra",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/cassandra/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-cato_networks",plugin_name:"go.d.plugin",module_name:"cato_networks",monitored_instance:{name:"Cato Networks",link:"https://www.catonetworks.com/",icon_filename:"network-wired.svg",categories:["network-performance-monitoring.device-metrics"]},keywords:["cato","cato networks","sase","sd-wan","bgp","topology"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cato Networks\n\nPlugin: go.d.plugin\nModule: cato_networks\n\n## Overview\n\nThis collector monitors Cato Networks accounts through the Cato GraphQL API.\n\nIt discovers sites, collects site, device, and interface status, traffic and quality metrics, collects BGP peer status, and exposes Cato site/device/PoP/BGP topology data.\nMetrics for each selected site are emitted under a generated virtual node named after the Cato site and keyed by the Cato account ID and site ID. Site labels are still attached to metric series for grouping and aggregation.\n\n\nThe collector uses the Cato GraphQL API endpoint with an account ID and API key.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nA Cato API key with permission to read account snapshot, account metrics, entity lookup, and site BGP status data is required.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis collector does not auto-detect Cato accounts. Configure at least one job with `account_id` and `api_key`.\n\n\n#### Limits\n\nSite discovery is paginated and refreshed hourly. The optional `site_selector` filters sites before snapshot, metrics, BGP, topology, and generated site virtual-node creation. Account metrics use bounded concurrent one-site API requests to preserve per-Socket device and interface attribution. BGP status uses one per-site API request for each selected site that is not currently cached as having no BGP peers.\n\n\n#### Performance Impact\n\nThe default interval is 60 seconds. Sites that return a successful BGP response with no peers are cached as non-BGP sites for about one hour, with deterministic per-site jitter across multiple collection cycles to avoid synchronized refresh bursts. If BGP is enabled on such a site, BGP metrics can appear after that cache expires.\n\n",setup:'## Setup\n\n\nYou can configure the **cato_networks** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **cato_networks**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/cato_networks.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Cato API credentials\n\nCreate or obtain a Cato API key and account ID with read access to the required GraphQL API surfaces.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval, in seconds. Must be at least 60. | 60 | no |\n| | autodetection_retry | Autodetection retry interval, in seconds. Set 0 to disable. | 0 | no |\n| **Target** | url | Cato GraphQL API endpoint. Production endpoints must use HTTPS; HTTP is accepted only for loopback test endpoints. | https://api.catonetworks.com/api/v1/graphql2 | no |\n| **Authentication** | account_id | Cato account ID. | | yes |\n| | api_key | Cato API key. | | yes |\n| **HTTP** | timeout | HTTP request timeout. | 30 | no |\n| | proxy_url | HTTP proxy URL. Empty value uses environment proxy variables. | | no |\n| **Cardinality** | site_selector | Space-separated simple patterns matched against the Cato site name when present, otherwise the site ID. Patterns use first-match ordering; put exclusions before broad includes, for example `!lab-* *`. | * | no |\n| **Virtual Node** | vnode | Associates this data collection job with a Virtual Node. | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **cato_networks** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the cato_networks data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _cato_networks_ (or scroll the list) to locate the **cato_networks** collector.\n5. Click the **+** next to the **cato_networks** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/cato_networks.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/cato_networks.conf\n```\n\n##### Examples\n\n###### Basic\n\nCollect Cato Networks account metrics and topology.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: account\n account_id: "12345"\n api_key: "replace-with-cato-api-key"\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `cato_networks` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m cato_networks\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m cato_networks -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `cato_networks` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep cato_networks\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep cato_networks /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep cato_networks\n```\n\n### API rate limits\n\nIncrease `update_every` or narrow `site_selector` if the Cato API reports rate limiting.\n\n\n### Connection, TLS, or proxy failures\n\nCheck DNS, firewall egress, TLS inspection, proxy settings, endpoint region, and the collector logs.\n\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ cato_networks_site_disconnected ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cato_networks.conf) | cato_networks.site_connectivity_status | Cato site ${label:site_name} reports disconnected connectivity status |\n| [ cato_networks_site_degraded ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cato_networks.conf) | cato_networks.site_connectivity_status | Cato site ${label:site_name} reports degraded connectivity status |\n| [ cato_networks_site_packet_loss ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cato_networks.conf) | cato_networks.site_packet_loss | Cato site ${label:site_name} packet loss over the last 10 minutes |\n| [ cato_networks_bgp_session_down ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cato_networks.conf) | cato_networks.bgp_session_status | Cato BGP session to peer ${label:peer_ip} (${label:peer_asn}) is down |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per site\n\nThese metrics refer to a Cato site.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| site_id | Cato site ID. |\n| site_name | Cato site name. |\n| pop_name | Cato PoP name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cato_networks.site_connectivity_status | connected, disconnected, degraded, unknown | status |\n| cato_networks.site_operational_status | active, disabled, locked, unknown | status |\n| cato_networks.site_hosts | hosts | hosts |\n| cato_networks.site_traffic | upstream, downstream | bytes |\n| cato_networks.site_packet_loss | upstream, downstream | percentage |\n| cato_networks.site_discarded_packets | upstream, downstream | packets |\n| cato_networks.site_jitter | upstream, downstream | milliseconds |\n| cato_networks.site_latency | rtt, last_mile | milliseconds |\n| cato_networks.site_last_mile_packet_loss | loss | percentage |\n\n### Per device\n\nThese metrics refer to a Cato Socket or vSocket attached to a site.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| site_id | Cato site ID. |\n| site_name | Cato site name. |\n| device_id | Cato device ID. |\n| device_name | Cato device name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cato_networks.device_connection_status | connected, disconnected | status |\n\n### Per interface\n\nThese metrics refer to a Cato site interface.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| site_id | Cato site ID. |\n| site_name | Cato site name. |\n| device_id | Cato device ID when the interface owner is known. |\n| device_name | Cato device name when the interface owner is known. |\n| interface_id | Cato interface ID. |\n| interface_name | Interface name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cato_networks.interface_connection_status | connected, disconnected | status |\n| cato_networks.interface_tunnel_uptime | uptime | seconds |\n| cato_networks.interface_traffic | upstream, downstream | bytes |\n| cato_networks.interface_packet_loss | upstream, downstream | percentage |\n| cato_networks.interface_discarded_packets | upstream, downstream | packets |\n| cato_networks.interface_jitter | upstream, downstream | milliseconds |\n| cato_networks.interface_latency | rtt | milliseconds |\n\n### Per bgp peer\n\nThese metrics refer to a Cato site BGP peer.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| site_id | Cato site ID. |\n| site_name | Cato site name. |\n| peer_ip | BGP peer IP. |\n| peer_asn | BGP peer ASN. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cato_networks.bgp_session_status | up, down, unknown | status |\n| cato_networks.bgp_routes | accepted, limit, rib_out | routes |\n| cato_networks.bgp_routes_limit_status | ok, exceeded | status |\n\n",integration_type:"collector",id:"go.d.plugin-cato_networks-Cato_Networks",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/cato_networks/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"ceph",monitored_instance:{name:"Ceph",link:"https://ceph.io/",categories:["data-collection.storage"],icon_filename:"ceph.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["ceph","storage"]},overview:"# Ceph\n\nPlugin: go.d.plugin\nModule: ceph\n\n## Overview\n\nThis collector monitors the overall health status and performance of your Ceph clusters.\nIt gathers key metrics for the entire cluster, individual Pools, and OSDs.\n\n\nIt collects metrics by periodically issuing HTTP GET requests to the Ceph Manager [REST API](https://docs.ceph.com/en/reef/mgr/ceph_api/#):\n\n- [/api/monitor](https://docs.ceph.com/en/reef/mgr/ceph_api/#get--api-monitor) (only once to get the Ceph cluster id (fsid)) \n- [/api/health/minimal](https://docs.ceph.com/en/reef/mgr/ceph_api/#get--api-health-minimal)\n- [/api/osd](https://docs.ceph.com/en/reef/mgr/ceph_api/#get--api-osd)\n- [/api/pool?stats=true](https://docs.ceph.com/en/reef/mgr/ceph_api/#get--api-pool)\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector can automatically detect Ceph Manager instances running on:\n\n- localhost that are listening on port 8443\n- within Docker containers\n\n> **Note that the Ceph REST API requires a username and password**. \n> While Netdata can automatically detect Ceph Manager instances and create data collection jobs, these jobs will fail unless you provide the necessary credentials.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **ceph** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **ceph**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/ceph.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | The URL of the [Ceph Manager API](https://docs.ceph.com/en/reef/mgr/ceph_api/). | https://127.0.0.1:8443 | yes |\n| | timeout | HTTP request timeout (seconds). | 2 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | yes |\n| | password | Password for Basic HTTP authentication. | | yes |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | yes | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **ceph** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the ceph data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _ceph_ (or scroll the list) to locate the **ceph** collector.\n5. Click the **+** next to the **ceph** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/ceph.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/ceph.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:8443\n username: user\n password: pass\n\n```\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:8443\n username: user\n password: pass\n\n - name: remote\n url: https://192.0.2.1:8443\n username: user\n password: pass\n\n```\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `ceph` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m ceph\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m ceph -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `ceph` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep ceph\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep ceph /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep ceph\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ ceph_cluster_physical_capacity_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ceph.conf) | ceph.cluster_physical_capacity_utilization | Ceph cluster ${label:fsid} disk space utilization |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cluster\n\nThese metrics refer to the entire Ceph cluster.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| fsid | A unique identifier of the cluster. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ceph.cluster_status | ok, err, warn | status |\n| ceph.cluster_hosts_count | hosts | hosts |\n| ceph.cluster_monitors_count | monitors | monitors |\n| ceph.cluster_osds_count | osds | osds |\n| ceph.cluster_osds_by_status_count | up, down, in, out | status |\n| ceph.cluster_managers_count | active, standby | managers |\n| ceph.cluster_object_gateways_count | object | gateways |\n| ceph.cluster_iscsi_gateways_count | iscsi | gateways |\n| ceph.cluster_iscsi_gateways_by_status_count | up, down | gateways |\n| ceph.cluster_physical_capacity_utilization | utilization | percent |\n| ceph.cluster_physical_capacity_usage | avail, used | bytes |\n| ceph.cluster_objects_count | objects | objects |\n| ceph.cluster_objects_by_status_distribution | healthy, misplaced, degraded, unfound | percent |\n| ceph.cluster_pools_count | pools | pools |\n| ceph.cluster_pgs_count | pgs | pgs |\n| ceph.cluster_pgs_by_status_count | clean, working, warning, unknown | pgs |\n| ceph.cluster_pgs_per_osd_count | per_osd | pgs |\n\n### Per osd\n\nThese metrics refer to the Object Storage Daemon (OSD).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| fsid | A unique identifier of the cluster. |\n| osd_uuid | OSD UUID. |\n| osd_name | OSD name. |\n| device_class | OSD device class. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ceph.osd_status | up, down, in, out | status |\n| ceph.osd_space_usage | avail, used | bytes |\n| ceph.osd_io | read, written | bytes/s |\n| ceph.osd_iops | read, write | ops/s |\n| ceph.osd_latency | commit, apply | milliseconds |\n\n### Per pool\n\nThese metrics refer to the Pool.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| fsid | A unique identifier of the cluster. |\n| pool_name | Pool name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ceph.pool_space_utilization | utilization | percent |\n| ceph.pool_space_usage | avail, used | bytes |\n| ceph.pool_objects_count | object | objects |\n| ceph.pool_io | read, written | bytes/s |\n| ceph.pool_iops | read, write | ops/s |\n\n",integration_type:"collector",id:"go.d.plugin-ceph-Ceph",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/ceph/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-chrony",module_name:"chrony",plugin_name:"go.d.plugin",monitored_instance:{categories:["data-collection.networking"],icon_filename:"chrony.jpg",name:"Chrony",link:"https://chrony.tuxfamily.org/"},alternative_monitored_instances:[],keywords:[],info_provided_to_referring_integrations:{description:""},related_resources:{integrations:{list:[]}}},overview:"# Chrony\n\nPlugin: go.d.plugin\nModule: chrony\n\n## Overview\n\nThis collector monitors the system's clock performance and peers activity status\n\n\nIt collects metrics by sending UDP packets to chronyd using the Chrony communication protocol v6.\nAdditionally, for data collection jobs that connect to localhost Chrony instances, it collects serverstats metrics (NTP packets, command packets received/dropped) by executing the 'chronyc serverstats' command.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis collector discovers Chrony instance running on the local host and listening on port 323.\nOn startup, it tries to collect metrics from:\n\n- 127.0.0.1:323\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **chrony** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **chrony**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/chrony.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | Chrony server address (`IP:PORT`). | 127.0.0.1:323 | yes |\n| | timeout | Connection timeout (seconds). Set 0 to disable. | 1 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **chrony** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the chrony data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _chrony_ (or scroll the list) to locate the **chrony** collector.\n5. Click the **+** next to the **chrony** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/chrony.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/chrony.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:323\n\n```\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:323\n\n - name: remote\n address: 192.0.2.1:323\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `chrony` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m chrony\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m chrony -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `chrony` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep chrony\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep chrony /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep chrony\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Chrony instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| chrony.stratum | stratum | level |\n| chrony.current_correction | current_correction | seconds |\n| chrony.root_delay | root_delay | seconds |\n| chrony.root_dispersion | root_delay | seconds |\n| chrony.last_offset | offset | seconds |\n| chrony.rms_offset | offset | seconds |\n| chrony.frequency | frequency | ppm |\n| chrony.residual_frequency | residual_frequency | ppm |\n| chrony.skew | skew | ppm |\n| chrony.update_interval | update_interval | seconds |\n| chrony.ref_measurement_time | ref_measurement_time | seconds |\n| chrony.leap_status | normal, insert_second, delete_second, unsynchronised | status |\n| chrony.activity | online, offline, burst_online, burst_offline, unresolved | sources |\n| chrony.ntp_packets | received, dropped | packets/s |\n| chrony.command_packets | received, dropped | packets/s |\n\n",integration_type:"collector",id:"go.d.plugin-chrony-Chrony",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/chrony/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-clickhouse",plugin_name:"go.d.plugin",module_name:"clickhouse",monitored_instance:{name:"ClickHouse",link:"https://clickhouse.com/",icon_filename:"clickhouse.svg",categories:["data-collection.databases"]},keywords:["database"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# ClickHouse\n\nPlugin: go.d.plugin\nModule: clickhouse\n\n## Overview\n\nThis collector retrieves performance data from ClickHouse for connections, queries, resources, replication, IO, and data operations (inserts, selects, merges) using HTTP requests and ClickHouse system tables. It monitors your ClickHouse server's health and activity.\n\n\nIt sends HTTP requests to the ClickHouse [HTTP interface](https://clickhouse.com/docs/en/interfaces/http), executing SELECT queries to retrieve data from various system tables.\nSpecifically, it collects metrics from the following tables:\n\n- system.metrics\n- system.async_metrics\n- system.events\n- system.disks\n- system.parts\n- system.processes\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects ClickHouse instances running on localhost that are listening on port 8123.\nOn startup, it tries to collect metrics from:\n\n- http://127.0.0.1:8123\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **clickhouse** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **clickhouse**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/clickhouse.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8123 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Functions** | functions.top_queries.disabled | Disable the [top-queries](#top-queries) function. | no | no |\n| | functions.top_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.top_queries.limit | Maximum number of queries to return. | 500 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **clickhouse** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the clickhouse data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _clickhouse_ (or scroll the list) to locate the **clickhouse** collector.\n5. Click the **+** next to the **clickhouse** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/clickhouse.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/clickhouse.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8123\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8123\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nClickHouse with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:8123\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8123\n\n - name: remote\n url: http://192.0.2.1:8123\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `clickhouse` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m clickhouse\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m clickhouse -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `clickhouse` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep clickhouse\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep clickhouse /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep clickhouse\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ clickhouse_restarted ](https://github.com/netdata/netdata/blob/master/src/health/health.d/clickhouse.conf) | clickhouse.uptime | ClickHouse has recently been restarted |\n| [ clickhouse_queries_preempted ](https://github.com/netdata/netdata/blob/master/src/health/health.d/clickhouse.conf) | clickhouse.queries_preempted | ClickHouse has queries that are stopped and waiting due to priority setting |\n| [ clickhouse_long_running_query ](https://github.com/netdata/netdata/blob/master/src/health/health.d/clickhouse.conf) | clickhouse.longest_running_query_time | ClickHouse has a long-running query exceeding the threshold |\n| [ clickhouse_rejected_inserts ](https://github.com/netdata/netdata/blob/master/src/health/health.d/clickhouse.conf) | clickhouse.rejected_inserts | ClickHouse has INSERT queries that are rejected due to high number of active data parts for partition in a MergeTree |\n| [ clickhouse_delayed_inserts ](https://github.com/netdata/netdata/blob/master/src/health/health.d/clickhouse.conf) | clickhouse.delayed_inserts | ClickHouse has INSERT queries that are throttled due to high number of active data parts for partition in a MergeTree |\n| [ clickhouse_replication_lag ](https://github.com/netdata/netdata/blob/master/src/health/health.d/clickhouse.conf) | clickhouse.replicas_max_absolute_delay | ClickHouse is experiencing replication lag greater than 5 minutes |\n| [ clickhouse_replicated_readonly_tables ](https://github.com/netdata/netdata/blob/master/src/health/health.d/clickhouse.conf) | clickhouse.replicated_readonly_tables | ClickHouse has replicated tables in readonly state due to ZooKeeper session loss/startup without ZooKeeper configured |\n| [ clickhouse_max_part_count_for_partition ](https://github.com/netdata/netdata/blob/master/src/health/health.d/clickhouse.conf) | clickhouse.max_part_count_for_partition | ClickHouse high number of parts per partition |\n| [ clickhouse_distributed_connections_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/clickhouse.conf) | clickhouse.distributed_connections_fail_exhausted_retries | ClickHouse has failed distributed connections after exhausting all retry attempts |\n| [ clickhouse_distributed_files_to_insert ](https://github.com/netdata/netdata/blob/master/src/health/health.d/clickhouse.conf) | clickhouse.distributed_files_to_insert | ClickHouse high number of pending files to process for asynchronous insertion into Distributed tables |\n",functions:"## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Top Queries\n\nRetrieves and aggregates SQL query performance metrics from ClickHouse [system.query_log](https://clickhouse.com/docs/en/operations/system-tables/query_log) table.\n\nThis function queries the `system.query_log` table, which contains information about executed queries including timing, resource usage, and execution statistics. Queries are grouped by their normalized hash (`normalized_query_hash`) to aggregate statistics for identical query patterns with different literal values.\n\nUse cases:\n- Identify slow queries that consume the most execution time\n- Find frequently executed queries that may benefit from optimization\n- Analyze I/O patterns by examining read/written rows and bytes\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Clickhouse:top-queries` |\n| Require Cloud | yes |\n| Performance | Queries `system.query_log` table and aggregates by `normalized_query_hash`:<br/>\u2022 On busy systems with high query throughput, the table can grow large<br/>\u2022 Default limit of 500 rows balances usefulness with performance |\n| Security | Query text may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Personal information in query parameters<br/>\u2022 Business data and internal identifiers<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to ClickHouse<br/>\u2022 `system.query_log` table is accessible<br/>\u2022 Returns HTTP 503 if `system.query_log` is not accessible<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Grant access to `system.query_log`\n\nEnsure the Netdata user can read `system.query_log` on the target ClickHouse instance.\n\n1. Verify `query_log` is enabled (enabled by default):\n\n ```sql\n SELECT * FROM system.query_log LIMIT 1;\n ```\n\n2. If using a dedicated monitoring user, grant SELECT access:\n\n ```sql\n GRANT SELECT ON system.query_log TO netdata_user;\n ```\n\n:::info\n\n- The `query_log` table is enabled by default in ClickHouse\n- Only queries with `type='QueryFinish'` are included in the results\n- The `normalized_query_hash` column is used for grouping when available\n\n:::\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. The available options include total execution time, number of calls, rows read, and more. Defaults to total execution time to focus on most resource-intensive queries. | yes | totalTime | |\n\n#### Returns\n\nAggregated query statistics from `system.query_log`, grouped by normalized query hash. Each row represents a unique query pattern with cumulative metrics across all executions.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Query ID | string | | hidden | Unique hash identifier for the normalized query pattern. Queries with identical structure but different literal values share the same hash. |\n| Query | string | | | SQL query text from one of the executions. Truncated to 4096 characters. Use this to identify the actual SQL being executed. |\n| Database | string | | | Database name where the query was executed. Empty string for queries without a database context or system queries. |\n| User | string | | | ClickHouse user that executed the query. Useful for identifying query sources and implementing per-user resource monitoring. |\n| Calls | integer | | | Total number of times this query pattern has been executed. High values indicate frequently run queries that impact overall server load. |\n| Total Time | duration | milliseconds | | Cumulative execution time across all executions. High values indicate queries that consume significant server resources over time. |\n| Avg Time | duration | milliseconds | | Average execution time per query run. Use this to compare typical performance across different query patterns. |\n| Min Time | duration | milliseconds | hidden | Minimum execution time observed for a single execution. Helps identify best-case query performance. |\n| Max Time | duration | milliseconds | hidden | Maximum execution time observed for a single execution. Large gaps between min and max may indicate data skew or resource contention. |\n| Read Rows | integer | | | Total number of rows read from storage across all executions. High values suggest queries scanning large amounts of data that may benefit from better filtering or indexing. |\n| Read Bytes | integer | | | Total bytes read from storage across all executions. Indicates I/O load and data transfer volume for the query pattern. |\n| Written Rows | integer | | hidden | Total number of rows written across all executions. Relevant for INSERT, CREATE, or materialized view queries. |\n| Written Bytes | integer | | hidden | Total bytes written across all executions. Indicates storage impact of write operations. |\n| Result Rows | integer | | | Total number of rows returned to clients across all executions. A high ratio of read rows to result rows indicates filtering or aggregation happening on large datasets. |\n| Result Bytes | integer | | hidden | Total bytes returned to clients across all executions. Large values may indicate queries returning more data than necessary. |\n| Max Memory | float | | hidden | Maximum memory used during any single execution. High values may indicate queries at risk of hitting memory limits under load. |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per ClickHouse instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| clickhouse.connections | tcp, http, mysql, postgresql, interserver | connections |\n| clickhouse.slow_reads | slow | reads/s |\n| clickhouse.read_backoff | read_backoff | events/s |\n| clickhouse.memory_usage | used | bytes |\n| clickhouse.running_queries | running | queries |\n| clickhouse.queries_preempted | preempted | queries |\n| clickhouse.queries | successful, failed | queries/s |\n| clickhouse.select_queries | successful, failed | selects/s |\n| clickhouse.insert_queries | successful, failed | inserts/s |\n| clickhouse.queries_memory_limit_exceeded | mem_limit_exceeded | queries/s |\n| clickhouse.longest_running_query_time | longest_query_time | seconds |\n| clickhouse.queries_latency | queries_time | microseconds |\n| clickhouse.select_queries_latency | selects_time | microseconds |\n| clickhouse.insert_queries_latency | inserts_time | microseconds |\n| clickhouse.io | reads, writes | bytes/s |\n| clickhouse.iops | reads, writes | ops/s |\n| clickhouse.io_errors | read, write | errors/s |\n| clickhouse.io_seeks | lseek | ops/s |\n| clickhouse.io_file_opens | file_open | ops/s |\n| clickhouse.replicated_parts_current_activity | fetch, send, check | parts |\n| clickhouse.replicas_max_absolute_dela | replication_delay | seconds |\n| clickhouse.replicated_readonly_tables | read_only | tables |\n| clickhouse.replicated_data_loss | data_loss | events |\n| clickhouse.replicated_part_fetches | successful, failed | fetches/s |\n| clickhouse.inserted_rows | inserted | rows/s |\n| clickhouse.inserted_bytes | inserted | bytes/s |\n| clickhouse.rejected_inserts | rejected | inserts/s |\n| clickhouse.delayed_inserts | delayed | inserts/s |\n| clickhouse.delayed_inserts_throttle_time | delayed_inserts_throttle_time | milliseconds |\n| clickhouse.selected_bytes | selected | bytes/s |\n| clickhouse.selected_rows | selected | rows/s |\n| clickhouse.selected_parts | selected | parts/s |\n| clickhouse.selected_ranges | selected | ranges/s |\n| clickhouse.selected_marks | selected | marks/s |\n| clickhouse.merges | merge | ops/s |\n| clickhouse.merges_latency | merges_time | milliseconds |\n| clickhouse.merged_uncompressed_bytes | merged_uncompressed | bytes/s |\n| clickhouse.merged_rows | merged | rows/s |\n| clickhouse.merge_tree_data_writer_inserted_rows | inserted | rows/s |\n| clickhouse.merge_tree_data_writer_uncompressed_bytes | inserted | bytes/s |\n| clickhouse.merge_tree_data_writer_compressed_bytes | written | bytes/s |\n| clickhouse.uncompressed_cache_requests | hits, misses | requests/s |\n| clickhouse.mark_cache_requests | hits, misses | requests/s |\n| clickhouse.max_part_count_for_partition | max_parts_partition | parts |\n| clickhouse.parts_count | temporary, pre_active, active, deleting, delete_on_destroy, outdated, wide, compact | parts |\n| distributed_connections | active | connections |\n| distributed_connections_attempts | connection | attempts/s |\n| distributed_connections_fail_retries | connection_retry | fails/s |\n| distributed_connections_fail_exhausted_retries | connection_retry_exhausted | fails/s |\n| distributed_files_to_insert | pending_insertions | files |\n| distributed_rejected_inserts | rejected | inserts/s |\n| distributed_delayed_inserts | delayed | inserts/s |\n| distributed_delayed_inserts_latency | delayed_time | milliseconds |\n| distributed_sync_insertion_timeout_exceeded | sync_insertion | timeouts/s |\n| distributed_async_insertions_failures | async_insertions | failures/s |\n| clickhouse.uptime | uptime | seconds |\n\n### Per disk\n\nThese metrics refer to the Disk.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| disk_name | Name of the disk as defined in the [server configuration](https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree#table_engine-mergetree-multiple-volumes_configure). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| clickhouse.disk_space_usage | free, used | bytes |\n\n### Per table\n\nThese metrics refer to the Database Table.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| database | Name of the database. |\n| table | Name of the table. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| clickhouse.database_table_size | size | bytes |\n| clickhouse.database_table_parts | parts | parts |\n| clickhouse.database_table_rows | rows | rows |\n\n",integration_type:"collector",id:"go.d.plugin-clickhouse-ClickHouse",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/clickhouse/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-cloudwatch",plugin_name:"go.d.plugin",module_name:"cloudwatch",monitored_instance:{name:"Amazon CloudWatch",link:"https://aws.amazon.com/cloudwatch/",icon_filename:"aws.svg",categories:["data-collection.cloud-and-devops"]},keywords:["aws","amazon","amazon web services","cloudwatch","ec2","rds","elb","alb","nlb","network load balancer","s3","lambda","sqs","dynamodb","api gateway","step functions","nat gateway","kinesis","firehose","sns","ebs","efs","ecs","elasticache","opensearch","documentdb","redshift","msk","kafka","cloudfront","cdn","content delivery network","auto scaling","autoscaling","bedrock","generative ai","eventbridge","vpn","eks","kubernetes","k8s"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Amazon CloudWatch\n\nPlugin: go.d.plugin\nModule: cloudwatch\n\n## Overview\n\nMonitor AWS infrastructure through Amazon CloudWatch. This collector discovers CloudWatch metrics for a curated set of AWS services and renders them as Netdata charts, with minimal configuration.\n\nMonitored services:\n\n- Amazon EC2 (compute)\n- Amazon RDS (relational databases)\n- Elastic Load Balancing -- Classic (ELB), Application (ALB), and Network (NLB) load balancers\n- Amazon S3 (object storage)\n- AWS Lambda (serverless functions)\n- Amazon SQS (message queues)\n- Amazon DynamoDB (NoSQL databases)\n- Amazon API Gateway (REST APIs)\n- AWS Step Functions (workflow orchestration)\n- NAT Gateway (VPC networking)\n- Amazon Kinesis Data Streams (streaming ingestion)\n- Amazon Data Firehose (delivery streams)\n- Amazon SNS (pub/sub messaging)\n- Amazon EBS (block storage volumes)\n- Amazon EFS (elastic file systems)\n- Amazon ECS (container services)\n- Amazon ElastiCache (in-memory cache)\n- Amazon OpenSearch Service (search and analytics)\n- Amazon DocumentDB (document database)\n- Amazon Redshift (data warehouse)\n- Amazon MSK (Kafka streaming)\n- Amazon CloudFront (content delivery network / CDN)\n- AWS Auto Scaling (EC2 Auto Scaling group capacity)\n- Amazon Bedrock (foundation-model invocations and tokens)\n- Amazon EventBridge (event rules)\n- AWS Site-to-Site VPN (VPN connections)\n- Amazon EKS (Kubernetes control plane: API server, scheduler, etcd)\n\n[Each service is defined by a profile](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default) -- a YAML file declaring its CloudWatch namespace, the metrics and statistics to collect, and a chart template -- so coverage can be extended without code changes.\n\n:::tip Need a service that isn't listed?\n\nRequest a profile -- it's just a YAML file, no code change. [Open a feature request](https://github.com/netdata/netdata/issues/new/choose) and attach the service's CloudWatch metric schema, captured with this read-only command. It prints only metric and dimension **names** (no resource IDs, ARNs, or metric values), so the output is safe to share:\n\n```bash\naws cloudwatch list-metrics --namespace \"AWS/<Service>\" --region <your-region> --output json \\\n | jq -c '[.Metrics[] | {metric: .MetricName, dimensions: ([.Dimensions[].Name] | sort)}] | unique'\n```\n\nReplace `AWS/<Service>` with the service namespace (for example `AWS/AmazonMQ`) and `<your-region>` with a Region where the service runs. The exact metrics and dimensions in the output are what we need to author a correct profile quickly.\n\n:::\n\n\nThe collector discovers available metrics with the CloudWatch `ListMetrics` API (one paginated call per account, selected service profile, and region; the collector then keeps only the metrics whose dimension set matches each profile's instance dimensions) and queries them in batches with the `GetMetricData` API. Each configured identity's AWS account id is resolved via `sts:GetCallerIdentity` (one per assumed role, so a single job can monitor several accounts). Note that both discovery and query volume scale with accounts \xd7 regions \xd7 profiles, so adding many roles multiplies API calls (and `GetMetricData` cost) accordingly. Authentication uses the AWS SDK default credential chain, static access keys, or one or more assumed IAM roles.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe configured IAM identity requires `cloudwatch:ListMetrics`, `cloudwatch:GetMetricData`, and `sts:GetCallerIdentity`. When `auth.mode` is `assume_role`, it also requires `sts:AssumeRole`. Resource tag enrichment (the optional `tags` option) additionally requires `tag:GetResources`.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nWith `profiles.mode: auto` (default), the collector discovers metrics for all built-in service profiles across the configured `regions` and emits charts only for services that have live metrics. Discovery is cached and refreshed every `discovery.refresh_every` seconds (default 300).\n\n\n#### Limits\n\n- Minimum collection interval is 60 seconds (CloudWatch's minimum metric period).\n- CloudWatch publishes metrics with a delay; the effective query offset is `max(query_offset, period)`, so long-period metrics (such as the daily S3 storage metrics) are inherently about one period behind.\n- There is no cap on discovered resources; a warning is logged at 1000 or more discovered instances (collection is never truncated).\n- Resources are labeled by their identifying CloudWatch dimensions (for example EC2 `instance_id`). Selected resource tags can additionally be attached as labels via the opt-in `tags` option (using the Resource Groups Tagging API); tags are enrichment only and never change a resource's identity. (A dimension that is constant across resources, such as CloudFront's `Region=Global`, is used to match and query metrics but is not turned into a label.)\n\n\n#### Performance Impact\n\nAWS bills CloudWatch API usage. `GetMetricData` (the metric queries) is the cost driver, billed per metric requested; `ListMetrics` discovery falls under the free tier and then costs a fraction as much. As a rough anchor, `GetMetricData` is billed at roughly $0.01 per 1,000 metrics requested -- confirm current [CloudWatch pricing](https://aws.amazon.com/cloudwatch/pricing/) for your region. Each combination of instance, metric, and statistic is one billed query, run once per its own period (not once per collection cycle), so cost scales with discovered instances, metrics, statistics, and their periods -- not with `update_every`. The collector already minimizes it with curated per-service profiles, single-statistic defaults, exact dimension filtering, cached discovery, and `recently_active_only`. The default profile set includes narrow ALB/NLB target-health profiles; these add one health metric/statistic query per discovered target group and intentionally avoid the broader target-group metric packs. To reduce cost further, restrict services with `profiles.mode: exact` or narrow `regions`.\n\n",setup:'## Setup\n\n\nYou can configure the **cloudwatch** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **cloudwatch**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/cloudwatch.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create an AWS IAM identity with CloudWatch read access\n\nThe collector needs an IAM identity (user or role) allowed to read CloudWatch metrics and resolve the AWS account identity.\n\nAttach a policy such as:\n\n```json\n{\n "Version": "2012-10-17",\n "Statement": [\n {\n "Effect": "Allow",\n "Action": [\n "cloudwatch:ListMetrics",\n "cloudwatch:GetMetricData",\n "sts:GetCallerIdentity"\n ],\n "Resource": "*"\n }\n ]\n}\n```\n\n`cloudwatch:ListMetrics`, `cloudwatch:GetMetricData`, and `sts:GetCallerIdentity` do not support resource-level permissions, so `"Resource": "*"` is required -- this is already least-privilege for these read actions. In `assume_role` mode, scope `sts:AssumeRole` to the specific role ARN(s) rather than `*`. To enable resource tag enrichment (the optional `tags` option), also grant `tag:GetResources` (it likewise requires `"Resource": "*"`).\n\nThen provide credentials with one of the `auth.mode` options:\n\n- `default` -- the AWS SDK default credential chain (environment variables, shared config/credentials files, EC2 instance profile, or EKS IRSA). Recommended when Netdata runs inside AWS.\n- `access_key` -- a static access key ID and secret access key.\n- `assume_role` -- assume an IAM role by ARN (add `sts:AssumeRole` to the base identity\'s policy).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally or per job.\n\n**Profile file locations:**\n\n| Type | Path |\n|:-----|:-----|\n| Stock profiles | `/usr/lib/netdata/conf.d/go.d/cloudwatch.profiles/default/` |\n| User overrides | `/etc/netdata/go.d/cloudwatch.profiles/` |\n\nA user profile file with the same basename as a stock profile overrides it.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Must be at least 60 (CloudWatch\'s minimum period). | 60 | no |\n| | autodetection_retry | Recheck interval (seconds) when the job fails to start. Default `0` means no retry; set a positive value to keep retrying. | 0 | no |\n| | regions | List of AWS regions to collect from. At least one region is required; all regions must be in one AWS partition. | | yes |\n| | query_offset | Seconds subtracted from the current time when building query windows, to account for CloudWatch publish latency. The effective offset is `max(query_offset, period)`. | 600 | no |\n| | timeout | Timeout for AWS API requests (seconds). | 30 | no |\n| **Authentication** | [auth.mode](#option-authentication-auth-mode) | Authentication method: `default`, `access_key`, or `assume_role`. | default | yes |\n| | auth.mode_access_key.access_key_id | AWS access key ID (used in `access_key` mode). | | no |\n| | auth.mode_access_key.secret_access_key | AWS secret access key (used in `access_key` mode). | | no |\n| | auth.mode_access_key.session_token | Optional AWS session token for temporary credentials (used in `access_key` mode). | | no |\n| | auth.mode_assume_role.roles | IAM roles to assume (used in `assume_role` mode) -- one per AWS account to monitor. Each entry has `role_arn` and an optional `external_id`, and each metric series is labeled with the account id its role resolves to. A role that cannot be assumed is skipped with a warning while the rest keep collecting; two roles resolving to the same account are de-duplicated. | | no |\n| | auth.mode_assume_role.include_base_account | When `true`, also monitor the base identity\'s own account (the identity used to assume the roles) alongside the assumed-role accounts. Defaults to `false` -- with roles set, only the assumed-role accounts are monitored; to also cover the base account, enable this or run a separate `default`-mode job. | no | no |\n| **Profiles** | profiles.mode | Profile selection: `auto` (default service profiles, including narrow ALB/NLB target health), `exact` (only the profiles you list, by basename), or `combined` (default profiles plus disabled opt-in profiles such as broad target-group, per-operation, per-request-filter, and EBS stalled-I/O profiles). | auto | no |\n| | profiles.mode_exact.entries | List of profiles to collect by basename (required when `profiles.mode` is `exact`). Each entry has a `name`, e.g. `ec2` or `alb_target`. | | no |\n| **Discovery** | discovery.refresh_every | How often (seconds) to re-discover metrics. Minimum 60. | 300 | no |\n| | discovery.recently_active_only | List only metrics active in the last 3 hours. Automatically disabled for metrics whose period exceeds 3 hours (such as the daily S3 storage metrics). | yes | no |\n| **Tags** | tags | Optional allowlist of AWS resource tags to attach as extra labels on collected metrics, looked up via the Resource Groups Tagging API. Empty by default -- with no tags listed, no tag lookup runs and no extra IAM is needed. Each entry has a `name` (the AWS tag key, case-sensitive) and an optional `rename` (the Netdata label name; the default is the sanitized key, so `Name` becomes `name`). Use `rename` when the key is not a valid label (for example an `aws:`-prefixed key) or collides with a built-in label such as `region`. Enabling tags requires the `tag:GetResources` IAM permission. Note: tag values become label values and may contain personal data (such as owner emails), so list only tags you want exposed as labels. Tags apply only to profiles with a supported resource-ARN join; some services are not tag-enriched: Auto Scaling and Bedrock (not taggable via the Resource Groups Tagging API), and -- pending a reliable ARN join -- API Gateway, CloudFront, MSK, and ElastiCache. Tags behave as create-time chart labels: a tag that first appears or changes value after a chart already exists is reflected only when that chart is next recreated. | | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-authentication-auth-mode"></a>\n##### auth.mode\n\nDetermines how the collector authenticates with AWS.\n\n| Mode | When to use | Required options |\n|:-----|:------------|:-----------------|\n| `default` | Running inside AWS, or with credentials in the environment / shared config | None |\n| `access_key` | Explicit static credentials | `access_key_id`, `secret_access_key` |\n| `assume_role` | Assume an IAM role (cross-account or scoped access) | `roles[].role_arn` |\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **cloudwatch** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the cloudwatch data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _cloudwatch_ (or scroll the list) to locate the **cloudwatch** collector.\n5. Click the **+** next to the **cloudwatch** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/cloudwatch.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/cloudwatch.conf\n```\n\n##### Examples\n\n###### Default credentials, single region\n\nCollect from `us-east-1` using the AWS SDK default credential chain. Best when Netdata runs on an EC2 instance or in EKS with an attached IAM role.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: default_credentials\n regions:\n - us-east-1\n auth:\n mode: default\n\n```\n{% /details %}\n###### Static access key, multiple regions\n\nCollect from two regions using a static access key.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: access_key\n regions:\n - us-east-1\n - eu-west-1\n auth:\n mode: access_key\n mode_access_key:\n access_key_id: "your-access-key-id"\n secret_access_key: "your-secret-access-key"\n\n```\n{% /details %}\n###### Assume an IAM role\n\nAssume a CloudWatch read-only role, for example to collect from another account.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: assume_role\n regions:\n - us-east-1\n auth:\n mode: assume_role\n mode_assume_role:\n roles:\n - role_arn: "arn:aws:iam::123456789012:role/netdata-cloudwatch"\n # external_id: "your-external-id" # add if the role\'s trust policy requires it\n\n```\n{% /details %}\n###### Multiple accounts (assume several roles)\n\nMonitor several AWS accounts from one job by assuming a role in each. Every metric is labeled with the account id its role resolves to. Enable `include_base_account` to also monitor the account the base identity itself belongs to.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: multi_account\n regions:\n - us-east-1\n auth:\n mode: assume_role\n mode_assume_role:\n include_base_account: false\n roles:\n - role_arn: "arn:aws:iam::111111111111:role/netdata-cloudwatch"\n - role_arn: "arn:aws:iam::222222222222:role/netdata-cloudwatch"\n\n```\n{% /details %}\n###### Specific services only\n\nCollect only EC2 and RDS instead of auto-discovering all built-in services.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: ec2_rds\n regions:\n - us-east-1\n profiles:\n mode: exact\n mode_exact:\n entries:\n - name: ec2\n - name: rds\n auth:\n mode: default\n\n```\n{% /details %}\n###### All services including opt-in profiles\n\nUse `combined` mode to also collect disabled opt-in profiles (broad ALB target groups, DynamoDB operations, S3 request metrics, EBS stalled I/O).\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: combined\n regions:\n - us-east-1\n profiles:\n mode: combined\n auth:\n mode: default\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `cloudwatch` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m cloudwatch\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m cloudwatch -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `cloudwatch` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep cloudwatch\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep cloudwatch /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep cloudwatch\n```\n\n### No metrics are collected\n\nCheck the following:\n\n- **Permissions** -- the IAM identity allows `cloudwatch:ListMetrics`, `cloudwatch:GetMetricData`, and `sts:GetCallerIdentity` (plus `sts:AssumeRole` in `assume_role` mode).\n- **Regions** -- the `regions` list includes the regions where your resources run. Some services are global and report to a single region: **Amazon CloudFront publishes its CloudWatch metrics only in `us-east-1`** (with a constant `Region=Global`), so `regions` must include `us-east-1` to collect it.\n- **Resources are active** -- confirm in the AWS CloudWatch console that the resources are publishing metrics.\n- **Collector logs** -- check for authentication or API errors:\n ```bash\n # systemd\n journalctl -u netdata --namespace=netdata --grep cloudwatch --since \"5 minutes ago\"\n # non-systemd\n grep cloudwatch /var/log/netdata/collector.log\n ```\n\n\n### Missing metrics for some services\n\n- **Profile mode** -- ensure `profiles.mode: auto` (default), or that the service's profile basename is listed under `profiles.mode_exact.entries`.\n- **Daily metrics** -- S3 storage metrics are published once per day. They are inherently delayed by about a day, and `recently_active_only` is automatically disabled for them.\n- **Resource activity** -- some metrics only appear when the resource is actively processing data (for example, EventBridge and Bedrock publish a metric only when its value is non-zero).\n- **Auto Scaling group metrics** -- Auto Scaling group metrics (`cloudwatch.auto_scaling.*`) are not published until group-metrics collection is enabled on the group (`aws autoscaling enable-metrics-collection --granularity 1Minute`). Amazon EKS managed node groups have it enabled by default.\n- **EKS control-plane metrics** -- EKS control-plane metrics (`cloudwatch.eks.*`) are published to the `AWS/EKS` namespace automatically, at no additional EKS charge, only for clusters running Kubernetes 1.28 or later; older clusters do not report them. These are distinct from Container Insights / the CloudWatch Observability add-on (agent-based, billed separately).\n\n\n### Charts have gaps or incomplete data\n\nCloudWatch publishes metrics with a delay.\n\n- The collector uses `query_offset` (default 600 seconds), and the effective offset is at least one full metric period.\n- If charts still have gaps, increase `query_offset`.\n\n\n### Access denied or authentication errors\n\n- Verify the credentials selected by `auth.mode` are valid and not expired.\n- For `assume_role`, confirm the base identity is allowed to `sts:AssumeRole` the target role and that the role's trust policy permits it.\n- For AWS GovCloud or China partitions, ensure every region in `regions` belongs to the same partition.\n\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ cw_ec2_status_check_failed ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.ec2.status_check_failed | EC2 status check failed on ${label:instance_id} |\n| [ cw_ec2_attached_ebs_status_check_failed ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.ec2.status_check_failed | EC2 attached EBS status check failed on ${label:instance_id} |\n| [ cw_alb_target_group_unhealthy_hosts ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.alb_target_health.unhealthy_hosts | ALB target group has unhealthy targets on ${label:load_balancer}/${label:target_group} |\n| [ cw_nlb_target_group_unhealthy_hosts ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.nlb_target_health.unhealthy_hosts | NLB target group has unhealthy targets on ${label:load_balancer}/${label:target_group} |\n| [ cw_ebs_stalled_io_check_failed ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.ebs_stalled_io.stalled_io_check | EBS volume stalled I/O check failed on ${label:volume_id}; requires the opt-in ebs_stalled_io profile |\n| [ cw_nat_gateway_port_allocation_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.nat_gateway.errors | NAT Gateway port allocation errors on ${label:nat_gateway_id} |\n| [ cw_efs_io_limit_reached ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.efs.io_limit | EFS I/O limit reached on ${label:file_system_id} |\n| [ cw_efs_burst_credits_exhausted ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.efs.burst_credit | EFS burst credits exhausted on ${label:file_system_id} |\n| [ cw_ecs_cpu_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.ecs.utilization | ECS service CPU utilization high on ${label:cluster_name}/${label:service_name} |\n| [ cw_ecs_memory_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.ecs.utilization | ECS service memory utilization high on ${label:cluster_name}/${label:service_name} |\n| [ cw_ecs_ebs_filesystem_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.ecs.ebs_filesystem_utilization | ECS EBS filesystem utilization high on ${label:cluster_name}/${label:service_name} |\n| [ cw_opensearch_cluster_status_red ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.opensearch.cluster_status | OpenSearch cluster red on ${label:domain_name} |\n| [ cw_opensearch_cluster_status_yellow ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.opensearch.cluster_status | OpenSearch cluster yellow on ${label:domain_name} |\n| [ cw_opensearch_index_writes_blocked ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.opensearch.index_writes_blocked | OpenSearch index writes blocked on ${label:domain_name} |\n| [ cw_opensearch_jvm_memory_pressure ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.opensearch.jvm_memory_pressure | OpenSearch JVM memory pressure high on ${label:domain_name} |\n| [ cw_opensearch_cpu_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.opensearch.cpu | OpenSearch CPU utilization high on ${label:domain_name} |\n| [ cw_opensearch_automated_snapshot_failure ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.opensearch.automated_snapshot_failure | OpenSearch automated snapshot failed on ${label:domain_name} |\n| [ cw_opensearch_old_gen_jvm_memory_pressure ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.opensearch.old_gen_jvm_memory_pressure | OpenSearch old-gen JVM memory pressure high on ${label:domain_name} |\n| [ cw_elasticache_engine_cpu_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.elasticache.cpu | ElastiCache engine CPU utilization high on ${label:cache_cluster_id}/${label:cache_node_id} |\n| [ cw_msk_active_controller_missing ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.msk_cluster.active_controllers | MSK cluster has no active controller on ${label:cluster_name} |\n| [ cw_msk_multiple_active_controllers ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.msk_cluster.active_controllers | MSK cluster has multiple active controllers on ${label:cluster_name} |\n| [ cw_msk_offline_partitions ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.msk_cluster.offline_partitions | MSK cluster has offline partitions on ${label:cluster_name} |\n| [ cw_msk_cpu_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.msk.cpu | MSK broker CPU utilization high on ${label:cluster_name}/${label:broker_id} |\n| [ cw_msk_data_logs_disk_used ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.msk.disk_used | MSK broker data-log disk utilization high on ${label:cluster_name}/${label:broker_id} |\n| [ cw_msk_heap_memory_after_gc ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.msk.heap_memory_after_gc | MSK broker heap memory after GC high on ${label:cluster_name}/${label:broker_id} |\n| [ cw_msk_under_replicated_partitions ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.msk.partitions | MSK broker has sustained under-replicated partitions on ${label:cluster_name}/${label:broker_id} |\n| [ cw_msk_under_min_isr_partitions ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.msk.under_min_isr | MSK broker has partitions below minimum ISR on ${label:cluster_name}/${label:broker_id} |\n| [ cw_rds_replica_lag ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.rds.replica_lag | RDS replica lag high on ${label:db_instance_identifier} |\n| [ cw_rds_maximum_used_transaction_ids ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.rds.maximum_used_transaction_ids | RDS transaction ID usage high on ${label:db_instance_identifier} |\n| [ cw_rds_ebs_byte_balance ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.rds.ebs_balance | RDS EBS byte balance low on ${label:db_instance_identifier} |\n| [ cw_rds_ebs_io_balance ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.rds.ebs_balance | RDS EBS I/O balance low on ${label:db_instance_identifier} |\n| [ cw_vpn_tunnel_down ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.vpn.tunnel_state | VPN tunnel down on ${label:vpn_id} |\n| [ cw_sns_invalid_notification_attributes ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.sns.invalid_notifications | SNS invalid notification attributes on ${label:topic_name} |\n| [ cw_sns_invalid_notification_body ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.sns.invalid_notifications | SNS invalid notification message body on ${label:topic_name} |\n| [ cw_sns_notifications_redriven_to_dlq ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.sns.dlq_redrive | SNS notifications redriven to DLQ on ${label:topic_name} |\n| [ cw_sns_notifications_failed_to_redrive_to_dlq ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cloudwatch.conf) | cloudwatch.sns.dlq_redrive | SNS notifications failed to redrive to DLQ on ${label:topic_name} |\n",metrics:"## Metrics\n\nCharts are generated at runtime from the **active service profiles**. Each discovered AWS resource becomes a chart instance identified by its `account_id`, `region`, and the service's own dimensions (for example `instance_id` for EC2, or `bucket_name` and `storage_type` for S3); its contexts live under the `cloudwatch.` namespace. All CloudWatch metrics appear on the node running the collector -- individual AWS resources are distinguished by labels, not as separate Netdata nodes. Because CloudWatch publishes with a delay, allow a few minutes for the first data points.\n\nKey terms:\n\n- **Namespace** -- AWS's grouping for a service's metrics (e.g. `AWS/EC2`).\n- **Dimension** -- a name/value pair that identifies a resource within a namespace (e.g. `InstanceId`).\n- **Statistic** -- the CloudWatch aggregation applied per period (e.g. average, sum, maximum).\n- **Profile** -- the Netdata YAML file that maps a namespace's metrics to charts.\n- **Partition** -- an isolated AWS region group (standard `aws`, GovCloud `aws-us-gov`, or China `aws-cn`); all of a job's regions must share one.\n\nThe built-in profiles ship the following charts by default. Each service links to its profile -- the authoritative definition of its exact metrics, statistics, dimensions, and charts:\n\n| Profile | Metric prefix | Description |\n|:--------|:--------------|:------------|\n| [Amazon EC2](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/ec2.yaml) | `cloudwatch.ec2.*` | CPU utilization, network traffic, disk operations, status-check failures, attached-EBS status-check failures |\n| [Amazon RDS](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/rds.yaml) | `cloudwatch.rds.*` | CPU utilization, database connections, freeable memory, free storage space, disk throughput, IOPS, latency, replica lag, PostgreSQL transaction ID usage, EBS credit balance |\n| [Classic Load Balancer (ELB)](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/elb.yaml) | `cloudwatch.elb.*` | request count, backend and load-balancer response codes, backend connection errors, latency, host count, spillover count |\n| [Application Load Balancer (ALB)](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/alb.yaml) | `cloudwatch.alb.*` | request count, target and load-balancer response codes, connection rate, active connections, processed traffic, target response time, consumed LCUs |\n| [ALB Target Health](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/alb_target_health.yaml) | `cloudwatch.alb_target_health.*` | per-target-group unhealthy host count |\n| [Network Load Balancer (NLB)](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/nlb.yaml) | `cloudwatch.nlb.*` | active and new flow counts, processed bytes and packets, consumed LCUs, TCP resets |\n| [NLB Target Health](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/nlb_target_health.yaml) | `cloudwatch.nlb_target_health.*` | per-target-group unhealthy host count |\n| [Amazon S3](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/s3.yaml) | `cloudwatch.s3.*` | bucket size, number of objects (daily storage metrics) |\n| [AWS Lambda](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/lambda.yaml) | `cloudwatch.lambda.*` | invocations, errors and throttles, duration |\n| [Amazon SQS](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/sqs.yaml) | `cloudwatch.sqs.*` | message throughput, empty receives, queue depth, age of oldest message, sent message size |\n| [Amazon DynamoDB](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/dynamodb.yaml) | `cloudwatch.dynamodb.*` | consumed and provisioned capacity, throttle events |\n| [Amazon API Gateway](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/api_gateway.yaml) | `cloudwatch.api_gateway.*` | requests, errors, latency |\n| [AWS Step Functions](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/step_functions.yaml) | `cloudwatch.step_functions.*` | executions, throttled events, execution time |\n| [NAT Gateway](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/nat_gateway.yaml) | `cloudwatch.nat_gateway.*` | traffic, active connections, connection rate, errors, idle timeouts |\n| [Amazon Kinesis Data Streams](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/kinesis.yaml) | `cloudwatch.kinesis.*` | data throughput, records, GetRecords iterator age, operation latency, throughput exceeded, PutRecords rejected |\n| [Amazon Data Firehose](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/firehose.yaml) | `cloudwatch.firehose.*` | records, throughput, put requests, throttled records, S3 delivery freshness and success |\n| [Amazon SNS](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/sns.yaml) | `cloudwatch.sns.*` | messages published, notifications, invalid notification filters, DLQ redrive, published message size |\n| [Amazon EBS](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/ebs.yaml) | `cloudwatch.ebs.*` | volume throughput, IOPS, queue length, idle time, burst balance |\n| [Amazon EFS](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/efs.yaml) | `cloudwatch.efs.*` | I/O throughput, metered vs permitted throughput, percent I/O limit, burst credit balance, client connections |\n| [Amazon ECS](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/ecs.yaml) | `cloudwatch.ecs.*` | service utilization, EBS filesystem utilization, live task count |\n| [Amazon ElastiCache](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/elasticache.yaml) | `cloudwatch.elasticache.*` | CPU utilization, memory, database memory usage, current and new connections, cache hits and misses, evictions, network traffic |\n| [Amazon OpenSearch Service](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/opensearch.yaml) | `cloudwatch.opensearch.*` | cluster status, index writes blocked, automated snapshot failures, nodes, CPU utilization, JVM memory pressure, old-gen JVM memory pressure, free storage space, search and indexing rate, search and indexing latency |\n| [Amazon DocumentDB](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/docdb.yaml) | `cloudwatch.docdb.*` | CPU utilization, freeable memory, connections, buffer cache hit ratio, disk IOPS, latency, throughput, replica lag, cursors timed out |\n| [Amazon Redshift](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/redshift.yaml) | `cloudwatch.redshift.*` | health, CPU utilization, disk space used, database connections, disk IOPS, throughput, network throughput |\n| [Amazon MSK](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/msk.yaml) | `cloudwatch.msk.*` | broker throughput, messages in, CPU, disk used, memory, heap memory after GC, partitions, under-min-ISR partitions, connections |\n| [Amazon MSK Cluster](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/msk_cluster.yaml) | `cloudwatch.msk_cluster.*` | active controllers and offline partitions |\n| [Amazon CloudFront](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/cloudfront.yaml) | `cloudwatch.cloudfront.*` | requests, downloaded and uploaded traffic, total/4xx/5xx error rates |\n| [AWS Auto Scaling](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/auto_scaling.yaml) | `cloudwatch.auto_scaling.*` | group sizing (min/max/desired/total) and instances by state (in-service, pending, standby, terminating) |\n| [Amazon Bedrock](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/bedrock.yaml) | `cloudwatch.bedrock.*` | invocations, invocation errors, token throughput, invocation and time-to-first-token latency |\n| [Amazon EventBridge](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/eventbridge.yaml) | `cloudwatch.eventbridge.*` | target invocations, rule activity (matched events, triggered rules), ingestion-to-invocation latency |\n| [AWS Site-to-Site VPN](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/vpn.yaml) | `cloudwatch.vpn.*` | tunnel traffic (in/out) and tunnel state (fraction of tunnels up) |\n| [Amazon EKS](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/eks.yaml) | `cloudwatch.eks.*` | control-plane health: API server request rate, errors, p99 latency, and in-flight requests; etcd database size; scheduler pending pods and scheduling attempts |\n\nEach profile also carries **optional metrics** that are commented out to keep cost and cardinality low; uncomment a metric and its matching chart, then **restart the Netdata Agent** (profiles are loaded once per go.d process and cached). Stock profiles are shipped at `/usr/lib/netdata/conf.d/go.d/cloudwatch.profiles/default/`. To customize a service, copy its profile into `/etc/netdata/go.d/cloudwatch.profiles/` (keep the same filename) and edit it -- a user profile fully replaces the stock one of the same name -- then restart the Agent.\n\nWith `profiles.mode: combined`, these disabled opt-in profiles are collected in addition to the defaults:\n\n| Profile | Metric prefix | Description |\n|:--------|:--------------|:------------|\n| [ALB Target Groups](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/alb_target.yaml) | `cloudwatch.alb_target.*` | per-target-group host count, requests per target, response time, response codes, connection errors |\n| [DynamoDB Operations](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/dynamodb_operation.yaml) | `cloudwatch.dynamodb_operation.*` | per-operation successful request latency, system errors, throttled requests, returned items |\n| [EBS Stalled I/O](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/ebs_stalled_io.yaml) | `cloudwatch.ebs_stalled_io.*` | per-volume stalled I/O health check |\n| [S3 Request Metrics](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/cloudwatch.profiles/default/s3_requests.yaml) | `cloudwatch.s3_requests.*` | requests, request errors, request latency, request data transfer |\n\nThese opt-in profiles include the highest-cardinality data the collector emits. **S3 Request Metrics** additionally require per-bucket request-metrics configuration in AWS and are billed at CloudWatch custom-metric rates; they collect nothing until enabled on the bucket.\n\n",integration_type:"collector",id:"go.d.plugin-cloudwatch-Amazon_CloudWatch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/cloudwatch/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-cockroachdb",plugin_name:"go.d.plugin",module_name:"cockroachdb",monitored_instance:{name:"CockroachDB",link:"https://www.cockroachlabs.com/",icon_filename:"cockroachdb.svg",categories:["data-collection.databases"]},keywords:["cockroachdb","databases"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# CockroachDB\n\nPlugin: go.d.plugin\nModule: cockroachdb\n\n## Overview\n\nThis collector monitors CockroachDB servers.\n\n\nIt scrapes Prometheus metrics from the CockroachDB `/_status/vars` endpoint.\n\nIt also provides `top-queries` and `running-queries` functions using SQL statement statistics (`crdb_internal.cluster_statement_statistics`) and the `SHOW CLUSTER STATEMENTS` command.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe `top-queries` and `running-queries` functions require:\n\n- A SQL user with `VIEWACTIVITY` or `VIEWACTIVITYREDACTED` privileges.\n- Access to `crdb_internal.cluster_statement_statistics` (may require `SET allow_unsafe_internals = on` on newer versions).\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **cockroachdb** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **cockroachdb**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/cockroachdb.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8080/_status/vars | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Functions** | functions.dsn | SQL DSN (required for query functions). | | no |\n| | functions.top_queries.disabled | Disable the [top-queries](#top-queries) function. | no | no |\n| | functions.top_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.top_queries.limit | Maximum number of queries to return. | 500 | no |\n| | functions.running_queries.disabled | Disable the [running-queries](#running-queries) function. | no | no |\n| | functions.running_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.running_queries.limit | Maximum number of queries to return. | 500 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **cockroachdb** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the cockroachdb data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _cockroachdb_ (or scroll the list) to locate the **cockroachdb** collector.\n5. Click the **+** next to the **cockroachdb** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/cockroachdb.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/cockroachdb.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8080/_status/vars\n\n```\n{% /details %}\n###### Top queries\n\nEnable SQL query functions.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8080/_status/vars\n functions:\n dsn: postgres://root@127.0.0.1:26257/defaultdb?sslmode=disable\n\n```\n{% /details %}\n###### HTTP authentication\n\nLocal server with basic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8080/_status/vars\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nCockroachDB with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:8080/_status/vars\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8080/_status/vars\n\n - name: remote\n url: http://203.0.113.10:8080/_status/vars\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `cockroachdb` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m cockroachdb\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m cockroachdb -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `cockroachdb` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep cockroachdb\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep cockroachdb /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep cockroachdb\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ cockroachdb_used_storage_capacity ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cockroachdb.conf) | cockroachdb.storage_used_capacity_percentage | storage capacity utilization |\n| [ cockroachdb_used_usable_storage_capacity ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cockroachdb.conf) | cockroachdb.storage_used_capacity_percentage | storage usable space utilization |\n| [ cockroachdb_unavailable_ranges ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cockroachdb.conf) | cockroachdb.ranges_replication_problem | number of ranges with fewer live replicas than needed for quorum |\n| [ cockroachdb_underreplicated_ranges ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cockroachdb.conf) | cockroachdb.ranges_replication_problem | number of ranges with fewer live replicas than the replication target |\n| [ cockroachdb_open_file_descriptors_limit ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cockroachdb.conf) | cockroachdb.process_file_descriptors | open file descriptors utilization (against softlimit) |\n",functions:"## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Top Queries\n\nRetrieves and aggregates SQL statement performance metrics from CockroachDB [crdb_internal.cluster_statement_statistics](https://www.cockroachlabs.com/docs/stable/crdb-internal#cluster_statement_statistics) table.\n\nThis function queries cluster-wide statement statistics grouped by fingerprint (normalized query pattern). It provides aggregated metrics including execution counts, timing breakdowns, and row operation statistics.\n\nUse cases:\n- Identify slow queries consuming the most total execution time\n- Find frequently executed queries that may benefit from optimization\n- Analyze row read/write patterns to detect inefficient queries\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Cockroachdb:top-queries` |\n| Require Cloud | yes |\n| Performance | Queries the `crdb_internal.cluster_statement_statistics` table which aggregates data across the cluster:<br/>\u2022 On busy clusters with high query throughput, this query may take longer<br/>\u2022 Default limit of 500 rows balances usefulness with performance |\n| Security | Query text may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Personal information in WHERE clauses or INSERT values<br/>\u2022 Business data and internal identifiers<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to CockroachDB<br/>\u2022 The SQL user has `VIEWACTIVITY` or `VIEWACTIVITYREDACTED` privileges<br/>\u2022 Returns HTTP 503 if the SQL connection cannot be established<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Grant `VIEWACTIVITY` access to cluster statement stats\n\nThe SQL user must have appropriate privileges to access statement statistics.\n\n1. Grant `VIEWACTIVITY` (shows full query text) or `VIEWACTIVITYREDACTED` (masks literals):\n\n ```sql\n GRANT SYSTEM VIEWACTIVITY TO netdata_user;\n -- OR for privacy:\n GRANT SYSTEM VIEWACTIVITYREDACTED TO netdata_user;\n ```\n\n2. On newer CockroachDB versions, access to `crdb_internal` may require:\n\n ```sql\n SET allow_unsafe_internals = on;\n ```\n\n:::info\n\n- The collector automatically sets `allow_unsafe_internals = on` for the session when querying `crdb_internal` tables (required on newer versions)\n- `VIEWACTIVITYREDACTED` replaces literal values with underscores for privacy\n- Statement statistics are collected by default but can be disabled via cluster settings\n\n:::\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. Options include total time, executions, rows read, rows written, and more. Defaults to total time to focus on most resource-intensive queries. | yes | totalTime | |\n\n#### Returns\n\nAggregated SQL statement statistics grouped by fingerprint. Each row represents a unique query pattern with cumulative metrics across all executions.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Fingerprint ID | string | | hidden | Unique hash identifier for the normalized query pattern. Queries with identical structure but different literal values share the same fingerprint. |\n| Query | string | | | Normalized SQL statement text with literals replaced. Truncated to 4096 characters. |\n| Database | string | | | Database name where the query was executed. Empty for queries without database context. |\n| Application | string | | | Application name that executed the query. Useful for identifying query sources across services. |\n| Statement Type | string | | hidden | Type of SQL statement (SELECT, INSERT, UPDATE, DELETE, etc.). |\n| Distributed | string | | hidden | Whether the query used DistSQL execution (true/false). Distributed queries span multiple nodes. |\n| Full Scan | string | | hidden | Whether the query performed a full table scan (true/false). Full scans may indicate missing indexes. |\n| Implicit Txn | string | | hidden | Whether the statement ran in an implicit transaction (true/false). |\n| Vectorized | string | | hidden | Whether the query used vectorized execution (true/false). Vectorized execution improves performance for analytical queries. |\n| Executions | integer | | | Total number of times this query pattern has been executed. High values indicate frequently run queries. |\n| Total Time | duration | milliseconds | | Cumulative service latency across all executions (mean time \xd7 executions). High values indicate queries consuming significant cluster resources. |\n| Mean Time | duration | milliseconds | | Average service latency per execution. Use this to compare typical performance across query patterns. |\n| Run Time | duration | milliseconds | hidden | Average time spent executing the query after planning. Excludes parse and plan time. |\n| Plan Time | duration | milliseconds | hidden | Average time spent generating the query execution plan. High values may indicate complex queries or stale statistics. |\n| Parse Time | duration | milliseconds | hidden | Average time spent parsing the SQL statement. |\n| Rows Read | integer | | | Total rows read across all executions. High values relative to rows returned suggest missing indexes or inefficient scans. |\n| Rows Written | integer | | | Total rows written across all executions. Indicates write workload for INSERT, UPDATE, DELETE statements. |\n| Rows Returned | integer | | | Total rows returned to clients across all executions. Compare with rows read to assess query efficiency. |\n| Bytes Read | integer | | hidden | Total bytes read from storage across all executions. Indicates I/O load for the query pattern. |\n| Max Retries | integer | | hidden | Maximum number of automatic retries observed for this query pattern. High values indicate transaction contention. |\n\n### Running Queries\n\nRetrieves currently executing SQL statements across the CockroachDB cluster using [SHOW CLUSTER STATEMENTS](https://www.cockroachlabs.com/docs/stable/show-statements).\n\nThis function provides a real-time snapshot of all active queries across all nodes in the cluster, including their execution phase, duration, and associated metadata.\n\nUse cases:\n- Identify long-running queries that may be blocking other operations\n- Monitor active workload distribution across the cluster\n- Debug stuck or slow queries in real-time\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Cockroachdb:running-queries` |\n| Require Cloud | yes |\n| Performance | Executes the `SHOW CLUSTER STATEMENTS` command which queries all nodes in the cluster:<br/>\u2022 Lightweight operation with minimal overhead<br/>\u2022 Returns only currently active queries, typically a small result set |\n| Security | Query text may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Personal information in WHERE clauses or VALUES<br/>\u2022 Session tokens or credentials<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to CockroachDB<br/>\u2022 The SQL user has `VIEWACTIVITY` or `VIEWACTIVITYREDACTED` privileges<br/>\u2022 Returns HTTP 503 if the SQL connection cannot be established<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Grant `VIEWACTIVITY` access to system tables\n\nThe SQL user must have appropriate privileges to view running statements.\n\n1. Grant `VIEWACTIVITY` (shows full query text) or `VIEWACTIVITYREDACTED` (masks literals):\n\n ```sql\n GRANT SYSTEM VIEWACTIVITY TO netdata_user;\n -- OR for privacy:\n GRANT SYSTEM VIEWACTIVITYREDACTED TO netdata_user;\n ```\n\n :::info\n\n - `SHOW CLUSTER STATEMENTS` shows queries across all nodes, not just the connected node\n - `VIEWACTIVITYREDACTED` replaces literal values with underscores for privacy\n - Queries shown are point-in-time snapshots and may complete between retrieval and display\n\n :::\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. Defaults to elapsed time to show longest-running queries first. | yes | elapsedMs | |\n\n#### Returns\n\nReal-time snapshot of currently executing SQL statements across all cluster nodes. Each row represents a single active query.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Query ID | string | | hidden | Unique identifier for this specific query execution. Can be used with CANCEL QUERY if needed. |\n| Query | string | | | The SQL statement currently being executed. Truncated to 4096 characters. |\n| User | string | | | Database user executing the query. Useful for identifying workload by user. |\n| Application | string | | | Application name from the client connection. Helps identify which service is running the query. |\n| Client Address | string | | hidden | IP address of the client connection. Useful for identifying query sources. |\n| Node ID | string | | hidden | CockroachDB node currently executing the query. Helps identify workload distribution. |\n| Session ID | string | | hidden | Session identifier for the connection. Multiple queries may share a session. |\n| Phase | string | | | Current execution phase (executing, preparing, etc.). Indicates query progress. |\n| Distributed | string | | hidden | Whether the query is using distributed execution across multiple nodes. |\n| Start Time | string | | hidden | Timestamp when the query started executing. |\n| Elapsed | duration | milliseconds | | Time elapsed since query started. High values indicate long-running queries that may need investigation. |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per CockroachDB instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cockroachdb.process_cpu_time_combined_percentage | used | percentage |\n| cockroachdb.process_cpu_time_percentage | user, sys | percentage |\n| cockroachdb.process_cpu_time | user, sys | ms |\n| cockroachdb.process_memory | rss | KiB |\n| cockroachdb.process_file_descriptors | open | fd |\n| cockroachdb.process_uptime | uptime | seconds |\n| cockroachdb.host_disk_bandwidth | read, write | KiB |\n| cockroachdb.host_disk_operations | reads, writes | operations |\n| cockroachdb.host_disk_iops_in_progress | in_progress | iops |\n| cockroachdb.host_network_bandwidth | received, sent | kilobits |\n| cockroachdb.host_network_packets | received, sent | packets |\n| cockroachdb.live_nodes | live_nodes | nodes |\n| cockroachdb.node_liveness_heartbeats | successful, failed | heartbeats |\n| cockroachdb.total_storage_capacity | total | KiB |\n| cockroachdb.storage_capacity_usability | usable, unusable | KiB |\n| cockroachdb.storage_usable_capacity | available, used | KiB |\n| cockroachdb.storage_used_capacity_percentage | total, usable | percentage |\n| cockroachdb.sql_connections | active | connections |\n| cockroachdb.sql_bandwidth | received, sent | KiB |\n| cockroachdb.sql_statements_total | started, executed | statements |\n| cockroachdb.sql_errors | statement, transaction | errors |\n| cockroachdb.sql_started_ddl_statements | ddl | statements |\n| cockroachdb.sql_executed_ddl_statements | ddl | statements |\n| cockroachdb.sql_started_dml_statements | select, update, delete, insert | statements |\n| cockroachdb.sql_executed_dml_statements | select, update, delete, insert | statements |\n| cockroachdb.sql_started_tcl_statements | begin, commit, rollback, savepoint, savepoint_cockroach_restart, release_savepoint_cockroach_restart, rollback_to_savepoint_cockroach_restart | statements |\n| cockroachdb.sql_executed_tcl_statements | begin, commit, rollback, savepoint, savepoint_cockroach_restart, release_savepoint_cockroach_restart, rollback_to_savepoint_cockroach_restart | statements |\n| cockroachdb.sql_active_distributed_queries | active | queries |\n| cockroachdb.sql_distributed_flows | active, queued | flows |\n| cockroachdb.live_bytes | applications, system | KiB |\n| cockroachdb.logical_data | keys, values | KiB |\n| cockroachdb.logical_data_count | keys, values | num |\n| cockroachdb.kv_transactions | committed, fast-path_committed, aborted | transactions |\n| cockroachdb.kv_transaction_restarts | write_too_old, write_too_old_multiple, forwarded_timestamp, possible_reply, async_consensus_failure, read_within_uncertainty_interval, aborted, push_failure, unknown | restarts |\n| cockroachdb.ranges | ranges | ranges |\n| cockroachdb.ranges_replication_problem | unavailable, under_replicated, over_replicated | ranges |\n| cockroachdb.range_events | split, add, remove, merge | events |\n| cockroachdb.range_snapshot_events | generated, applied_raft_initiated, applied_learner, applied_preemptive | events |\n| cockroachdb.rocksdb_read_amplification | reads | reads/query |\n| cockroachdb.rocksdb_table_operations | compactions, flushes | operations |\n| cockroachdb.rocksdb_cache_usage | used | KiB |\n| cockroachdb.rocksdb_cache_operations | hits, misses | operations |\n| cockroachdb.rocksdb_cache_hit_rate | hit_rate | percentage |\n| cockroachdb.rocksdb_sstables | sstables | sstables |\n| cockroachdb.replicas | replicas | replicas |\n| cockroachdb.replicas_quiescence | quiescent, active | replicas |\n| cockroachdb.replicas_leaders | leaders, not_leaseholders | replicas |\n| cockroachdb.replicas_leaseholders | leaseholders | leaseholders |\n| cockroachdb.queue_processing_failures | gc, replica_gc, replication, split, consistency, raft_log, raft_snapshot, time_series_maintenance | failures |\n| cockroachdb.rebalancing_queries | avg | queries/s |\n| cockroachdb.rebalancing_writes | avg | writes/s |\n| cockroachdb.timeseries_samples | written | samples |\n| cockroachdb.timeseries_write_errors | write | errors |\n| cockroachdb.timeseries_write_bytes | written | KiB |\n| cockroachdb.slow_requests | acquiring_latches, acquiring_lease, in_raft | requests |\n| cockroachdb.code_heap_memory_usage | go, cgo | KiB |\n| cockroachdb.goroutines | goroutines | goroutines |\n| cockroachdb.gc_count | gc | invokes |\n| cockroachdb.gc_pause | pause | us |\n| cockroachdb.cgo_calls | cgo | calls |\n\n",integration_type:"collector",id:"go.d.plugin-cockroachdb-CockroachDB",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/cockroachdb/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-consul",plugin_name:"go.d.plugin",module_name:"consul",monitored_instance:{name:"Consul",link:"https://www.consul.io/",categories:["data-collection.applications"],icon_filename:"consul.svg"},alternative_monitored_instances:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["service networking platform","hashicorp","autopilot"]},overview:"# Consul\n\nPlugin: go.d.plugin\nModule: consul\n\n## Overview\n\nThis collector monitors [key metrics](https://developer.hashicorp.com/consul/docs/agent/telemetry#key-metrics) of Consul Agents: transaction timings, leadership changes, memory usage and more.\n\n\nIt periodically sends HTTP requests to [Consul REST API](https://developer.hashicorp.com/consul/api-docs).\n\nUsed endpoints:\n\n- [/operator/autopilot/health](https://developer.hashicorp.com/consul/api-docs/operator/autopilot#read-health)\n- [/agent/checks](https://developer.hashicorp.com/consul/api-docs/agent/check#list-checks)\n- [/agent/self](https://developer.hashicorp.com/consul/api-docs/agent#read-configuration)\n- [/agent/metrics](https://developer.hashicorp.com/consul/api-docs/agent#view-metrics)\n- [/coordinate/nodes](https://developer.hashicorp.com/consul/api-docs/coordinate#read-lan-coordinates-for-all-nodes)\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis collector discovers instances running on the local host, that provide metrics on port 8500.\n\nOn startup, it tries to collect metrics from:\n\n- http://localhost:8500\n- http://127.0.0.1:8500\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **consul** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **consul**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/consul.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable Prometheus telemetry\n\n[Enable](https://developer.hashicorp.com/consul/docs/agent/config/config-files#telemetry-prometheus_retention_time) telemetry on your Consul Agent, by increasing the value of `prometheus_retention_time` from `0`.\n\n\n#### Add required ACLs to Token\n\nRequired **only if authentication is enabled**.\n\n| ACL | Endpoint |\n|:---------------:|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `operator:read` | [autopilot health status](https://developer.hashicorp.com/consul/api-docs/operator/autopilot#read-health) |\n| `node:read` | [checks](https://developer.hashicorp.com/consul/api-docs/agent/check#list-checks) |\n| `agent:read` | [configuration](https://developer.hashicorp.com/consul/api-docs/agent#read-configuration), [metrics](https://developer.hashicorp.com/consul/api-docs/agent#view-metrics), and [lan coordinates](https://developer.hashicorp.com/consul/api-docs/coordinate#read-lan-coordinates-for-all-nodes) |\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="All options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Consul HTTP API URL. | http://localhost:8500 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | acl_token | Consul ACL token sent with every request (`X-Consul-Token` header). | | no |\n| | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **consul** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the consul data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _consul_ (or scroll the list) to locate the **consul** collector.\n5. Click the **+** next to the **consul** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/consul.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/consul.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8500\n acl_token: "ec15675e-2999-d789-832e-8c4794daa8d7"\n\n```\n###### Basic HTTP auth\n\nLocal server with basic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8500\n acl_token: "ec15675e-2999-d789-832e-8c4794daa8d7"\n username: foo\n password: bar\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8500\n acl_token: "ec15675e-2999-d789-832e-8c4794daa8d7"\n\n - name: remote\n url: http://203.0.113.10:8500\n acl_token: "ada7f751-f654-8872-7f93-498e799158b6"\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `consul` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m consul\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m consul -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `consul` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep consul\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep consul /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep consul\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ consul_node_health_check_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/consul.conf) | consul.node_health_check_status | node health check ${label:check_name} has failed on server ${label:node_name} datacenter ${label:datacenter} |\n| [ consul_service_health_check_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/consul.conf) | consul.service_health_check_status | service health check ${label:check_name} for service ${label:service_name} has failed on server ${label:node_name} datacenter ${label:datacenter} |\n| [ consul_client_rpc_requests_exceeded ](https://github.com/netdata/netdata/blob/master/src/health/health.d/consul.conf) | consul.client_rpc_requests_exceeded_rate | number of rate-limited RPC requests made by server ${label:node_name} datacenter ${label:datacenter} |\n| [ consul_client_rpc_requests_failed ](https://github.com/netdata/netdata/blob/master/src/health/health.d/consul.conf) | consul.client_rpc_requests_failed_rate | number of failed RPC requests made by server ${label:node_name} datacenter ${label:datacenter} |\n| [ consul_gc_pause_time ](https://github.com/netdata/netdata/blob/master/src/health/health.d/consul.conf) | consul.gc_pause_time | time spent in stop-the-world garbage collection pauses on server ${label:node_name} datacenter ${label:datacenter} |\n| [ consul_autopilot_health_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/consul.conf) | consul.autopilot_health_status | datacenter ${label:datacenter} cluster is unhealthy as reported by server ${label:node_name} |\n| [ consul_autopilot_server_health_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/consul.conf) | consul.autopilot_server_health_status | server ${label:node_name} from datacenter ${label:datacenter} is unhealthy |\n| [ consul_raft_leader_last_contact_time ](https://github.com/netdata/netdata/blob/master/src/health/health.d/consul.conf) | consul.raft_leader_last_contact_time | median time elapsed since leader server ${label:node_name} datacenter ${label:datacenter} was last able to contact the follower nodes |\n| [ consul_raft_leadership_transitions ](https://github.com/netdata/netdata/blob/master/src/health/health.d/consul.conf) | consul.raft_leadership_transitions_rate | there has been a leadership change and server ${label:node_name} datacenter ${label:datacenter} has become the leader |\n| [ consul_raft_thread_main_saturation ](https://github.com/netdata/netdata/blob/master/src/health/health.d/consul.conf) | consul.raft_thread_main_saturation_perc | average saturation of the main Raft goroutine on server ${label:node_name} datacenter ${label:datacenter} |\n| [ consul_raft_thread_fsm_saturation ](https://github.com/netdata/netdata/blob/master/src/health/health.d/consul.conf) | consul.raft_thread_fsm_saturation_perc | average saturation of the FSM Raft goroutine on server ${label:node_name} datacenter ${label:datacenter} |\n| [ consul_license_expiration_time ](https://github.com/netdata/netdata/blob/master/src/health/health.d/consul.conf) | consul.license_expiration_time | Consul Enterprise licence expiration time on node ${label:node_name} datacenter ${label:datacenter} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\nThe set of metrics depends on the [Consul Agent mode](https://developer.hashicorp.com/consul/docs/install/glossary#agent).\n\n\n### Per Consul instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit | Leader | Follower | Client |\n|:------|:----------|:----|:---:|:---:|:---:|\n| consul.client_rpc_requests_rate | rpc | requests/s | \u2022 | \u2022 | \u2022 |\n| consul.client_rpc_requests_exceeded_rate | exceeded | requests/s | \u2022 | \u2022 | \u2022 |\n| consul.client_rpc_requests_failed_rate | failed | requests/s | \u2022 | \u2022 | \u2022 |\n| consul.memory_allocated | allocated | bytes | \u2022 | \u2022 | \u2022 |\n| consul.memory_sys | sys | bytes | \u2022 | \u2022 | \u2022 |\n| consul.gc_pause_time | gc_pause | seconds | \u2022 | \u2022 | \u2022 |\n| consul.kvs_apply_time | quantile_0.5, quantile_0.9, quantile_0.99 | ms | \u2022 | \u2022 | |\n| consul.kvs_apply_operations_rate | kvs_apply | ops/s | \u2022 | \u2022 | |\n| consul.txn_apply_time | quantile_0.5, quantile_0.9, quantile_0.99 | ms | \u2022 | \u2022 | |\n| consul.txn_apply_operations_rate | txn_apply | ops/s | \u2022 | \u2022 | |\n| consul.autopilot_health_status | healthy, unhealthy | status | \u2022 | \u2022 | |\n| consul.autopilot_failure_tolerance | failure_tolerance | servers | \u2022 | \u2022 | |\n| consul.autopilot_server_health_status | healthy, unhealthy | status | \u2022 | \u2022 | |\n| consul.autopilot_server_stable_time | stable | seconds | \u2022 | \u2022 | |\n| consul.autopilot_server_serf_status | active, failed, left, none | status | \u2022 | \u2022 | |\n| consul.autopilot_server_voter_status | voter, not_voter | status | \u2022 | \u2022 | |\n| consul.network_lan_rtt | min, max, avg | ms | \u2022 | \u2022 | |\n| consul.raft_commit_time | quantile_0.5, quantile_0.9, quantile_0.99 | ms | \u2022 | | |\n| consul.raft_commits_rate | commits | commits/s | \u2022 | | |\n| consul.raft_leader_last_contact_time | quantile_0.5, quantile_0.9, quantile_0.99 | ms | \u2022 | | |\n| consul.raft_leader_oldest_log_age | oldest_log_age | seconds | \u2022 | | |\n| consul.raft_follower_last_contact_leader_time | leader_last_contact | ms | | \u2022 | |\n| consul.raft_rpc_install_snapshot_time | quantile_0.5, quantile_0.9, quantile_0.99 | ms | | \u2022 | |\n| consul.raft_leader_elections_rate | leader | elections/s | \u2022 | \u2022 | |\n| consul.raft_leadership_transitions_rate | leadership | transitions/s | \u2022 | \u2022 | |\n| consul.server_leadership_status | leader, not_leader | status | \u2022 | \u2022 | |\n| consul.raft_thread_main_saturation_perc | quantile_0.5, quantile_0.9, quantile_0.99 | percentage | \u2022 | \u2022 | |\n| consul.raft_thread_fsm_saturation_perc | quantile_0.5, quantile_0.9, quantile_0.99 | percentage | \u2022 | \u2022 | |\n| consul.raft_fsm_last_restore_duration | last_restore_duration | ms | \u2022 | \u2022 | |\n| consul.raft_boltdb_freelist_bytes | freelist | bytes | \u2022 | \u2022 | |\n| consul.raft_boltdb_logs_per_batch_rate | written | logs/s | \u2022 | \u2022 | |\n| consul.raft_boltdb_store_logs_time | quantile_0.5, quantile_0.9, quantile_0.99 | ms | \u2022 | \u2022 | |\n| consul.license_expiration_time | license_expiration | seconds | \u2022 | \u2022 | \u2022 |\n\n### Per node check\n\nMetrics about checks on Node level.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| datacenter | Datacenter Identifier |\n| node_name | The node's name |\n| check_name | The check's name |\n\nMetrics:\n\n| Metric | Dimensions | Unit | Leader | Follower | Client |\n|:------|:----------|:----|:---:|:---:|:---:|\n| consul.node_health_check_status | passing, maintenance, warning, critical | status | \u2022 | \u2022 | \u2022 |\n\n### Per service check\n\nMetrics about checks at a Service level.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| datacenter | Datacenter Identifier |\n| node_name | The node's name |\n| check_name | The check's name |\n| service_name | The service's name |\n\nMetrics:\n\n| Metric | Dimensions | Unit | Leader | Follower | Client |\n|:------|:----------|:----|:---:|:---:|:---:|\n| consul.service_health_check_status | passing, maintenance, warning, critical | status | \u2022 | \u2022 | \u2022 |\n\n",integration_type:"collector",id:"go.d.plugin-consul-Consul",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/consul/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-coredns",plugin_name:"go.d.plugin",module_name:"coredns",monitored_instance:{name:"CoreDNS",link:"https://coredns.io/",icon_filename:"coredns.svg",categories:["data-collection.networking"]},keywords:["coredns","dns","kubernetes"],related_resources:{integrations:{list:[{plugin_name:"go.d.plugin",module_name:"k8s_state"},{plugin_name:"go.d.plugin",module_name:"k8s_apiserver"},{plugin_name:"go.d.plugin",module_name:"k8s_kubelet"},{plugin_name:"go.d.plugin",module_name:"k8s_kubeproxy"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Kubernetes Containers"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# CoreDNS\n\nPlugin: go.d.plugin\nModule: coredns\n\n## Overview\n\nThis collector monitors CoreDNS instances.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nCoreDNS can be monitored further using the following other integrations:\n\n- {% relatedResource id="go.d.plugin-k8s_state-Kubernetes_Cluster_State" %}Kubernetes Cluster State{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-k8s_apiserver-Kubernetes_API_Server" %}Kubernetes API Server{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-k8s_kubelet-Kubelet" %}Kubelet{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-k8s_kubeproxy-Kubeproxy" %}Kubeproxy{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Kubernetes_Containers" %}Kubernetes Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn\'t support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **coredns** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **coredns**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/coredns.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="All options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:9153/metrics | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **Filters** | [per_server_stats](#option-filters-per-server-stats) | Server filter. | | no |\n| | [per_zone_stats](#option-filters-per-zone-stats) | Zone filter. | | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-per-server-stats"></a>\n##### per_server_stats\n\nMetrics of servers matching the selector will be collected.\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [matcher](https://github.com/netdata/netdata/tree/master/src/go/pkg/matcher#supported-format).\n- Syntax:\n\n```yaml\nper_server_stats:\n includes:\n - pattern1\n - pattern2\n excludes:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-filters-per-zone-stats"></a>\n##### per_zone_stats\n\nMetrics of zones matching the selector will be collected.\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [matcher](https://github.com/netdata/netdata/tree/master/src/go/pkg/matcher#supported-format).\n- Syntax:\n\n```yaml\nper_zone_stats:\n includes:\n - pattern1\n - pattern2\n excludes:\n - pattern3\n - pattern4\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **coredns** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the coredns data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _coredns_ (or scroll the list) to locate the **coredns** collector.\n5. Click the **+** next to the **coredns** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/coredns.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/coredns.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9153/metrics\n\n```\n{% /details %}\n###### Basic HTTP auth\n\nLocal server with basic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9153/metrics\n username: foo\n password: bar\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9153/metrics\n\n - name: remote\n url: http://203.0.113.10:9153/metrics\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `coredns` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m coredns\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m coredns -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `coredns` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep coredns\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep coredns /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep coredns\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per CoreDNS instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| coredns.dns_request_count_total | requests | requests/s |\n| coredns.dns_responses_count_total | responses | responses/s |\n| coredns.dns_request_count_total_per_status | processed, dropped | requests/s |\n| coredns.dns_no_matching_zone_dropped_total | dropped | requests/s |\n| coredns.dns_panic_count_total | panics | panics/s |\n| coredns.dns_requests_count_total_per_proto | udp, tcp | requests/s |\n| coredns.dns_requests_count_total_per_ip_family | v4, v6 | requests/s |\n| coredns.dns_requests_count_total_per_per_type | a, aaaa, mx, soa, cname, ptr, txt, ns, ds, dnskey, rrsig, nsec, nsec3, ixfr, any, other | requests/s |\n| coredns.dns_responses_count_total_per_rcode | noerror, formerr, servfail, nxdomain, notimp, refused, yxdomain, yxrrset, nxrrset, notauth, notzone, badsig, badkey, badtime, badmode, badname, badalg, badtrunc, badcookie, other | responses/s |\n\n### Per server\n\nThese metrics refer to the DNS server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| server_name | Server name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| coredns.server_dns_request_count_total | requests | requests/s |\n| coredns.server_dns_responses_count_total | responses | responses/s |\n| coredns.server_request_count_total_per_status | processed, dropped | requests/s |\n| coredns.server_requests_count_total_per_proto | udp, tcp | requests/s |\n| coredns.server_requests_count_total_per_ip_family | v4, v6 | requests/s |\n| coredns.server_requests_count_total_per_per_type | a, aaaa, mx, soa, cname, ptr, txt, ns, ds, dnskey, rrsig, nsec, nsec3, ixfr, any, other | requests/s |\n| coredns.server_responses_count_total_per_rcode | noerror, formerr, servfail, nxdomain, notimp, refused, yxdomain, yxrrset, nxrrset, notauth, notzone, badsig, badkey, badtime, badmode, badname, badalg, badtrunc, badcookie, other | responses/s |\n\n### Per zone\n\nThese metrics refer to the DNS zone.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| zone_name | Zone name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| coredns.zone_dns_request_count_total | requests | requests/s |\n| coredns.zone_dns_responses_count_total | responses | responses/s |\n| coredns.zone_requests_count_total_per_proto | udp, tcp | requests/s |\n| coredns.zone_requests_count_total_per_ip_family | v4, v6 | requests/s |\n| coredns.zone_requests_count_total_per_per_type | a, aaaa, mx, soa, cname, ptr, txt, ns, ds, dnskey, rrsig, nsec, nsec3, ixfr, any, other | requests/s |\n| coredns.zone_responses_count_total_per_rcode | noerror, formerr, servfail, nxdomain, notimp, refused, yxdomain, yxrrset, nxrrset, notauth, notzone, badsig, badkey, badtime, badmode, badname, badalg, badtrunc, badcookie, other | responses/s |\n\n",integration_type:"collector",id:"go.d.plugin-coredns-CoreDNS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/coredns/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-couchbase",plugin_name:"go.d.plugin",module_name:"couchbase",monitored_instance:{name:"Couchbase",link:"https://www.couchbase.com/",icon_filename:"couchbase.svg",categories:["data-collection.databases"]},keywords:["couchbase","databases"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Couchbase\n\nPlugin: go.d.plugin\nModule: couchbase\n\n## Overview\n\nThis collector monitors Couchbase servers.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **couchbase** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **couchbase**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/couchbase.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="All options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8091 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Functions** | functions.top_queries.disabled | Disable the [top-queries](#top-queries) function. | no | no |\n| | functions.top_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.top_queries.limit | Maximum number of queries to return. | 500 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **couchbase** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the couchbase data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _couchbase_ (or scroll the list) to locate the **couchbase** collector.\n5. Click the **+** next to the **couchbase** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/couchbase.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/couchbase.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8091\n\n```\n{% /details %}\n###### Basic HTTP auth\n\nLocal server with basic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8091\n username: foo\n password: bar\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8091\n\n - name: remote\n url: http://203.0.113.0:8091\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `couchbase` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m couchbase\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m couchbase -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `couchbase` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep couchbase\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep couchbase /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep couchbase\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",functions:"## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Top Queries\n\nRetrieves completed N1QL query statistics from Couchbase [system:completed_requests](https://docs.couchbase.com/server/current/manage/monitor/monitoring-n1ql-query.html#sys-completed-req) keyspace.\n\nThis function queries the `system:completed_requests` keyspace which stores information about recently completed N1QL requests. It provides timing metrics, result statistics, and error/warning counts for each completed query.\n\nUse cases:\n- Identify slow N1QL queries consuming the most elapsed time\n- Find queries with high error or warning counts\n- Analyze query patterns by user to understand workload distribution\n\nStatement text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Couchbase:top-queries` |\n| Require Cloud | yes |\n| Performance | Queries `system:completed_requests` via the N1QL query service:<br/>\u2022 The `completed_requests` keyspace has a configurable size limit (`completed-limit` setting)<br/>\u2022 Default limit of 500 rows balances usefulness with performance |\n| Security | Query text may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Personal information in WHERE clauses or INSERT values<br/>\u2022 Business data embedded in queries<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to Couchbase<br/>\u2022 The N1QL (Query) service is running<br/>\u2022 Returns HTTP 503 if collector is still initializing<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Grant access to `system:completed_requests`\n\nThe user must have appropriate privileges to query system keyspaces and the N1QL service must be available.\n\n1. Ensure the N1QL (Query) service is running on the cluster\n\n2. Grant query system catalog privileges to the monitoring user:\n\n ```sql\n GRANT QUERY_SYSTEM_CATALOG TO netdata_user;\n ```\n\n3. Verify access to `completed_requests`:\n\n ```sql\n SELECT * FROM system:completed_requests LIMIT 1;\n ```\n\n :::info\n\n - The `system:completed_requests` keyspace stores recently completed queries based on Couchbase server settings `completed-limit` and `completed-threshold`\n - Only queries exceeding `completed-threshold` (default 1000ms) are logged to `completed_requests`\n - Adjust `completed-threshold` in Couchbase Query Settings to capture faster queries if needed\n\n :::\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. Options include elapsed time, service time, request time, and result count. Defaults to elapsed time to focus on slowest queries. | yes | elapsedTime | |\n\n#### Returns\n\nCompleted N1QL request statistics. Each row represents a single completed query with its timing and result metrics.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Request ID | string | | hidden | Unique identifier for the N1QL request. Can be used for correlation with Couchbase logs. |\n| Request Time | timestamp | | | Timestamp when the request was received by the query service. |\n| Statement | string | | | The N1QL statement that was executed. Truncated to 4096 characters. |\n| Elapsed Time | duration | milliseconds | | Total time from request receipt to response completion, including queue time, planning, execution, and result streaming. |\n| Service Time | duration | milliseconds | | Time spent actively processing the request, excluding network latency and queue wait time. Compare with elapsed time to identify network or queueing delays. |\n| Result Count | integer | | | Number of documents/rows returned by the query. High values may indicate queries returning excessive data. |\n| Result Size | integer | | hidden | Total size of the result set in bytes. Large result sizes may indicate inefficient queries or missing projections. |\n| Error Count | integer | | hidden | Number of errors encountered during query execution. Non-zero values require investigation. |\n| Warning Count | integer | | hidden | Number of warnings generated during query execution. Warnings may indicate suboptimal query patterns or index usage. |\n| User | string | | | Couchbase user who executed the query. Useful for identifying workload by user or application. |\n| Client Context ID | string | | hidden | Client-provided context identifier for request tracking and correlation. |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Couchbase instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| couchbase.bucket_quota_percent_used | a dimension per bucket | percentage |\n| couchbase.bucket_ops_per_sec | a dimension per bucket | ops/s |\n| couchbase.bucket_disk_fetches | a dimension per bucket | fetches |\n| couchbase.bucket_item_count | a dimension per bucket | items |\n| couchbase.bucket_disk_used_stats | a dimension per bucket | bytes |\n| couchbase.bucket_data_used | a dimension per bucket | bytes |\n| couchbase.bucket_mem_used | a dimension per bucket | bytes |\n| couchbase.bucket_vb_active_num_non_resident | a dimension per bucket | items |\n\n",integration_type:"collector",id:"go.d.plugin-couchbase-Couchbase",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/couchbase/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-couchdb",plugin_name:"go.d.plugin",module_name:"couchdb",monitored_instance:{name:"CouchDB",link:"https://couchdb.apache.org/",icon_filename:"couchdb.svg",categories:["data-collection.databases"]},keywords:["couchdb","databases"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# CouchDB\n\nPlugin: go.d.plugin\nModule: couchdb\n\n## Overview\n\nThis collector monitors CouchDB servers.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **couchdb** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **couchdb**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/couchdb.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:5984 | yes |\n| | node | CouchDB node name (same as the `-name` argument in `vm.args`). | _local | yes |\n| | timeout | HTTP request timeout (seconds). | 2 | no |\n| **Filters** | databases | Space-separated list of databases to collect stats for. | | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **couchdb** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the couchdb data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _couchdb_ (or scroll the list) to locate the **couchdb** collector.\n5. Click the **+** next to the **couchdb** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/couchdb.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/couchdb.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:5984\n\n```\n{% /details %}\n###### Basic HTTP auth\n\nLocal server with basic HTTP authentication, node name and multiple databases defined. Make sure to match the node name with the `NODENAME` value in your CouchDB\'s `etc/vm.args` file. Typically, this is of the form `couchdb@fully.qualified.domain.name` in a cluster, or `couchdb@127.0.0.1` for a single-node server.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:5984\n node: couchdb@127.0.0.1\n databases: my-db other-db\n username: foo\n password: bar\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:5984\n\n - name: remote\n url: http://203.0.113.0:5984\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `couchdb` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m couchdb\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m couchdb -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `couchdb` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep couchdb\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep couchdb /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep couchdb\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per CouchDB instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| couchdb.activity | db_reads, db_writes, view_reads | requests/s |\n| couchdb.request_methods | copy, delete, get, head, options, post, put | requests/s |\n| couchdb.response_codes | 200, 201, 202, 204, 206, 301, 302, 304, 400, 401, 403, 404, 406, 409, 412, 413, 414, 415, 416, 417, 500, 501, 503 | responses/s |\n| couchdb.response_code_classes | 2xx, 3xx, 4xx, 5xx | responses/s |\n| couchdb.active_tasks | indexer, db_compaction, replication, view_compaction | tasks |\n| couchdb.replicator_jobs | running, pending, crashed, internal_replication_jobs | jobs |\n| couchdb.open_files | files | files |\n| couchdb.erlang_vm_memory | atom, binaries, code, ets, procs, other | B |\n| couchdb.proccounts | os_procs, erl_procs | processes |\n| couchdb.peakmsgqueue | peak_size | messages |\n| couchdb.reductions | reductions | reductions |\n| couchdb.db_sizes_file | a dimension per database | KiB |\n| couchdb.db_sizes_external | a dimension per database | KiB |\n| couchdb.db_sizes_active | a dimension per database | KiB |\n| couchdb.db_doc_count | a dimension per database | docs |\n| couchdb.db_doc_del_count | a dimension per database | docs |\n\n",integration_type:"collector",id:"go.d.plugin-couchdb-CouchDB",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/couchdb/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-dcgm",plugin_name:"go.d.plugin",module_name:"dcgm",monitored_instance:{name:"Nvidia Data Center GPU Manager (DCGM)",link:"https://github.com/NVIDIA/dcgm-exporter",icon_filename:"nvidia.svg",categories:["data-collection.hardware-and-sensors"]},keywords:["nvidia","gpu","dcgm","dcgm-exporter"],related_resources:{integrations:{list:[{plugin_name:"go.d.plugin",module_name:"nvidia_smi"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# Nvidia Data Center GPU Manager (DCGM)\n\nPlugin: go.d.plugin\nModule: dcgm\n\n## Overview\n\nThis collector gathers NVIDIA GPU telemetry from a `dcgm-exporter` endpoint.\nIt supports all numeric fields exposed by the exporter and maps them into Netdata-native contexts.\n\n\nIt collects metrics by periodically scraping the exporter Prometheus endpoint over HTTP.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nNvidia Data Center GPU Manager (DCGM) can be monitored further using the following other integrations:\n\n- {% relatedResource id="go.d.plugin-nvidia_smi-Nvidia_GPU" %}Nvidia GPU{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration does not support auto-detection in v1.\n\n#### Limits\n\nThe collector applies global and per-metric time series limits to prevent excessive cardinality.\n\n\n#### Performance Impact\n\nThe impact depends on dcgm-exporter field selection and resulting series cardinality.\n',setup:'## Setup\n\n\nYou can configure the **dcgm** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **dcgm**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/dcgm.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Run dcgm-exporter\n\nInstall DCGM and run `dcgm-exporter` so that a Prometheus endpoint is available (default `:9400/metrics`).\n\n#### Configure exporter field list\n\nThe default exporter profile exposes a small subset of fields.\nUse the Netdata recommended profile:\n[`dcgm-exporter-netdata.csv`](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/dcgm/dcgm-exporter-netdata.csv)\n(raw download: `https://raw.githubusercontent.com/netdata/netdata/master/src/go/plugin/go.d/collector/dcgm/dcgm-exporter-netdata.csv`).\n\nThe Netdata profile enables 127 fields by default and documents all remaining known DCGM fields as commented entries.\nTo customize beyond the baseline, uncomment the field you need and comment one currently enabled field.\n\nRuntime validation artifact:\n`src/go/plugin/go.d/collector/dcgm/runtime-validation-driver-590.48.01-dcgm-exporter-4.4.1-4.5.2.md`\nand\n`src/go/plugin/go.d/collector/dcgm/runtime-validation-driver-590.48.01-dcgm-exporter-4.4.1-4.5.2.json`\n\nValidation is primarily version-scoped (NVIDIA driver + DCGM/DCGM-exporter versions), so treat it as a strong baseline rather than universal compatibility.\n\nExample:\n`dcgm-exporter -f /path/to/dcgm-exporter-netdata.csv`\n\n\n#### Keep collection intervals aligned\n\nSet Netdata `update_every` to the same value as dcgm-exporter collection interval (default 30 seconds).\nExample exporter interval: `dcgm-exporter -c 30000` and Netdata `update_every: 30`.\n\n\n#### Enable profiling capabilities (optional)\n\nProfiling fields may require additional privileges/capabilities in your runtime environment.\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). Keep this aligned with dcgm-exporter collection interval. | 30 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | DCGM exporter metrics endpoint URL. | http://127.0.0.1:9400/metrics | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| **Limits** | max_time_series | Global time series limit. If exceeded, collection is skipped for this cycle. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics above this limit are skipped. | 200 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token. | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy authentication. | | no |\n| | proxy_password | Password for proxy authentication. | | no |\n| **Request** | headers | Additional HTTP headers to include in the request. | | no |\n| | method | HTTP method. | GET | no |\n| | body | HTTP request body. | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associate this job with a Virtual Node. | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **dcgm** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the dcgm data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _dcgm_ (or scroll the list) to locate the **dcgm** collector.\n5. Click the **+** next to the **dcgm** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/dcgm.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/dcgm.conf\n```\n\n##### Examples\n\n###### Local exporter\n\nCollect metrics from a local dcgm-exporter endpoint.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9400/metrics\n update_every: 30\n\n```\n{% /details %}\n###### TLS endpoint\n\nCollect metrics over HTTPS with custom CA certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: secure\n url: https://dcgm-exporter.example.com:9400/metrics\n update_every: 30\n tls_ca: /etc/netdata/certs/dcgm-ca.crt\n\n```\n{% /details %}\n###### Increased cardinality limits\n\nIncrease limits when collecting large field sets and multiple entities.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: dcgm_large\n url: http://127.0.0.1:9400/metrics\n update_every: 30\n max_time_series: 10000\n max_time_series_per_metric: 2000\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `dcgm` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m dcgm\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m dcgm -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `dcgm` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep dcgm\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep dcgm /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep dcgm\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ dcgm_gpu_xid_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/dcgm.conf) | dcgm.gpu.reliability.xid | NVIDIA driver reported GPU XID error on GPU ${label:gpu} |\n| [ dcgm_gpu_row_remap_failure ](https://github.com/netdata/netdata/blob/master/src/health/health.d/dcgm.conf) | dcgm.gpu.reliability.row_remap_status | GPU row remapping failed on GPU ${label:gpu} |\n| [ dcgm_gpu_uncorrectable_remapped_rows ](https://github.com/netdata/netdata/blob/master/src/health/health.d/dcgm.conf) | dcgm.gpu.reliability.row_remap_events | Uncorrectable remapped rows increased on GPU ${label:gpu} |\n| [ dcgm_gpu_power_violation ](https://github.com/netdata/netdata/blob/master/src/health/health.d/dcgm.conf) | dcgm.gpu.throttle.violations | Power throttling detected on GPU ${label:gpu} |\n| [ dcgm_gpu_thermal_violation ](https://github.com/netdata/netdata/blob/master/src/health/health.d/dcgm.conf) | dcgm.gpu.throttle.violations | Thermal throttling detected on GPU ${label:gpu} |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\nMetrics are grouped into static Netdata contexts. Contexts are created only when matching DCGM fields are present in the exporter output.\n\n\n### Per gpu\n\nThese metrics refer to GPU device instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| gpu | gpu label from exporter metrics. |\n| uuid | uuid label from exporter metrics. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| dcgm.gpu.capability.support | cc_mode, cuda_compute_capability, gpm_support, mig_attributes, mig_ci_info, mig_gi_info, mig_max_slices, supported_clocks, supported_type_info | state |\n| dcgm.gpu.clock.frequency | app_mem_clock, app_sm_clock, max_mem_clock, max_sm_clock, max_video_clock, memory, sm, video_clock | MHz |\n| dcgm.gpu.compute.activity | dram, fp16, fp32, fp64, graphics_engine_active, integer, sm_active, sm_occupancy, tensor | % |\n| dcgm.gpu.compute.tensor.activity | tensor_dfma, tensor_hmma, tensor_imma | % |\n| dcgm.gpu.compute.media.activity | nvdec0_active, nvdec1_active, nvdec2_active, nvdec3_active, nvdec4_active, nvdec5_active, nvdec6_active, nvdec7_active, nvjpg0_active, nvjpg1_active, nvjpg2_active, nvjpg3_active, nvjpg4_active, nvjpg5_active, nvjpg6_active, nvjpg7_active, nvofa0_active, nvofa1_active | % |\n| dcgm.gpu.compute.cache.activity | hostmem_cache_hit, hostmem_cache_miss, peermem_cache_hit, peermem_cache_miss | events/s |\n| dcgm.gpu.compute.utilization | decoder, encoder, gpu, memory_copy | % |\n| dcgm.gpu.cpu.power | module_power_util_current, sysio_power_util_current | Watts |\n| dcgm.gpu.cpu.info | cpu_model, cpu_vendor | value |\n| dcgm.gpu.diagnostics.results | diag_diagnostic_result, diag_eud_result, diag_memory_bandwidth_result, diag_memory_result, diag_memtest_result, diag_nccl_tests_result, diag_nvbandwidth_result, diag_pulse_test_result, diag_software_result, diag_targeted_power_result, diag_targeted_stress_result | state |\n| dcgm.gpu.diagnostics.status | diag_status | state |\n| dcgm.gpu.health.status | imex_daemon_status, imex_domain_status | state |\n| dcgm.gpu.interconnect.connectx.error_status | connectx_correctable_err_mask, connectx_correctable_err_status, connectx_uncorrectable_err_mask, connectx_uncorrectable_err_severity, connectx_uncorrectable_err_status | state |\n| dcgm.gpu.interconnect.connectx.errors | connectx_correctable_err_mask, connectx_correctable_err_status, connectx_uncorrectable_err_mask, connectx_uncorrectable_err_severity, connectx_uncorrectable_err_status | errors/s |\n| dcgm.gpu.interconnect.connectx.link | connectx_active_pcie_link_speed, connectx_expect_pcie_link_speed | value |\n| dcgm.gpu.interconnect.connectx.status | connectx_health | state |\n| dcgm.gpu.interconnect.error_rate | c2c_link_error_intr, c2c_link_error_replay, c2c_link_error_replay_b2b | errors/s |\n| dcgm.gpu.interconnect.fabric | fabric_clique_id, fabric_cluster_uuid, fabric_health_mask, fabric_manager_error_code, fabric_manager_status | state |\n| dcgm.gpu.interconnect.nvlink.error_rate | gpu_nvlink_errors | errors/s |\n| dcgm.gpu.interconnect.pcie.error_rate | pcie_count_correctable_errors, pcie_replay | errors/s |\n| dcgm.gpu.interconnect.pcie.link.generation | link_gen, max_link_gen | generation |\n| dcgm.gpu.interconnect.pcie.link.width | connectx_active_pcie_link_width, connectx_expect_pcie_link_width, link_width, max_link_width | lanes |\n| dcgm.gpu.interconnect.state | c2c_link, c2c_link_power_state, c2c_link_status | state |\n| dcgm.gpu.interconnect.pcie.state | diag_pcie_result | state |\n| dcgm.gpu.interconnect.throughput | c2c_max_bandwidth, c2c_rx_all_bytes, c2c_rx_data_bytes, c2c_tx_all_bytes, c2c_tx_data_bytes | B/s |\n| dcgm.gpu.interconnect.pcie.throughput | pcie_rx, pcie_rx_throughput, pcie_tx, pcie_tx_throughput | B/s |\n| dcgm.gpu.interconnect.nvlink.throughput | nvlink_rx, nvlink_tx | B/s |\n| dcgm.gpu.interconnect.total.throughput | pcie, nvlink | B/s |\n| dcgm.gpu.internal.boundary | first_connectx_field_id, first_vgpu_field_id, internal_fields_0_end, internal_fields_0_start, last_connectx_field_id, last_vgpu_field_id | state |\n| dcgm.gpu.inventory.identity | brand, count, cuda_visible_devices_str, minor_number, name, nvml_index, serial, uuid | value |\n| dcgm.gpu.inventory.platform | platform_chassis_serial_number, platform_chassis_slot_number, platform_host_id, platform_infiniband_guid, platform_module_id, platform_peer_type, platform_tray_index | value |\n| dcgm.gpu.inventory.software | inforom_config_check, inforom_config_valid, inforom_image_ver, oem_inforom_ver, power_inforom_ver, process_name, vbios_version | value |\n| dcgm.gpu.memory.bar1_usage | free, used | B |\n| dcgm.gpu.memory.bar1_capacity | total | B |\n| dcgm.gpu.memory.ecc_error_rate | ecc_current, ecc_dbe_agg, ecc_dbe_agg_cbu, ecc_dbe_agg_dev, ecc_dbe_agg_l1, ecc_dbe_agg_l2, ecc_dbe_agg_reg, ecc_dbe_agg_shm, ecc_dbe_agg_srm, ecc_dbe_agg_tex, ecc_dbe_vol, ecc_dbe_vol_cbu, ecc_dbe_vol_dev, ecc_dbe_vol_l1, ecc_dbe_vol_l2, ecc_dbe_vol_reg, ecc_dbe_vol_shm, ecc_dbe_vol_srm, ecc_dbe_vol_tex, ecc_pending, ecc_sbe_agg, ecc_sbe_agg_cbu, ecc_sbe_agg_dev, ecc_sbe_agg_l1, ecc_sbe_agg_l2, ecc_sbe_agg_reg, ecc_sbe_agg_shm, ecc_sbe_agg_srm, ecc_sbe_agg_tex, ecc_sbe_vol, ecc_sbe_vol_cbu, ecc_sbe_vol_dev, ecc_sbe_vol_l1, ecc_sbe_vol_l2, ecc_sbe_vol_reg, ecc_sbe_vol_shm, ecc_sbe_vol_srm, ecc_sbe_vol_tex | errors/s |\n| dcgm.gpu.memory.ecc_errors | ecc_current, ecc_dbe_agg_cbu, ecc_dbe_agg_dev, ecc_dbe_agg_l1, ecc_dbe_agg_l2, ecc_dbe_agg_reg, ecc_dbe_agg_shm, ecc_dbe_agg_srm, ecc_dbe_agg_tex, ecc_dbe_vol_cbu, ecc_dbe_vol_dev, ecc_dbe_vol_l1, ecc_dbe_vol_l2, ecc_dbe_vol_reg, ecc_dbe_vol_shm, ecc_dbe_vol_srm, ecc_dbe_vol_tex, ecc_inforom_ver, ecc_pending, ecc_sbe_agg_cbu, ecc_sbe_agg_dev, ecc_sbe_agg_l1, ecc_sbe_agg_l2, ecc_sbe_agg_reg, ecc_sbe_agg_shm, ecc_sbe_agg_srm, ecc_sbe_agg_tex, ecc_sbe_vol_cbu, ecc_sbe_vol_dev, ecc_sbe_vol_l1, ecc_sbe_vol_l2, ecc_sbe_vol_reg, ecc_sbe_vol_shm, ecc_sbe_vol_srm, ecc_sbe_vol_tex | errors |\n| dcgm.gpu.memory.page_retirements | retired_dbe, retired_pending, retired_sbe | pages/s |\n| dcgm.gpu.memory.usage | free, reserved, used | B |\n| dcgm.gpu.memory.capacity | total | B |\n| dcgm.gpu.memory.utilization | used_percent | % |\n| dcgm.gpu.power.energy | total | mJ/s |\n| dcgm.gpu.power.profiles | enforced_power_profile_mask, requested_power_profile_mask, valid_power_profile_mask | state |\n| dcgm.gpu.power.smoothing | pwr_smoothing_active_preset_profile, pwr_smoothing_admin_override_percent_tmp_floor, pwr_smoothing_admin_override_ramp_down_hyst_val, pwr_smoothing_admin_override_ramp_down_rate, pwr_smoothing_admin_override_ramp_up_rate, pwr_smoothing_applied_tmp_ceil, pwr_smoothing_applied_tmp_floor, pwr_smoothing_enabled, pwr_smoothing_hw_circuitry_percent_lifetime_remaining, pwr_smoothing_imm_ramp_down_enabled, pwr_smoothing_max_num_preset_profiles, pwr_smoothing_max_percent_tmp_floor_setting, pwr_smoothing_min_percent_tmp_floor_setting, pwr_smoothing_priv_lvl, pwr_smoothing_profile_percent_tmp_floor, pwr_smoothing_profile_ramp_down_hyst_val, pwr_smoothing_profile_ramp_down_rate, pwr_smoothing_profile_ramp_up_rate | value |\n| dcgm.gpu.power.usage | draw, enforced_limit, power_mgmt_limit, power_mgmt_limit_def, power_mgmt_limit_max, power_mgmt_limit_min, power_usage_instant | Watts |\n| dcgm.gpu.reliability.memory_health | banks_remap_rows_avail_high, banks_remap_rows_avail_low, banks_remap_rows_avail_max, banks_remap_rows_avail_none, banks_remap_rows_avail_partial, memory_unrepairable_flag, threshold_srm | state |\n| dcgm.gpu.reliability.recovery_action | get_gpu_recovery_action | state |\n| dcgm.gpu.reliability.row_remap_events | correctable_remapped_rows, uncorrectable_remapped_rows | rows/s |\n| dcgm.gpu.reliability.row_remap_status | row_remap_failure, row_remap_pending | state |\n| dcgm.gpu.reliability.xid | xid | code |\n| dcgm.gpu.state.configuration | autoboost, compute_mode, persistence_mode, sync_boost, sync_boost_violation | state |\n| dcgm.gpu.state.performance | pstate | state |\n| dcgm.gpu.state.virtualization | mig_mode, virtual_mode | state |\n| dcgm.gpu.thermal.fan_speed | fan_speed | % |\n| dcgm.gpu.thermal.temperature | connectx_device_temperature, gpu, gpu_max_op_temp, gpu_temp_limit, mem_max_op_temp, memory, shutdown_temp, slowdown_temp | Celsius |\n| dcgm.gpu.throttle.reasons | clocks_event_reasons | bitmask |\n| dcgm.gpu.throttle.violations | board_limit_violation, hw_power_brake_slowdown, hw_therm_slowdown, low_utilization_violation, power_violation, reliability_violation, sw_power_cap, sw_therm_slowdown, sync_boost, thermal_violation, total_app_clocks_violation, total_base_clocks_violation | milliseconds/s |\n| dcgm.gpu.topology.affinity | cpu_affinity_0, cpu_affinity_1, cpu_affinity_2, cpu_affinity_3, gpu_topology_affinity, gpu_topology_pci, mem_affinity_0, mem_affinity_1, mem_affinity_2, mem_affinity_3, pci_busid, pci_combined_id, pci_subsys_id | value |\n| dcgm.gpu.virtualization.vgpu.frame_rate | vgpu_frame_rate_limit | fps |\n| dcgm.gpu.virtualization.vgpu.instance | vgpu_instance_ids, vgpu_pci_id, vgpu_uuid | value |\n| dcgm.gpu.virtualization.vgpu.license | vgpu_instance_license_state, vgpu_license_status, vgpu_type_license | state |\n| dcgm.gpu.virtualization.vgpu.memory | vgpu_memory_usage | B |\n| dcgm.gpu.virtualization.vgpu.sessions | vgpu_enc_sessions_info, vgpu_enc_stats, vgpu_fbc_sessions_info, vgpu_fbc_stats | value |\n| dcgm.gpu.virtualization.vgpu.software | vgpu_driver_version | value |\n| dcgm.gpu.virtualization.vgpu.type | creatable_vgpu_type_ids, supported_vgpu_type_ids, vgpu_type, vgpu_type_class, vgpu_type_info, vgpu_type_name | value |\n| dcgm.gpu.virtualization.vgpu.utilization | vgpu_per_process_utilization | % |\n| dcgm.gpu.virtualization.vgpu.vm | vgpu_vm_gpu_instance_id, vgpu_vm_id, vgpu_vm_name | value |\n| dcgm.gpu.workload.sessions | accounting_data, enc_stats, fbc_sessions_info, fbc_stats | value |\n\n### Per mig\n\nThese metrics refer to MIG instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| gpu | gpu label from exporter metrics. |\n| gpu_i_id | gpu_i_id label from exporter metrics. |\n| gpu_i_profile | gpu_i_profile label from exporter metrics. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| dcgm.mig.clock.frequency | app_mem_clock, app_sm_clock, max_mem_clock, max_sm_clock, max_video_clock, memory, sm, video_clock | MHz |\n| dcgm.mig.compute.activity | dram, fp16, fp32, fp64, graphics_engine_active, integer, sm_active, sm_occupancy, tensor | % |\n| dcgm.mig.compute.tensor.activity | tensor_dfma, tensor_hmma, tensor_imma | % |\n| dcgm.mig.compute.media.activity | nvdec0_active, nvdec1_active, nvdec2_active, nvdec3_active, nvdec4_active, nvdec5_active, nvdec6_active, nvdec7_active, nvjpg0_active, nvjpg1_active, nvjpg2_active, nvjpg3_active, nvjpg4_active, nvjpg5_active, nvjpg6_active, nvjpg7_active, nvofa0_active, nvofa1_active | % |\n| dcgm.mig.compute.cache.activity | hostmem_cache_hit, hostmem_cache_miss, peermem_cache_hit, peermem_cache_miss | events/s |\n| dcgm.mig.compute.utilization | decoder, encoder, gpu, memory_copy | % |\n| dcgm.mig.interconnect.nvlink.ber | nvlink_count_effective_ber, nvlink_count_effective_ber_float, nvlink_count_symbol_ber, nvlink_count_symbol_ber_float | ratio |\n| dcgm.mig.interconnect.nvlink.congestion | nvlink_ppcnt_ibpc_port_xmit_wait | events/s |\n| dcgm.mig.interconnect.error_rate | c2c_link_error_intr, c2c_link_error_replay, c2c_link_error_replay_b2b | errors/s |\n| dcgm.mig.interconnect.nvlink.error_rate | gpu_nvlink_errors, nvlink_count_effective_errors, nvlink_count_fec_history_0, nvlink_count_fec_history_1, nvlink_count_fec_history_10, nvlink_count_fec_history_11, nvlink_count_fec_history_12, nvlink_count_fec_history_13, nvlink_count_fec_history_14, nvlink_count_fec_history_15, nvlink_count_fec_history_2, nvlink_count_fec_history_3, nvlink_count_fec_history_4, nvlink_count_fec_history_5, nvlink_count_fec_history_6, nvlink_count_fec_history_7, nvlink_count_fec_history_8, nvlink_count_fec_history_9, nvlink_count_link_recovery_events, nvlink_count_link_recovery_failed_events, nvlink_count_link_recovery_successful_events, nvlink_count_local_link_integrity_errors, nvlink_count_rx_buffer_overrun_errors, nvlink_count_rx_errors, nvlink_count_rx_general_errors, nvlink_count_rx_malformed_packet_errors, nvlink_count_rx_remote_errors, nvlink_count_rx_symbol_errors, nvlink_count_tx_discards, nvlink_crc_data_error, nvlink_crc_data_error_count_l0, nvlink_crc_data_error_count_l1, nvlink_crc_data_error_count_l10, nvlink_crc_data_error_count_l11, nvlink_crc_data_error_count_l12, nvlink_crc_data_error_count_l13, nvlink_crc_data_error_count_l14, nvlink_crc_data_error_count_l15, nvlink_crc_data_error_count_l16, nvlink_crc_data_error_count_l17, nvlink_crc_data_error_count_l2, nvlink_crc_data_error_count_l3, nvlink_crc_data_error_count_l4, nvlink_crc_data_error_count_l5, nvlink_crc_data_error_count_l6, nvlink_crc_data_error_count_l7, nvlink_crc_data_error_count_l8, nvlink_crc_data_error_count_l9, nvlink_crc_flit_error, nvlink_crc_flit_error_count_l0, nvlink_crc_flit_error_count_l1, nvlink_crc_flit_error_count_l10, nvlink_crc_flit_error_count_l11, nvlink_crc_flit_error_count_l12, nvlink_crc_flit_error_count_l13, nvlink_crc_flit_error_count_l14, nvlink_crc_flit_error_count_l15, nvlink_crc_flit_error_count_l16, nvlink_crc_flit_error_count_l17, nvlink_crc_flit_error_count_l2, nvlink_crc_flit_error_count_l3, nvlink_crc_flit_error_count_l4, nvlink_crc_flit_error_count_l5, nvlink_crc_flit_error_count_l6, nvlink_crc_flit_error_count_l7, nvlink_crc_flit_error_count_l8, nvlink_crc_flit_error_count_l9, nvlink_error_dl_crc, nvlink_error_dl_recovery, nvlink_error_dl_replay, nvlink_ppcnt_physical_successful_recovery_events, nvlink_ppcnt_plr_rcv_uncorrectable_code, nvlink_ppcnt_recovery_time_since_last, nvlink_ppcnt_recovery_total_successful_events, nvlink_pprm_oper_recovery, nvlink_recovery_error, nvlink_recovery_error_count_l0, nvlink_recovery_error_count_l1, nvlink_recovery_error_count_l10, nvlink_recovery_error_count_l11, nvlink_recovery_error_count_l12, nvlink_recovery_error_count_l13, nvlink_recovery_error_count_l14, nvlink_recovery_error_count_l15, nvlink_recovery_error_count_l16, nvlink_recovery_error_count_l17, nvlink_recovery_error_count_l2, nvlink_recovery_error_count_l3, nvlink_recovery_error_count_l4, nvlink_recovery_error_count_l5, nvlink_recovery_error_count_l6, nvlink_recovery_error_count_l7, nvlink_recovery_error_count_l8, nvlink_recovery_error_count_l9, nvlink_replay_error, nvlink_replay_error_count_l0, nvlink_replay_error_count_l1, nvlink_replay_error_count_l10, nvlink_replay_error_count_l11, nvlink_replay_error_count_l12, nvlink_replay_error_count_l13, nvlink_replay_error_count_l14, nvlink_replay_error_count_l15, nvlink_replay_error_count_l16, nvlink_replay_error_count_l17, nvlink_replay_error_count_l2, nvlink_replay_error_count_l3, nvlink_replay_error_count_l4, nvlink_replay_error_count_l5, nvlink_replay_error_count_l6, nvlink_replay_error_count_l7, nvlink_replay_error_count_l8, nvlink_replay_error_count_l9 | errors/s |\n| dcgm.mig.interconnect.pcie.error_rate | pcie_count_correctable_errors, pcie_replay | errors/s |\n| dcgm.mig.interconnect.nvlink.errors | nvlink_ppcnt_plr_rcv_uncorrectable_code | errors |\n| dcgm.mig.interconnect.fabric | fabric_clique_id, fabric_cluster_uuid, fabric_health_mask, fabric_manager_error_code, fabric_manager_status | state |\n| dcgm.mig.interconnect.pcie.link.generation | link_gen, max_link_gen | generation |\n| dcgm.mig.interconnect.pcie.link.width | link_width, max_link_width | lanes |\n| dcgm.mig.interconnect.state | c2c_link, c2c_link_power_state, c2c_link_status | state |\n| dcgm.mig.interconnect.pcie.state | diag_pcie_result | state |\n| dcgm.mig.interconnect.nvlink.state | gpu_topology_nvlink, nvlink_get_state, nvlink_ppcnt_physical_link_down_counter, nvlink_ppcnt_plr_rcv_code_err, nvlink_ppcnt_plr_sync_events, nvlink_ppcnt_plr_xmit_retry_events, p2p_nvlink_status | state |\n| dcgm.mig.interconnect.throughput | c2c_max_bandwidth, c2c_rx_all_bytes, c2c_rx_data_bytes, c2c_tx_all_bytes, c2c_tx_data_bytes | B/s |\n| dcgm.mig.interconnect.nvlink.throughput | nvlink_bandwidth_l0, nvlink_bandwidth_l1, nvlink_bandwidth_l10, nvlink_bandwidth_l11, nvlink_bandwidth_l12, nvlink_bandwidth_l13, nvlink_bandwidth_l14, nvlink_bandwidth_l15, nvlink_bandwidth_l16, nvlink_bandwidth_l17, nvlink_bandwidth_l2, nvlink_bandwidth_l3, nvlink_bandwidth_l4, nvlink_bandwidth_l5, nvlink_bandwidth_l6, nvlink_bandwidth_l7, nvlink_bandwidth_l8, nvlink_bandwidth_l9, nvlink_count_rx, nvlink_count_tx, nvlink_l0_rx, nvlink_l0_tx, nvlink_l10_rx, nvlink_l10_tx, nvlink_l11_rx, nvlink_l11_tx, nvlink_l12_rx, nvlink_l12_tx, nvlink_l13_rx, nvlink_l13_tx, nvlink_l14_rx, nvlink_l14_tx, nvlink_l15_rx, nvlink_l15_tx, nvlink_l16_rx, nvlink_l16_tx, nvlink_l17_rx, nvlink_l17_tx, nvlink_l1_rx, nvlink_l1_tx, nvlink_l2_rx, nvlink_l2_tx, nvlink_l3_rx, nvlink_l3_tx, nvlink_l4_rx, nvlink_l4_tx, nvlink_l5_rx, nvlink_l5_tx, nvlink_l6_rx, nvlink_l6_tx, nvlink_l7_rx, nvlink_l7_tx, nvlink_l8_rx, nvlink_l8_tx, nvlink_l9_rx, nvlink_l9_tx, nvlink_rx_bandwidth, nvlink_rx_bandwidth_l0, nvlink_rx_bandwidth_l1, nvlink_rx_bandwidth_l10, nvlink_rx_bandwidth_l11, nvlink_rx_bandwidth_l12, nvlink_rx_bandwidth_l13, nvlink_rx_bandwidth_l14, nvlink_rx_bandwidth_l15, nvlink_rx_bandwidth_l16, nvlink_rx_bandwidth_l17, nvlink_rx_bandwidth_l2, nvlink_rx_bandwidth_l3, nvlink_rx_bandwidth_l4, nvlink_rx_bandwidth_l5, nvlink_rx_bandwidth_l6, nvlink_rx_bandwidth_l7, nvlink_rx_bandwidth_l8, nvlink_rx_bandwidth_l9, nvlink_rx, nvlink_tx_bandwidth, nvlink_tx_bandwidth_l0, nvlink_tx_bandwidth_l1, nvlink_tx_bandwidth_l10, nvlink_tx_bandwidth_l11, nvlink_tx_bandwidth_l12, nvlink_tx_bandwidth_l13, nvlink_tx_bandwidth_l14, nvlink_tx_bandwidth_l15, nvlink_tx_bandwidth_l16, nvlink_tx_bandwidth_l17, nvlink_tx_bandwidth_l2, nvlink_tx_bandwidth_l3, nvlink_tx_bandwidth_l4, nvlink_tx_bandwidth_l5, nvlink_tx_bandwidth_l6, nvlink_tx_bandwidth_l7, nvlink_tx_bandwidth_l8, nvlink_tx_bandwidth_l9, nvlink_tx | B/s |\n| dcgm.mig.interconnect.pcie.throughput | pcie_rx, pcie_rx_throughput, pcie_tx, pcie_tx_throughput | B/s |\n| dcgm.mig.interconnect.total.throughput | pcie, nvlink | B/s |\n| dcgm.mig.interconnect.nvlink.traffic | nvlink_count_rx_packets, nvlink_count_tx_packets, nvlink_ppcnt_plr_rcv_codes, nvlink_ppcnt_plr_xmit_codes, nvlink_ppcnt_plr_xmit_retry_codes | events/s |\n| dcgm.mig.memory.bar1_usage | free, used | B |\n| dcgm.mig.memory.bar1_capacity | total | B |\n| dcgm.mig.memory.ecc_error_rate | ecc_current, ecc_dbe_agg, ecc_dbe_agg_cbu, ecc_dbe_agg_dev, ecc_dbe_agg_l1, ecc_dbe_agg_l2, ecc_dbe_agg_reg, ecc_dbe_agg_shm, ecc_dbe_agg_srm, ecc_dbe_agg_tex, ecc_dbe_vol, ecc_dbe_vol_cbu, ecc_dbe_vol_dev, ecc_dbe_vol_l1, ecc_dbe_vol_l2, ecc_dbe_vol_reg, ecc_dbe_vol_shm, ecc_dbe_vol_srm, ecc_dbe_vol_tex, ecc_pending, ecc_sbe_agg, ecc_sbe_agg_cbu, ecc_sbe_agg_dev, ecc_sbe_agg_l1, ecc_sbe_agg_l2, ecc_sbe_agg_reg, ecc_sbe_agg_shm, ecc_sbe_agg_srm, ecc_sbe_agg_tex, ecc_sbe_vol, ecc_sbe_vol_cbu, ecc_sbe_vol_dev, ecc_sbe_vol_l1, ecc_sbe_vol_l2, ecc_sbe_vol_reg, ecc_sbe_vol_shm, ecc_sbe_vol_srm, ecc_sbe_vol_tex, nvlink_ecc_data_error | errors/s |\n| dcgm.mig.memory.ecc_errors | ecc_current, ecc_dbe_agg_cbu, ecc_dbe_agg_dev, ecc_dbe_agg_l1, ecc_dbe_agg_l2, ecc_dbe_agg_reg, ecc_dbe_agg_shm, ecc_dbe_agg_srm, ecc_dbe_agg_tex, ecc_dbe_vol_cbu, ecc_dbe_vol_dev, ecc_dbe_vol_l1, ecc_dbe_vol_l2, ecc_dbe_vol_reg, ecc_dbe_vol_shm, ecc_dbe_vol_srm, ecc_dbe_vol_tex, ecc_inforom_ver, ecc_pending, ecc_sbe_agg_cbu, ecc_sbe_agg_dev, ecc_sbe_agg_l1, ecc_sbe_agg_l2, ecc_sbe_agg_reg, ecc_sbe_agg_shm, ecc_sbe_agg_srm, ecc_sbe_agg_tex, ecc_sbe_vol_cbu, ecc_sbe_vol_dev, ecc_sbe_vol_l1, ecc_sbe_vol_l2, ecc_sbe_vol_reg, ecc_sbe_vol_shm, ecc_sbe_vol_srm, ecc_sbe_vol_tex | errors |\n| dcgm.mig.memory.page_retirements | retired_dbe, retired_pending, retired_sbe | pages/s |\n| dcgm.mig.memory.usage | free, reserved, used | B |\n| dcgm.mig.memory.capacity | total | B |\n| dcgm.mig.memory.utilization | used_percent | % |\n| dcgm.mig.power.energy | total | mJ/s |\n| dcgm.mig.power.profiles | enforced_power_profile_mask, requested_power_profile_mask, valid_power_profile_mask | state |\n| dcgm.mig.power.smoothing | pwr_smoothing_active_preset_profile, pwr_smoothing_admin_override_percent_tmp_floor, pwr_smoothing_admin_override_ramp_down_hyst_val, pwr_smoothing_admin_override_ramp_down_rate, pwr_smoothing_admin_override_ramp_up_rate, pwr_smoothing_applied_tmp_ceil, pwr_smoothing_applied_tmp_floor, pwr_smoothing_enabled, pwr_smoothing_hw_circuitry_percent_lifetime_remaining, pwr_smoothing_imm_ramp_down_enabled, pwr_smoothing_max_num_preset_profiles, pwr_smoothing_max_percent_tmp_floor_setting, pwr_smoothing_min_percent_tmp_floor_setting, pwr_smoothing_priv_lvl, pwr_smoothing_profile_percent_tmp_floor, pwr_smoothing_profile_ramp_down_hyst_val, pwr_smoothing_profile_ramp_down_rate, pwr_smoothing_profile_ramp_up_rate | value |\n| dcgm.mig.power.usage | draw, enforced_limit, power_mgmt_limit, power_mgmt_limit_def, power_mgmt_limit_max, power_mgmt_limit_min, power_usage_instant | Watts |\n| dcgm.mig.reliability.memory_health | banks_remap_rows_avail_high, banks_remap_rows_avail_low, banks_remap_rows_avail_max, banks_remap_rows_avail_none, banks_remap_rows_avail_partial, memory_unrepairable_flag, threshold_srm | state |\n| dcgm.mig.reliability.recovery_action | get_gpu_recovery_action | state |\n| dcgm.mig.reliability.row_remap_events | correctable_remapped_rows, uncorrectable_remapped_rows | rows/s |\n| dcgm.mig.reliability.row_remap_status | row_remap_failure, row_remap_pending | state |\n| dcgm.mig.reliability.xid | xid | code |\n| dcgm.mig.state.configuration | autoboost, compute_mode, persistence_mode, sync_boost, sync_boost_violation | state |\n| dcgm.mig.state.performance | pstate | state |\n| dcgm.mig.state.virtualization | mig_mode, virtual_mode | state |\n| dcgm.mig.thermal.fan_speed | fan_speed | % |\n| dcgm.mig.thermal.temperature | gpu, gpu_max_op_temp, gpu_temp_limit, mem_max_op_temp, memory, shutdown_temp, slowdown_temp | Celsius |\n| dcgm.mig.throttle.reasons | clocks_event_reasons | bitmask |\n| dcgm.mig.throttle.violations | board_limit_violation, hw_power_brake_slowdown, hw_therm_slowdown, low_utilization_violation, power_violation, reliability_violation, sw_power_cap, sw_therm_slowdown, sync_boost, thermal_violation, total_app_clocks_violation, total_base_clocks_violation | milliseconds/s |\n\n### Per nvlink\n\nThese metrics refer to NVLink link instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| gpu | gpu label from exporter metrics. |\n| gpu_uuid | gpu_uuid label from exporter metrics. |\n| nvlink | nvlink label from exporter metrics. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| dcgm.nvlink.interconnect.ber | nvlink_count_effective_ber, nvlink_count_effective_ber_float, nvlink_count_symbol_ber, nvlink_count_symbol_ber_float | ratio |\n| dcgm.nvlink.interconnect.congestion | nvlink_ppcnt_ibpc_port_xmit_wait | events/s |\n| dcgm.nvlink.interconnect.error_rate | gpu_nvlink_errors, nvlink_count_effective_errors, nvlink_count_fec_history_0, nvlink_count_fec_history_1, nvlink_count_fec_history_10, nvlink_count_fec_history_11, nvlink_count_fec_history_12, nvlink_count_fec_history_13, nvlink_count_fec_history_14, nvlink_count_fec_history_15, nvlink_count_fec_history_2, nvlink_count_fec_history_3, nvlink_count_fec_history_4, nvlink_count_fec_history_5, nvlink_count_fec_history_6, nvlink_count_fec_history_7, nvlink_count_fec_history_8, nvlink_count_fec_history_9, nvlink_count_link_recovery_events, nvlink_count_link_recovery_failed_events, nvlink_count_link_recovery_successful_events, nvlink_count_local_link_integrity_errors, nvlink_count_rx_buffer_overrun_errors, nvlink_count_rx_errors, nvlink_count_rx_general_errors, nvlink_count_rx_malformed_packet_errors, nvlink_count_rx_remote_errors, nvlink_count_rx_symbol_errors, nvlink_count_tx_discards, nvlink_crc_data_error, nvlink_crc_data_error_count_l0, nvlink_crc_data_error_count_l1, nvlink_crc_data_error_count_l10, nvlink_crc_data_error_count_l11, nvlink_crc_data_error_count_l12, nvlink_crc_data_error_count_l13, nvlink_crc_data_error_count_l14, nvlink_crc_data_error_count_l15, nvlink_crc_data_error_count_l16, nvlink_crc_data_error_count_l17, nvlink_crc_data_error_count_l2, nvlink_crc_data_error_count_l3, nvlink_crc_data_error_count_l4, nvlink_crc_data_error_count_l5, nvlink_crc_data_error_count_l6, nvlink_crc_data_error_count_l7, nvlink_crc_data_error_count_l8, nvlink_crc_data_error_count_l9, nvlink_crc_flit_error, nvlink_crc_flit_error_count_l0, nvlink_crc_flit_error_count_l1, nvlink_crc_flit_error_count_l10, nvlink_crc_flit_error_count_l11, nvlink_crc_flit_error_count_l12, nvlink_crc_flit_error_count_l13, nvlink_crc_flit_error_count_l14, nvlink_crc_flit_error_count_l15, nvlink_crc_flit_error_count_l16, nvlink_crc_flit_error_count_l17, nvlink_crc_flit_error_count_l2, nvlink_crc_flit_error_count_l3, nvlink_crc_flit_error_count_l4, nvlink_crc_flit_error_count_l5, nvlink_crc_flit_error_count_l6, nvlink_crc_flit_error_count_l7, nvlink_crc_flit_error_count_l8, nvlink_crc_flit_error_count_l9, nvlink_error_dl_crc, nvlink_error_dl_recovery, nvlink_error_dl_replay, nvlink_ppcnt_physical_successful_recovery_events, nvlink_ppcnt_plr_rcv_uncorrectable_code, nvlink_ppcnt_recovery_time_since_last, nvlink_ppcnt_recovery_total_successful_events, nvlink_pprm_oper_recovery, nvlink_recovery_error, nvlink_recovery_error_count_l0, nvlink_recovery_error_count_l1, nvlink_recovery_error_count_l10, nvlink_recovery_error_count_l11, nvlink_recovery_error_count_l12, nvlink_recovery_error_count_l13, nvlink_recovery_error_count_l14, nvlink_recovery_error_count_l15, nvlink_recovery_error_count_l16, nvlink_recovery_error_count_l17, nvlink_recovery_error_count_l2, nvlink_recovery_error_count_l3, nvlink_recovery_error_count_l4, nvlink_recovery_error_count_l5, nvlink_recovery_error_count_l6, nvlink_recovery_error_count_l7, nvlink_recovery_error_count_l8, nvlink_recovery_error_count_l9, nvlink_replay_error, nvlink_replay_error_count_l0, nvlink_replay_error_count_l1, nvlink_replay_error_count_l10, nvlink_replay_error_count_l11, nvlink_replay_error_count_l12, nvlink_replay_error_count_l13, nvlink_replay_error_count_l14, nvlink_replay_error_count_l15, nvlink_replay_error_count_l16, nvlink_replay_error_count_l17, nvlink_replay_error_count_l2, nvlink_replay_error_count_l3, nvlink_replay_error_count_l4, nvlink_replay_error_count_l5, nvlink_replay_error_count_l6, nvlink_replay_error_count_l7, nvlink_replay_error_count_l8, nvlink_replay_error_count_l9 | errors/s |\n| dcgm.nvlink.interconnect.errors | nvlink_ppcnt_plr_rcv_uncorrectable_code | errors |\n| dcgm.nvlink.interconnect.state | gpu_topology_nvlink, nvlink_get_state, nvlink_ppcnt_physical_link_down_counter, nvlink_ppcnt_plr_rcv_code_err, nvlink_ppcnt_plr_sync_events, nvlink_ppcnt_plr_xmit_retry_events, p2p_nvlink_status | state |\n| dcgm.nvlink.interconnect.throughput | nvlink_bandwidth, nvlink_bandwidth_l0, nvlink_bandwidth_l1, nvlink_bandwidth_l10, nvlink_bandwidth_l11, nvlink_bandwidth_l12, nvlink_bandwidth_l13, nvlink_bandwidth_l14, nvlink_bandwidth_l15, nvlink_bandwidth_l16, nvlink_bandwidth_l17, nvlink_bandwidth_l2, nvlink_bandwidth_l3, nvlink_bandwidth_l4, nvlink_bandwidth_l5, nvlink_bandwidth_l6, nvlink_bandwidth_l7, nvlink_bandwidth_l8, nvlink_bandwidth_l9, nvlink_count_rx, nvlink_count_tx, nvlink_l0_rx, nvlink_l0_tx, nvlink_l10_rx, nvlink_l10_tx, nvlink_l11_rx, nvlink_l11_tx, nvlink_l12_rx, nvlink_l12_tx, nvlink_l13_rx, nvlink_l13_tx, nvlink_l14_rx, nvlink_l14_tx, nvlink_l15_rx, nvlink_l15_tx, nvlink_l16_rx, nvlink_l16_tx, nvlink_l17_rx, nvlink_l17_tx, nvlink_l1_rx, nvlink_l1_tx, nvlink_l2_rx, nvlink_l2_tx, nvlink_l3_rx, nvlink_l3_tx, nvlink_l4_rx, nvlink_l4_tx, nvlink_l5_rx, nvlink_l5_tx, nvlink_l6_rx, nvlink_l6_tx, nvlink_l7_rx, nvlink_l7_tx, nvlink_l8_rx, nvlink_l8_tx, nvlink_l9_rx, nvlink_l9_tx, nvlink_rx_bandwidth, nvlink_rx_bandwidth_l0, nvlink_rx_bandwidth_l1, nvlink_rx_bandwidth_l10, nvlink_rx_bandwidth_l11, nvlink_rx_bandwidth_l12, nvlink_rx_bandwidth_l13, nvlink_rx_bandwidth_l14, nvlink_rx_bandwidth_l15, nvlink_rx_bandwidth_l16, nvlink_rx_bandwidth_l17, nvlink_rx_bandwidth_l2, nvlink_rx_bandwidth_l3, nvlink_rx_bandwidth_l4, nvlink_rx_bandwidth_l5, nvlink_rx_bandwidth_l6, nvlink_rx_bandwidth_l7, nvlink_rx_bandwidth_l8, nvlink_rx_bandwidth_l9, nvlink_rx, nvlink_tx_bandwidth, nvlink_tx_bandwidth_l0, nvlink_tx_bandwidth_l1, nvlink_tx_bandwidth_l10, nvlink_tx_bandwidth_l11, nvlink_tx_bandwidth_l12, nvlink_tx_bandwidth_l13, nvlink_tx_bandwidth_l14, nvlink_tx_bandwidth_l15, nvlink_tx_bandwidth_l16, nvlink_tx_bandwidth_l17, nvlink_tx_bandwidth_l2, nvlink_tx_bandwidth_l3, nvlink_tx_bandwidth_l4, nvlink_tx_bandwidth_l5, nvlink_tx_bandwidth_l6, nvlink_tx_bandwidth_l7, nvlink_tx_bandwidth_l8, nvlink_tx_bandwidth_l9, nvlink_tx | B/s |\n| dcgm.nvlink.interconnect.traffic | nvlink_count_rx_packets, nvlink_count_tx_packets, nvlink_ppcnt_plr_rcv_codes, nvlink_ppcnt_plr_xmit_codes, nvlink_ppcnt_plr_xmit_retry_codes | events/s |\n| dcgm.nvlink.internal.boundary | nvlink_ppcnt_recovery_time_between_last_two | state |\n| dcgm.nvlink.memory.ecc_error_rate | nvlink_ecc_data_error | errors/s |\n\n### Per nvswitch\n\nThese metrics refer to NVSwitch instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| nvswitch | nvswitch label from exporter metrics. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| dcgm.nvswitch.interconnect.nvswitch.current | nvswitch_current_iddq, nvswitch_current_iddq_dvdd, nvswitch_current_iddq_rev | value |\n| dcgm.nvswitch.interconnect.nvswitch.errors | nvswitch_fatal_errors, nvswitch_link_crc_errors, nvswitch_link_crc_errors_lane0, nvswitch_link_crc_errors_lane1, nvswitch_link_crc_errors_lane2, nvswitch_link_crc_errors_lane3, nvswitch_link_crc_errors_lane4, nvswitch_link_crc_errors_lane5, nvswitch_link_crc_errors_lane6, nvswitch_link_crc_errors_lane7, nvswitch_link_fatal_errors, nvswitch_link_flit_errors, nvswitch_link_non_fatal_errors, nvswitch_link_recovery_errors, nvswitch_link_replay_errors, nvswitch_non_fatal_errors | errors/s |\n| dcgm.nvswitch.interconnect.nvswitch.latency | nvswitch_link_latency_count_vc0, nvswitch_link_latency_count_vc1, nvswitch_link_latency_count_vc2, nvswitch_link_latency_count_vc3, nvswitch_link_latency_high_vc0, nvswitch_link_latency_high_vc1, nvswitch_link_latency_high_vc2, nvswitch_link_latency_high_vc3, nvswitch_link_latency_low_vc0, nvswitch_link_latency_low_vc1, nvswitch_link_latency_low_vc2, nvswitch_link_latency_low_vc3, nvswitch_link_latency_medium_vc0, nvswitch_link_latency_medium_vc1, nvswitch_link_latency_medium_vc2, nvswitch_link_latency_medium_vc3, nvswitch_link_latency_panic_vc0, nvswitch_link_latency_panic_vc1, nvswitch_link_latency_panic_vc2, nvswitch_link_latency_panic_vc3 | events/s |\n| dcgm.nvswitch.interconnect.nvswitch.power | nvswitch_power_dvdd, nvswitch_power_hvdd, nvswitch_power_vdd | Watts |\n| dcgm.nvswitch.interconnect.nvswitch.status | nvswitch_link_status, nvswitch_link_type, nvswitch_reset_required | state |\n| dcgm.nvswitch.interconnect.nvswitch.throughput | nvswitch_link_throughput_rx, nvswitch_link_throughput_tx, nvswitch_throughput_rx, nvswitch_throughput_tx | B/s |\n| dcgm.nvswitch.interconnect.nvswitch.topology | nvswitch_device_uuid, nvswitch_link_device_link_id, nvswitch_link_device_link_sid, nvswitch_link_id, nvswitch_link_remote_pcie_bus, nvswitch_link_remote_pcie_device, nvswitch_link_remote_pcie_domain, nvswitch_link_remote_pcie_function, nvswitch_pcie_bus, nvswitch_pcie_device, nvswitch_pcie_domain, nvswitch_pcie_function, nvswitch_phys_id | value |\n| dcgm.nvswitch.interconnect.nvswitch.voltage | nvswitch_voltage_mvolt | mV |\n| dcgm.nvswitch.internal.boundary | first_nvswitch_field_id, last_nvswitch_field_id | state |\n| dcgm.nvswitch.memory.ecc_error_rate | nvswitch_link_ecc_errors, nvswitch_link_ecc_errors_lane0, nvswitch_link_ecc_errors_lane1, nvswitch_link_ecc_errors_lane2, nvswitch_link_ecc_errors_lane3, nvswitch_link_ecc_errors_lane4, nvswitch_link_ecc_errors_lane5, nvswitch_link_ecc_errors_lane6, nvswitch_link_ecc_errors_lane7 | errors/s |\n| dcgm.nvswitch.thermal.temperature | nvswitch_temperature_current, nvswitch_temperature_limit_shutdown, nvswitch_temperature_limit_slowdown | Celsius |\n\n### Per cpu\n\nThese metrics refer to host CPU instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cpu | cpu label from exporter metrics. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| dcgm.cpu.clock.frequency | cpu_clock_current | MHz |\n| dcgm.cpu.cpu.info | cpu_model, cpu_vendor | value |\n| dcgm.cpu.cpu.power | cpu_power_limit, cpu_power_util_current | Watts |\n| dcgm.cpu.cpu.temperature | cpu_temp_critical, cpu_temp_current, cpu_temp_warning | Celsius |\n| dcgm.cpu.cpu.utilization | cpu_util, cpu_util_irq, cpu_util_nice, cpu_util_sys, cpu_util_user | % |\n| dcgm.cpu.diagnostics.results | diag_cpu_eud_result | state |\n\n### Per cpu_core\n\nThese metrics refer to host CPU core instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cpu | cpu label from exporter metrics. |\n| cpucore | cpucore label from exporter metrics. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| dcgm.cpu_core.clock.frequency | cpu_clock_current | MHz |\n| dcgm.cpu_core.cpu.info | cpu_model, cpu_vendor | value |\n| dcgm.cpu_core.cpu.power | cpu_power_limit, cpu_power_util_current | Watts |\n| dcgm.cpu_core.cpu.temperature | cpu_temp_critical, cpu_temp_current, cpu_temp_warning | Celsius |\n| dcgm.cpu_core.cpu.utilization | cpu_util, cpu_util_irq, cpu_util_nice, cpu_util_sys, cpu_util_user | % |\n| dcgm.cpu_core.diagnostics.results | diag_cpu_eud_result | state |\n\n### Per exporter\n\nThese metrics refer to exporter/global instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| job | job label from exporter metrics. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| dcgm.exporter.health.status | bind_unbind_event | state |\n| dcgm.exporter.inventory.software | cuda_driver_version, driver_version, nvml_version | value |\n\n",integration_type:"collector",id:"go.d.plugin-dcgm-Nvidia_Data_Center_GPU_Manager_(DCGM)",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/dcgm/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-dmcache",plugin_name:"go.d.plugin",module_name:"dmcache",monitored_instance:{name:"DMCache devices",link:"",icon_filename:"filesystem.svg",categories:["data-collection.storage"]},keywords:["dmcache"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# DMCache devices\n\nPlugin: go.d.plugin\nModule: dmcache\n\n## Overview\n\nThis collector monitors DMCache, providing insights into capacity usage, efficiency, and activity. It relies on the [`dmsetup`](https://man7.org/linux/man-pages/man8/dmsetup.8.html) CLI tool but avoids directly executing the binary. Instead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment. This approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **dmcache** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **dmcache**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/dmcache.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| timeout | dmsetup binary execution timeout. | 2 | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **dmcache** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the dmcache data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _dmcache_ (or scroll the list) to locate the **dmcache** collector.\n5. Click the **+** next to the **dmcache** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/dmcache.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/dmcache.conf\n```\n\n##### Examples\n\n###### Custom update_every\n\nAllows you to override the default data collection interval.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: dmcache\n update_every: 5 # Collect DMCache statistics every 5 seconds\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `dmcache` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m dmcache\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m dmcache -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `dmcache` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep dmcache\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep dmcache /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep dmcache\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per dmcache device\n\nThese metrics refer to the DMCache device.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device | Device name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| dmcache.device_cache_space_usage | free, used | bytes |\n| dmcache.device_metadata_space_usage | free, used | bytes |\n| dmcache.device_cache_read_efficiency | hits, misses | requests/s |\n| dmcache.device_cache_write_efficiency | hits, misses | requests/s |\n| dmcache.device_cache_activity | promotions, demotions | bytes/s |\n| dmcache.device_cache_dirty_size | dirty | bytes |\n\n",integration_type:"collector",id:"go.d.plugin-dmcache-DMCache_devices",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/dmcache/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-dns_query",plugin_name:"go.d.plugin",module_name:"dns_query",monitored_instance:{name:"DNS query",link:"",icon_filename:"network-wired.svg",categories:["data-collection.synthetic-testing"]},keywords:["dns"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# DNS query\n\nPlugin: go.d.plugin\nModule: dns_query\n\n## Overview\n\nThis module monitors DNS query round-trip time (RTT).\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **dns_query** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **dns_query**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/dns_query.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="All options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | domains | One or more domains/subdomains to query. A random domain from the list is selected on each iteration. | [] | yes |\n| | servers | DNS servers to query. If empty, servers from `/etc/resolv.conf` are used automatically. | [] | no |\n| | timeout | Query timeout (seconds). | 2 | no |\n| | port | DNS server port. | 53 | no |\n| | network | DNS query transport protocol. Options: `udp`, `tcp`, `tcp-tls`. | udp | no |\n| **DNS Query** | record_types | DNS record types to query. Options: A, AAAA, CNAME, MX, NS, PTR, TXT, SOA, SPF, SRV. | A | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **dns_query** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the dns_query data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _dns_query_ (or scroll the list) to locate the **dns_query** collector.\n5. Click the **+** next to the **dns_query** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/dns_query.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/dns_query.conf\n```\n\n##### Examples\n\n###### Specific DNS servers\n\nAn example configuration using Google\'s public DNS servers.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: job1\n record_types:\n - A\n - AAAA\n domains:\n - google.com\n - github.com\n - reddit.com\n servers:\n - 8.8.8.8\n - 8.8.4.4\n\n```\n{% /details %}\n###### System DNS\n\nAn example configuration using DNS servers from `/etc/resolv.conf`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: job1\n record_types:\n - A\n - AAAA\n domains:\n - google.com\n - github.com\n - reddit.com\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `dns_query` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m dns_query\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m dns_query -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `dns_query` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep dns_query\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep dns_query /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep dns_query\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ dns_query_query_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/dns_query.conf) | dns_query.query_status | DNS request type ${label:record_type} to server ${label:server} is unsuccessful |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per server\n\nThese metrics refer to the DNS server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| server | DNS server address. |\n| network | Network protocol name (tcp, udp, tcp-tls). |\n| record_type | DNS record type (e.g. A, AAAA, CNAME). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| dns_query.query_status | success, network_error, dns_error | status |\n| dns_query.query_time | query_time | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-dns_query-DNS_query",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/dnsquery/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-dnsdist",plugin_name:"go.d.plugin",module_name:"dnsdist",monitored_instance:{name:"DNSdist",link:"https://dnsdist.org/",icon_filename:"network-wired.svg",categories:["data-collection.networking"]},keywords:["dnsdist","dns"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# DNSdist\n\nPlugin: go.d.plugin\nModule: dnsdist\n\n## Overview\n\nThis collector monitors DNSDist servers.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **dnsdist** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **dnsdist**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/dnsdist.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable DNSdist built-in Webserver\n\nFor collecting metrics via HTTP, you need to [enable the built-in webserver](https://dnsdist.org/guides/webserver.html).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8083 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **dnsdist** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the dnsdist data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _dnsdist_ (or scroll the list) to locate the **dnsdist** collector.\n5. Click the **+** next to the **dnsdist** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/dnsdist.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/dnsdist.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8083\n headers:\n X-API-Key: your-api-key # static pre-shared authentication key for access to the REST API (api-key).\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8083\n headers:\n X-API-Key: \'your-api-key\' # static pre-shared authentication key for access to the REST API (api-key).\n\n - name: remote\n url: http://203.0.113.0:8083\n headers:\n X-API-Key: \'your-api-key\'\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `dnsdist` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m dnsdist\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m dnsdist -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `dnsdist` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep dnsdist\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep dnsdist /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep dnsdist\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per DNSdist instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| dnsdist.queries | all, recursive, empty | queries/s |\n| dnsdist.queries_dropped | rule_drop, dynamic_blocked, no_policy, non_queries | queries/s |\n| dnsdist.packets_dropped | acl | packets/s |\n| dnsdist.answers | self_answered, nxdomain, refused, trunc_failures | answers/s |\n| dnsdist.backend_responses | responses | responses/s |\n| dnsdist.backend_commerrors | send_errors | errors/s |\n| dnsdist.backend_errors | timeouts, servfail, non_compliant | responses/s |\n| dnsdist.cache | hits, misses | answers/s |\n| dnsdist.servercpu | system_state, user_state | ms/s |\n| dnsdist.servermem | memory_usage | MiB |\n| dnsdist.query_latency | 1ms, 10ms, 50ms, 100ms, 1sec, slow | queries/s |\n| dnsdist.query_latency_avg | 100, 1k, 10k, 1000k | microseconds |\n\n",integration_type:"collector",id:"go.d.plugin-dnsdist-DNSdist",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/dnsdist/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-dnsmasq",plugin_name:"go.d.plugin",module_name:"dnsmasq",monitored_instance:{name:"Dnsmasq",link:"https://thekelleys.org.uk/dnsmasq/doc.html",icon_filename:"dnsmasq.svg",categories:["data-collection.networking"]},keywords:["dnsmasq","dns"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Dnsmasq\n\nPlugin: go.d.plugin\nModule: dnsmasq\n\n## Overview\n\nThis collector monitors Dnsmasq servers.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **dnsmasq** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **dnsmasq**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/dnsmasq.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | Dnsmasq server address (`IP:PORT`). | 127.0.0.1:53 | yes |\n| | protocol | DNS query transport protocol. Options: `udp`, `tcp`, `tcp-tls`. | udp | no |\n| | timeout | DNS query timeout for dial, write, and read (seconds). | 1 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **dnsmasq** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the dnsmasq data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _dnsmasq_ (or scroll the list) to locate the **dnsmasq** collector.\n5. Click the **+** next to the **dnsmasq** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/dnsmasq.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/dnsmasq.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:53\n\n```\n{% /details %}\n###### Using TCP protocol\n\nLocal server with specific DNS query transport protocol.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:53\n protocol: tcp\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:53\n\n - name: remote\n address: 203.0.113.0:53\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `dnsmasq` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m dnsmasq\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m dnsmasq -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `dnsmasq` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep dnsmasq\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep dnsmasq /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep dnsmasq\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Dnsmasq instance\n\nThe metrics apply to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| dnsmasq.servers_queries | success, failed | queries/s |\n| dnsmasq.cache_performance | hist, misses | events/s |\n| dnsmasq.cache_operations | insertions, evictions | operations/s |\n| dnsmasq.cache_size | size | entries |\n\n",integration_type:"collector",id:"go.d.plugin-dnsmasq-Dnsmasq",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/dnsmasq/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-dnsmasq_dhcp",plugin_name:"go.d.plugin",module_name:"dnsmasq_dhcp",monitored_instance:{name:"Dnsmasq DHCP",link:"https://www.thekelleys.org.uk/dnsmasq/doc.html",icon_filename:"dnsmasq.svg",categories:["data-collection.networking"]},keywords:["dnsmasq","dhcp"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Dnsmasq DHCP\n\nPlugin: go.d.plugin\nModule: dnsmasq_dhcp\n\n## Overview\n\nThis collector monitors Dnsmasq DHCP leases databases, depending on your configuration.\n\nBy default, it uses:\n\n- `/var/lib/misc/dnsmasq.leases` to read leases.\n- `/etc/dnsmasq.conf` to detect dhcp-ranges.\n- `/etc/dnsmasq.d` to find additional configurations.\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAll configured dhcp-ranges are detected automatically\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **dnsmasq_dhcp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **dnsmasq_dhcp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/dnsmasq_dhcp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | leases_path | Path to dnsmasq DHCP leases file. | /var/lib/misc/dnsmasq.leases | no |\n| | conf_path | Path to dnsmasq configuration file (used to extract configured DHCP pools). | /etc/dnsmasq.conf | no |\n| | conf_dir | Path to dnsmasq configuration directory (used to extract configured DHCP pools). | /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **dnsmasq_dhcp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the dnsmasq_dhcp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _dnsmasq_dhcp_ (or scroll the list) to locate the **dnsmasq_dhcp** collector.\n5. Click the **+** next to the **dnsmasq_dhcp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/dnsmasq_dhcp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/dnsmasq_dhcp.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: dnsmasq_dhcp\n leases_path: /var/lib/misc/dnsmasq.leases\n conf_path: /etc/dnsmasq.conf\n conf_dir: /etc/dnsmasq.d\n\n```\n{% /details %}\n###### Pi-hole\n\nDnsmasq DHCP on Pi-hole.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: dnsmasq_dhcp\n leases_path: /etc/pihole/dhcp.leases\n conf_path: /etc/dnsmasq.conf\n conf_dir: /etc/dnsmasq.d\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `dnsmasq_dhcp` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m dnsmasq_dhcp\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m dnsmasq_dhcp -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `dnsmasq_dhcp` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep dnsmasq_dhcp\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep dnsmasq_dhcp /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep dnsmasq_dhcp\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ dnsmasq_dhcp_dhcp_range_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/dnsmasq_dhcp.conf) | dnsmasq_dhcp.dhcp_range_utilization | DHCP range utilization |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Dnsmasq DHCP instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| dnsmasq_dhcp.dhcp_ranges | ipv4, ipv6 | ranges |\n| dnsmasq_dhcp.dhcp_hosts | ipv4, ipv6 | hosts |\n\n### Per dhcp range\n\nThese metrics refer to the DHCP range.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| dhcp_range | DHCP range in `START_IP:END_IP` format |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| dnsmasq_dhcp.dhcp_range_utilization | used | percentage |\n| dnsmasq_dhcp.dhcp_range_allocated_leases | allocated | leases |\n\n",integration_type:"collector",id:"go.d.plugin-dnsmasq_dhcp-Dnsmasq_DHCP",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/dnsmasq_dhcp/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-docker",plugin_name:"go.d.plugin",module_name:"docker",alternative_monitored_instances:[],monitored_instance:{name:"Docker",link:"https://www.docker.com/",categories:["data-collection.containers-and-vms"],icon_filename:"docker.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["container"]},overview:"# Docker\n\nPlugin: go.d.plugin\nModule: docker\n\n## Overview\n\nThis collector monitors Docker containers state, health status and more.\n\n\nIt connects to the Docker instance via a TCP or UNIX socket and executes the following commands:\n\n- [System info](https://docs.docker.com/engine/api/v1.43/#tag/System/operation/SystemInfo).\n- [List images](https://docs.docker.com/engine/api/v1.43/#tag/Image/operation/ImageList).\n- [List containers](https://docs.docker.com/engine/api/v1.43/#tag/Container/operation/ContainerList).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nRequires netdata user to be in the docker group.\n\n### Default Behavior\n\n#### Auto-Detection\n\nIt discovers instances running on localhost by attempting to connect to a known Docker UNIX socket: `/var/run/docker.sock`.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nEnabling `collect_container_size` may result in high CPU usage depending on the version of Docker Engine.\n\n",setup:"## Setup\n\n\nYou can configure the **docker** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **docker**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/docker.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary=\"Config options\" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | Docker daemon address. For TCP sockets: `tcp://IP:PORT`. | unix:///var/run/docker.sock | yes |\n| | timeout | Request timeout (seconds). | 2 | no |\n| **Filters** | container_selector | Container selector. Defines which containers to monitor. Uses [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#readme). | * | no |\n| **Metrics Selection** | collect_container_size | Collect container writable layer size metrics. | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **docker** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the docker data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _docker_ (or scroll the list) to locate the **docker** collector.\n5. Click the **+** next to the **docker** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/docker.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/docker.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n```yaml\njobs:\n - name: local\n address: 'unix:///var/run/docker.sock'\n\n```\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n address: 'unix:///var/run/docker.sock'\n\n - name: remote\n address: 'tcp://203.0.113.10:2375'\n\n```\n{% /details %}\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `docker` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m docker\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m docker -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `docker` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep docker\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep docker /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep docker\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ docker_container_unhealthy ](https://github.com/netdata/netdata/blob/master/src/health/health.d/docker.conf) | docker.container_health_status | ${label:container_name} docker container health status is unhealthy |\n| [ docker_container_down ](https://github.com/netdata/netdata/blob/master/src/health/health.d/docker.conf) | docker.container_state | Docker container ${label:container_name} is currently exited. This alert is disabled by default. To enable it, modify the chart labels filter in the stock health configuration (docker.conf) from container_name=!* to match your container names. |\n",functions:"## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Containers\n\nRetrieves container list data equivalent to `docker ps -a`.\n\nThis function calls the Docker Container List API with `all=true` and returns both running and non-running containers in a table similar to Docker CLI output.\n\nUse cases:\n- Quickly inspect all containers (running, exited, paused, dead) from Netdata\n- Correlate container lifecycle with metric changes and alerts\n- Verify exposed ports, image tags, and container names without shell access\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Docker:container-ls` |\n| Require Cloud | yes |\n| Performance | Executes a single Docker API request (`ContainerList` with `all=true`):<br/>\u2022 No per-container inspect requests are issued<br/>\u2022 Response size grows with total container count<br/>\u2022 Large histories with many stopped containers may return more rows |\n| Security | Exposes container metadata that may include sensitive details:<br/>\u2022 Container command text may include runtime arguments<br/>\u2022 Image names, ports, and container names are visible<br/>\u2022 Restrict access to authorized operators |\n| Availability | Available when:<br/>\u2022 Docker collector is initialized and connected<br/>\u2022 Docker API list-containers request succeeds<br/>\u2022 Returns HTTP 503 while collector is initializing<br/>\u2022 Returns HTTP 500 on Docker API errors<br/>\u2022 Returns HTTP 504 on timeout |\n\n#### Prerequisites\n\nNo additional configuration is required.\n\n#### Parameters\n\nThis function has no parameters.\n\n#### Returns\n\nContainer inventory from Docker Engine. Each row represents one container returned by `docker ps -a`.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| CONTAINER ID | string | | | Short container ID (12 characters). |\n| IMAGE | string | | | Container image reference. |\n| COMMAND | string | | | Container command as reported by Docker API. |\n| CREATED | string | | | Human-readable container creation age (for example, '5 days ago'). |\n| STATUS | string | | | Docker status string (for example, 'Up 3 weeks' or 'Exited (0) 4 weeks ago'). |\n| State (Raw) | string | | hidden | Raw Docker state value (for example, running, exited, paused, restarting, dead). |\n| PORTS | string | | | Published or exposed ports summary. |\n| NAMES | string | | | Container name. |\n| Container ID (Full) | string | | hidden | Full 64-character container ID. |\n| Created (Unix) | integer | seconds | hidden | Container creation timestamp in Unix seconds. |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Docker instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| docker.containers_state | running, paused, stopped | containers |\n| docker.containers_health_status | healthy, unhealthy, not_running_unhealthy, starting, no_healthcheck | containers |\n| docker.images | active, dangling | images |\n| docker.images_size | size | bytes |\n\n### Per container\n\nMetrics related to containers. Each container provides its own set of the following metrics.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| container_name | The container's name |\n| image | The image name the container uses |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| docker.container_state | running, paused, exited, created, restarting, removing, dead | state |\n| docker.container_health_status | healthy, unhealthy, not_running_unhealthy, starting, no_healthcheck | status |\n| docker.container_writeable_layer_size | writeable_layer | size |\n\n",integration_type:"collector",id:"go.d.plugin-docker-Docker",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/docker/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-docker_engine",plugin_name:"go.d.plugin",module_name:"docker_engine",alternative_monitored_instances:[],monitored_instance:{name:"Docker Engine",link:"https://docs.docker.com/engine/",categories:["data-collection.containers-and-vms"],icon_filename:"docker.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["docker","container"]},overview:"# Docker Engine\n\nPlugin: go.d.plugin\nModule: docker_engine\n\n## Overview\n\nThis collector monitors the activity and health of Docker Engine and Docker Swarm.\n\n\nThe [built-in](https://docs.docker.com/config/daemon/prometheus/) Prometheus exporter is used to get the metrics.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nIt discovers instances running on localhost by attempting to connect to a known Docker TCP socket: `http://127.0.0.1:9323/metrics`.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **docker_engine** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **docker_engine**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/docker_engine.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable built-in Prometheus exporter\n\nTo enable built-in Prometheus exporter, follow the [official documentation](https://docs.docker.com/config/daemon/prometheus/#configure-docker).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:9323/metrics | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **docker_engine** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the docker_engine data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _docker_engine_ (or scroll the list) to locate the **docker_engine** collector.\n5. Click the **+** next to the **docker_engine** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/docker_engine.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/docker_engine.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9323/metrics\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9323/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nConfiguration with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9323/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9323/metrics\n\n - name: remote\n url: http://192.0.2.1:9323/metrics\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `docker_engine` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m docker_engine\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m docker_engine -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `docker_engine` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep docker_engine\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep docker_engine /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep docker_engine\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Docker Engine instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| docker_engine.engine_daemon_container_actions | changes, commit, create, delete, start | actions/s |\n| docker_engine.engine_daemon_container_states_containers | running, paused, stopped | containers |\n| docker_engine.builder_builds_failed_total | build_canceled, build_target_not_reachable_error, command_not_supported_error, dockerfile_empty_error, dockerfile_syntax_error, error_processing_commands_error, missing_onbuild_arguments_error, unknown_instruction_error | fails/s |\n| docker_engine.engine_daemon_health_checks_failed_total | fails | events/s |\n| docker_engine.swarm_manager_leader | is_leader | bool |\n| docker_engine.swarm_manager_object_store | nodes, services, tasks, networks, secrets, configs | objects |\n| docker_engine.swarm_manager_nodes_per_state | ready, down, unknown, disconnected | nodes |\n| docker_engine.swarm_manager_tasks_per_state | running, failed, ready, rejected, starting, shutdown, new, orphaned, preparing, pending, complete, remove, accepted, assigned | tasks |\n\n",integration_type:"collector",id:"go.d.plugin-docker_engine-Docker_Engine",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/docker_engine/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-dockerhub",plugin_name:"go.d.plugin",module_name:"dockerhub",monitored_instance:{name:"Docker Hub repository",link:"https://hub.docker.com/",icon_filename:"docker.svg",categories:["data-collection.containers-and-vms"]},keywords:["dockerhub"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Docker Hub repository\n\nPlugin: go.d.plugin\nModule: dockerhub\n\n## Overview\n\nThis collector keeps track of DockerHub repositories statistics such as the number of stars, pulls, current status, and more.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **dockerhub** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **dockerhub**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/dockerhub.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary=\"Config options\" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | repositories | List of Docker Hub repositories to monitor. | | yes |\n| | url | DockerHub repositories endpoint URL | https://hub.docker.com/v2/repositories | yes |\n| | timeout | HTTP request timeout (seconds). | 5 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **dockerhub** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the dockerhub data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _dockerhub_ (or scroll the list) to locate the **dockerhub** collector.\n5. Click the **+** next to the **dockerhub** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/dockerhub.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/dockerhub.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: dockerhub\n repositories:\n - 'user1/name1'\n - 'user2/name2'\n - 'user3/name3'\n\n```\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `dockerhub` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m dockerhub\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m dockerhub -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `dockerhub` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep dockerhub\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep dockerhub /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep dockerhub\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Docker Hub repository instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| dockerhub.pulls_sum | sum | pulls |\n| dockerhub.pulls | a dimension per repository | pulls |\n| dockerhub.pulls_rate | a dimension per repository | pulls/s |\n| dockerhub.stars | a dimension per repository | stars |\n| dockerhub.status | a dimension per repository | status |\n| dockerhub.last_updated | a dimension per repository | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-dockerhub-Docker_Hub_repository",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/dockerhub/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-dovecot",plugin_name:"go.d.plugin",module_name:"dovecot",monitored_instance:{name:"Dovecot",link:"https://www.dovecot.org/",categories:["data-collection.applications"],icon_filename:"dovecot.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["dovecot","imap","mail"]},overview:"# Dovecot\n\nPlugin: go.d.plugin\nModule: dovecot\n\n## Overview\n\nThis collector monitors Dovecot metrics about sessions, logins, commands, page faults and more.\n\n\nIt reads the server's response to the `EXPORT\\tglobal\\n` command.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAutomatically discovers and collects Dovecot statistics from the following default locations:\n\n- localhost:24242\n- unix:///var/run/dovecot/old-stats\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **dovecot** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **dovecot**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/dovecot.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable old_stats plugin\n\nTo enable `old_stats` plugin, see [Old Statistics](https://doc.dovecot.org/configuration_manual/stats/old_statistics/#old-statistics).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | Dovecot socket address (Unix or TCP). Used by the [old_stats](https://doc.dovecot.org/configuration_manual/stats/old_statistics/#old-statistics) plugin. | 127.0.0.1:24242 | yes |\n| | timeout | Connection, read, write, and name resolution timeout (seconds). | 1 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **dovecot** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the dovecot data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _dovecot_ (or scroll the list) to locate the **dovecot** collector.\n5. Click the **+** next to the **dovecot** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/dovecot.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/dovecot.conf\n```\n\n##### Examples\n\n###### Basic (TCP)\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:24242\n\n```\n{% /details %}\n###### Basic (UNIX)\n\nA basic example configuration using a UNIX socket.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: unix:///var/run/dovecot/old-stats\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:24242\n\n - name: remote\n address: 203.0.113.0:24242\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `dovecot` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m dovecot\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m dovecot -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `dovecot` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep dovecot\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep dovecot /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep dovecot\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Dovecot instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| dovecot.session | active | sessions |\n| dovecot.logins | logins | logins |\n| dovecot.auth | ok, failed | attempts/s |\n| dovecot.commands | commands | commands |\n| dovecot.context_switches | voluntary, voluntary | switches/s |\n| dovecot.io | read, write | KiB/s |\n| dovecot.net | read, write | kilobits/s |\n| dovecot.syscalls | read, write | syscalls/s |\n| dovecot.lookup | path, attr | lookups/s |\n| dovecot.cache | hits | hits/s |\n| dovecot.auth_cache | hits, misses | requests/s |\n\n",integration_type:"collector",id:"go.d.plugin-dovecot-Dovecot",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/dovecot/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-elasticsearch",module_name:"elasticsearch",plugin_name:"go.d.plugin",monitored_instance:{name:"Elasticsearch",link:"https://www.elastic.co/elasticsearch/",icon_filename:"elasticsearch.svg",categories:["data-collection.databases"]},keywords:["elastic","elasticsearch","opensearch","search engine"],related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# Elasticsearch\n\nPlugin: go.d.plugin\nModule: elasticsearch\n\n## Overview\n\nThis collector monitors the performance and health of the Elasticsearch cluster.\n\n\nIt uses [Cluster APIs](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster.html) to collect metrics.\n\nUsed endpoints:\n\n| Endpoint | Description | API |\n|------------------------|----------------------|-------------------------------------------------------------------------------------------------------------|\n| `/` | Node info | |\n| `/_nodes/stats` | Nodes metrics | [Nodes stats API](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html) |\n| `/_nodes/_local/stats` | Local node metrics | [Nodes stats API](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html) |\n| `/_cluster/health` | Cluster health stats | [Cluster health API](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-health.html) |\n| `/_cluster/stats` | Cluster metrics | [Cluster stats API](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-stats.html) |\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nElasticsearch can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on localhost by attempting to connect to port 9200:\n\n- http://127.0.0.1:9200\n- https://127.0.0.1:9200\n\n\n#### Limits\n\nBy default, this collector monitors only the node it is connected to. To monitor all cluster nodes, set the `cluster_mode` configuration option to `yes`.\n\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **elasticsearch** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **elasticsearch**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/elasticsearch.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:9200 | yes |\n| | timeout | HTTP request timeout (seconds). | 2 | no |\n| **Metrics Selection** | cluster_mode | Collect metrics for all nodes in the cluster (yes) or only the local node (no). | no | no |\n| | collect_node_stats | Collect node metrics. | yes | no |\n| | collect_cluster_health | Collect cluster health metrics. | yes | no |\n| | collect_cluster_stats | Collect cluster stats metrics. | yes | no |\n| | collect_indices_stats | Collect index metrics. | no | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Functions** | functions.top_queries.disabled | Disable the [top-queries](#top-queries) function. | no | no |\n| | functions.top_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.top_queries.limit | Maximum number of queries to return. | 500 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **elasticsearch** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the elasticsearch data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _elasticsearch_ (or scroll the list) to locate the **elasticsearch** collector.\n5. Click the **+** next to the **elasticsearch** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/elasticsearch.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/elasticsearch.conf\n```\n\n##### Examples\n\n###### Basic single node mode\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9200\n\n```\n###### Cluster mode\n\nCluster mode example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9200\n cluster_mode: yes\n\n```\n{% /details %}\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9200\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nElasticsearch with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9200\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9200\n\n - name: remote\n url: http://192.0.2.1:9200\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `elasticsearch` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m elasticsearch\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m elasticsearch -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `elasticsearch` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep elasticsearch\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep elasticsearch /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep elasticsearch\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ elasticsearch_node_indices_search_time_query ](https://github.com/netdata/netdata/blob/master/src/health/health.d/elasticsearch.conf) | elasticsearch.node_indices_search_time | search performance is degraded, queries run slowly. |\n| [ elasticsearch_node_indices_search_time_fetch ](https://github.com/netdata/netdata/blob/master/src/health/health.d/elasticsearch.conf) | elasticsearch.node_indices_search_time | search performance is degraded, fetches run slowly. |\n| [ elasticsearch_cluster_health_status_red ](https://github.com/netdata/netdata/blob/master/src/health/health.d/elasticsearch.conf) | elasticsearch.cluster_health_status | cluster health status is red. |\n| [ elasticsearch_cluster_health_status_yellow ](https://github.com/netdata/netdata/blob/master/src/health/health.d/elasticsearch.conf) | elasticsearch.cluster_health_status | cluster health status is yellow. |\n| [ elasticsearch_node_index_health_red ](https://github.com/netdata/netdata/blob/master/src/health/health.d/elasticsearch.conf) | elasticsearch.node_index_health | node index $label:index health status is red. |\n",functions:'## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Top Queries\n\nRetrieves currently running search tasks from the Elasticsearch [Tasks API](https://www.elastic.co/guide/en/elasticsearch/reference/current/tasks.html).\n\nThis function queries the `/_tasks` endpoint filtered for search actions (`*search`), providing a real-time snapshot of all active search operations across all nodes in the cluster.\n\nUse cases:\n- Identify long-running search queries that may be impacting cluster performance\n- Monitor active search workload distribution across cluster nodes\n- Debug slow or stuck search operations in real-time\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Elasticsearch:top-queries` |\n| Require Cloud | yes |\n| Performance | Queries the `/_tasks` API filtered for search actions:<br/>\u2022 Lightweight operation with minimal cluster overhead<br/>\u2022 Returns only currently active search tasks, typically a small result set |\n| Security | Task descriptions may contain query details including potentially sensitive information:<br/>\u2022 Index names and search patterns<br/>\u2022 Query terms and filter values<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to Elasticsearch/OpenSearch<br/>\u2022 The user has `monitor` or `manage` cluster privileges<br/>\u2022 Returns HTTP 503 if collector is still initializing<br/>\u2022 Returns HTTP 500 if the Tasks API query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Ensure access to Tasks API\n\nThe user must have appropriate privileges to access the Tasks API.\n\n1. For secured clusters, grant the `monitor` or `manage` cluster privilege:\n\n ```json\n {\n "cluster": ["monitor"]\n }\n ```\n\n2. Verify access to the Tasks API:\n\n ```bash\n curl -u user:password "http://localhost:9200/_tasks?actions=*search"\n ```\n\n:::info\n\n- The Tasks API returns only currently running tasks; completed tasks are not stored\n- Search tasks can be cancelled using `POST /_tasks/{task_id}/_cancel` if they are cancellable\n- Works with both Elasticsearch and OpenSearch clusters\n\n:::\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. Options include running time, start time, and task ID. Defaults to running time to show longest-running searches first. | yes | runningTime | |\n\n#### Returns\n\nReal-time snapshot of currently executing search tasks across all cluster nodes. Each row represents a single active search operation.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Task ID | string | | hidden | Unique identifier for the task in format `nodeId:taskId`. Can be used with the Task Management API to cancel long-running tasks. |\n| Node ID | string | | | Internal identifier of the node executing this search task. |\n| Node Name | string | | | Human-readable name of the node executing the search. Useful for identifying workload distribution across the cluster. |\n| Action | string | | | The search action being performed (e.g., `indices:data/read/search`). Indicates the type of search operation. |\n| Type | string | | hidden | Task type classification (typically `transport` for search tasks). |\n| Description | string | | | Detailed description of the search task including indices being searched and query details. Truncated to 4096 characters. |\n| Start Time | timestamp | | | Timestamp when the search task started executing. |\n| Running Time | duration | milliseconds | | Time elapsed since the search started. High values indicate long-running searches that may need investigation or cancellation. |\n| Cancellable | boolean | | hidden | Whether the task supports cancellation via the Task Management API. |\n| Cancelled | boolean | | hidden | Whether a cancellation request has been issued for this task. |\n\n',metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per node\n\nThese metrics refer to the cluster node.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_name | Name of the cluster. Based on the [Cluster name setting](https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html#cluster-name). |\n| node_name | Human-readable identifier for the node. Based on the [Node name setting](https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html#node-name). |\n| host | Network host for the node, based on the [Network host setting](https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html#network.host). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| elasticsearch.node_indices_indexing | index | operations/s |\n| elasticsearch.node_indices_indexing_current | index | operations |\n| elasticsearch.node_indices_indexing_time | index | milliseconds |\n| elasticsearch.node_indices_search | queries, fetches | operations/s |\n| elasticsearch.node_indices_search_current | queries, fetches | operations |\n| elasticsearch.node_indices_search_time | queries, fetches | milliseconds |\n| elasticsearch.node_indices_refresh | refresh | operations/s |\n| elasticsearch.node_indices_refresh_time | refresh | milliseconds |\n| elasticsearch.node_indices_flush | flush | operations/s |\n| elasticsearch.node_indices_flush_time | flush | milliseconds |\n| elasticsearch.node_indices_fielddata_memory_usage | used | bytes |\n| elasticsearch.node_indices_fielddata_evictions | evictions | operations/s |\n| elasticsearch.node_indices_segments_count | segments | segments |\n| elasticsearch.node_indices_segments_memory_usage_total | used | bytes |\n| elasticsearch.node_indices_segments_memory_usage | terms, stored_fields, term_vectors, norms, points, doc_values, index_writer, version_map, fixed_bit_set | bytes |\n| elasticsearch.node_indices_translog_operations | total, uncommitted | operations |\n| elasticsearch.node_indices_translog_size | total, uncommitted | bytes |\n| elasticsearch.node_file_descriptors | open | fd |\n| elasticsearch.node_jvm_heap | inuse | percentage |\n| elasticsearch.node_jvm_heap_bytes | committed, used | bytes |\n| elasticsearch.node_jvm_buffer_pools_count | direct, mapped | pools |\n| elasticsearch.node_jvm_buffer_pool_direct_memory | total, used | bytes |\n| elasticsearch.node_jvm_buffer_pool_mapped_memory | total, used | bytes |\n| elasticsearch.node_jvm_gc_count | young, old | gc/s |\n| elasticsearch.node_jvm_gc_time | young, old | milliseconds |\n| elasticsearch.node_thread_pool_queued | generic, search, search_throttled, get, analyze, write, snapshot, warmer, refresh, listener, fetch_shard_started, fetch_shard_store, flush, force_merge, management | threads |\n| elasticsearch.node_thread_pool_rejected | generic, search, search_throttled, get, analyze, write, snapshot, warmer, refresh, listener, fetch_shard_started, fetch_shard_store, flush, force_merge, management | threads |\n| elasticsearch.node_cluster_communication_packets | received, sent | pps |\n| elasticsearch.node_cluster_communication_traffic | received, sent | bytes/s |\n| elasticsearch.node_http_connections | open | connections |\n| elasticsearch.node_breakers_trips | requests, fielddata, in_flight_requests, model_inference, accounting, parent | trips/s |\n\n### Per cluster\n\nThese metrics refer to the cluster.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_name | Name of the cluster. Based on the [Cluster name setting](https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html#cluster-name). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| elasticsearch.cluster_health_status | green, yellow, red | status |\n| elasticsearch.cluster_number_of_nodes | nodes, data_nodes | nodes |\n| elasticsearch.cluster_shards_count | active_primary, active, relocating, initializing, unassigned, delayed_unaasigned | shards |\n| elasticsearch.cluster_pending_tasks | pending | tasks |\n| elasticsearch.cluster_number_of_in_flight_fetch | in_flight_fetch | fetches |\n| elasticsearch.cluster_indices_count | indices | indices |\n| elasticsearch.cluster_indices_shards_count | total, primaries, replication | shards |\n| elasticsearch.cluster_indices_docs_count | docs | docs |\n| elasticsearch.cluster_indices_store_size | size | bytes |\n| elasticsearch.cluster_indices_query_cache | hit, miss | events/s |\n| elasticsearch.cluster_nodes_by_role_count | coordinating_only, data, data_cold, data_content, data_frozen, data_hot, data_warm, ingest, master, ml, remote_cluster_client, voting_only | nodes |\n\n### Per index\n\nThese metrics refer to the index.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_name | Name of the cluster. Based on the [Cluster name setting](https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html#cluster-name). |\n| index | Name of the index. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| elasticsearch.node_index_health | green, yellow, red | status |\n| elasticsearch.node_index_shards_count | shards | shards |\n| elasticsearch.node_index_docs_count | docs | docs |\n| elasticsearch.node_index_store_size | store_size | bytes |\n\n",integration_type:"collector",id:"go.d.plugin-elasticsearch-Elasticsearch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/elasticsearch/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-opensearch",module_name:"elasticsearch",plugin_name:"go.d.plugin",monitored_instance:{name:"OpenSearch",link:"https://opensearch.org/",icon_filename:"opensearch.svg",categories:["data-collection.databases"]},keywords:["elastic","elasticsearch","opensearch","search engine"],related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# OpenSearch\n\nPlugin: go.d.plugin\nModule: elasticsearch\n\n## Overview\n\nThis collector monitors the performance and health of the Elasticsearch cluster.\n\n\nIt uses [Cluster APIs](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster.html) to collect metrics.\n\nUsed endpoints:\n\n| Endpoint | Description | API |\n|------------------------|----------------------|-------------------------------------------------------------------------------------------------------------|\n| `/` | Node info | |\n| `/_nodes/stats` | Nodes metrics | [Nodes stats API](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html) |\n| `/_nodes/_local/stats` | Local node metrics | [Nodes stats API](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html) |\n| `/_cluster/health` | Cluster health stats | [Cluster health API](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-health.html) |\n| `/_cluster/stats` | Cluster metrics | [Cluster stats API](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-stats.html) |\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nOpenSearch can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on localhost by attempting to connect to port 9200:\n\n- http://127.0.0.1:9200\n- https://127.0.0.1:9200\n\n\n#### Limits\n\nBy default, this collector monitors only the node it is connected to. To monitor all cluster nodes, set the `cluster_mode` configuration option to `yes`.\n\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **elasticsearch** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **elasticsearch**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/elasticsearch.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:9200 | yes |\n| | timeout | HTTP request timeout (seconds). | 2 | no |\n| **Metrics Selection** | cluster_mode | Collect metrics for all nodes in the cluster (yes) or only the local node (no). | no | no |\n| | collect_node_stats | Collect node metrics. | yes | no |\n| | collect_cluster_health | Collect cluster health metrics. | yes | no |\n| | collect_cluster_stats | Collect cluster stats metrics. | yes | no |\n| | collect_indices_stats | Collect index metrics. | no | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Functions** | functions.top_queries.disabled | Disable the [top-queries](#top-queries) function. | no | no |\n| | functions.top_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.top_queries.limit | Maximum number of queries to return. | 500 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **elasticsearch** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the elasticsearch data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _elasticsearch_ (or scroll the list) to locate the **elasticsearch** collector.\n5. Click the **+** next to the **elasticsearch** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/elasticsearch.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/elasticsearch.conf\n```\n\n##### Examples\n\n###### Basic single node mode\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9200\n\n```\n###### Cluster mode\n\nCluster mode example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9200\n cluster_mode: yes\n\n```\n{% /details %}\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9200\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nElasticsearch with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9200\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9200\n\n - name: remote\n url: http://192.0.2.1:9200\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `elasticsearch` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m elasticsearch\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m elasticsearch -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `elasticsearch` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep elasticsearch\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep elasticsearch /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep elasticsearch\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ elasticsearch_node_indices_search_time_query ](https://github.com/netdata/netdata/blob/master/src/health/health.d/elasticsearch.conf) | elasticsearch.node_indices_search_time | search performance is degraded, queries run slowly. |\n| [ elasticsearch_node_indices_search_time_fetch ](https://github.com/netdata/netdata/blob/master/src/health/health.d/elasticsearch.conf) | elasticsearch.node_indices_search_time | search performance is degraded, fetches run slowly. |\n| [ elasticsearch_cluster_health_status_red ](https://github.com/netdata/netdata/blob/master/src/health/health.d/elasticsearch.conf) | elasticsearch.cluster_health_status | cluster health status is red. |\n| [ elasticsearch_cluster_health_status_yellow ](https://github.com/netdata/netdata/blob/master/src/health/health.d/elasticsearch.conf) | elasticsearch.cluster_health_status | cluster health status is yellow. |\n| [ elasticsearch_node_index_health_red ](https://github.com/netdata/netdata/blob/master/src/health/health.d/elasticsearch.conf) | elasticsearch.node_index_health | node index $label:index health status is red. |\n",functions:'## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Top Queries\n\nRetrieves currently running search tasks from the Elasticsearch [Tasks API](https://www.elastic.co/guide/en/elasticsearch/reference/current/tasks.html).\n\nThis function queries the `/_tasks` endpoint filtered for search actions (`*search`), providing a real-time snapshot of all active search operations across all nodes in the cluster.\n\nUse cases:\n- Identify long-running search queries that may be impacting cluster performance\n- Monitor active search workload distribution across cluster nodes\n- Debug slow or stuck search operations in real-time\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Elasticsearch:top-queries` |\n| Require Cloud | yes |\n| Performance | Queries the `/_tasks` API filtered for search actions:<br/>\u2022 Lightweight operation with minimal cluster overhead<br/>\u2022 Returns only currently active search tasks, typically a small result set |\n| Security | Task descriptions may contain query details including potentially sensitive information:<br/>\u2022 Index names and search patterns<br/>\u2022 Query terms and filter values<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to Elasticsearch/OpenSearch<br/>\u2022 The user has `monitor` or `manage` cluster privileges<br/>\u2022 Returns HTTP 503 if collector is still initializing<br/>\u2022 Returns HTTP 500 if the Tasks API query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Ensure access to Tasks API\n\nThe user must have appropriate privileges to access the Tasks API.\n\n1. For secured clusters, grant the `monitor` or `manage` cluster privilege:\n\n ```json\n {\n "cluster": ["monitor"]\n }\n ```\n\n2. Verify access to the Tasks API:\n\n ```bash\n curl -u user:password "http://localhost:9200/_tasks?actions=*search"\n ```\n\n:::info\n\n- The Tasks API returns only currently running tasks; completed tasks are not stored\n- Search tasks can be cancelled using `POST /_tasks/{task_id}/_cancel` if they are cancellable\n- Works with both Elasticsearch and OpenSearch clusters\n\n:::\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. Options include running time, start time, and task ID. Defaults to running time to show longest-running searches first. | yes | runningTime | |\n\n#### Returns\n\nReal-time snapshot of currently executing search tasks across all cluster nodes. Each row represents a single active search operation.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Task ID | string | | hidden | Unique identifier for the task in format `nodeId:taskId`. Can be used with the Task Management API to cancel long-running tasks. |\n| Node ID | string | | | Internal identifier of the node executing this search task. |\n| Node Name | string | | | Human-readable name of the node executing the search. Useful for identifying workload distribution across the cluster. |\n| Action | string | | | The search action being performed (e.g., `indices:data/read/search`). Indicates the type of search operation. |\n| Type | string | | hidden | Task type classification (typically `transport` for search tasks). |\n| Description | string | | | Detailed description of the search task including indices being searched and query details. Truncated to 4096 characters. |\n| Start Time | timestamp | | | Timestamp when the search task started executing. |\n| Running Time | duration | milliseconds | | Time elapsed since the search started. High values indicate long-running searches that may need investigation or cancellation. |\n| Cancellable | boolean | | hidden | Whether the task supports cancellation via the Task Management API. |\n| Cancelled | boolean | | hidden | Whether a cancellation request has been issued for this task. |\n\n',metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per node\n\nThese metrics refer to the cluster node.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_name | Name of the cluster. Based on the [Cluster name setting](https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html#cluster-name). |\n| node_name | Human-readable identifier for the node. Based on the [Node name setting](https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html#node-name). |\n| host | Network host for the node, based on the [Network host setting](https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html#network.host). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| elasticsearch.node_indices_indexing | index | operations/s |\n| elasticsearch.node_indices_indexing_current | index | operations |\n| elasticsearch.node_indices_indexing_time | index | milliseconds |\n| elasticsearch.node_indices_search | queries, fetches | operations/s |\n| elasticsearch.node_indices_search_current | queries, fetches | operations |\n| elasticsearch.node_indices_search_time | queries, fetches | milliseconds |\n| elasticsearch.node_indices_refresh | refresh | operations/s |\n| elasticsearch.node_indices_refresh_time | refresh | milliseconds |\n| elasticsearch.node_indices_flush | flush | operations/s |\n| elasticsearch.node_indices_flush_time | flush | milliseconds |\n| elasticsearch.node_indices_fielddata_memory_usage | used | bytes |\n| elasticsearch.node_indices_fielddata_evictions | evictions | operations/s |\n| elasticsearch.node_indices_segments_count | segments | segments |\n| elasticsearch.node_indices_segments_memory_usage_total | used | bytes |\n| elasticsearch.node_indices_segments_memory_usage | terms, stored_fields, term_vectors, norms, points, doc_values, index_writer, version_map, fixed_bit_set | bytes |\n| elasticsearch.node_indices_translog_operations | total, uncommitted | operations |\n| elasticsearch.node_indices_translog_size | total, uncommitted | bytes |\n| elasticsearch.node_file_descriptors | open | fd |\n| elasticsearch.node_jvm_heap | inuse | percentage |\n| elasticsearch.node_jvm_heap_bytes | committed, used | bytes |\n| elasticsearch.node_jvm_buffer_pools_count | direct, mapped | pools |\n| elasticsearch.node_jvm_buffer_pool_direct_memory | total, used | bytes |\n| elasticsearch.node_jvm_buffer_pool_mapped_memory | total, used | bytes |\n| elasticsearch.node_jvm_gc_count | young, old | gc/s |\n| elasticsearch.node_jvm_gc_time | young, old | milliseconds |\n| elasticsearch.node_thread_pool_queued | generic, search, search_throttled, get, analyze, write, snapshot, warmer, refresh, listener, fetch_shard_started, fetch_shard_store, flush, force_merge, management | threads |\n| elasticsearch.node_thread_pool_rejected | generic, search, search_throttled, get, analyze, write, snapshot, warmer, refresh, listener, fetch_shard_started, fetch_shard_store, flush, force_merge, management | threads |\n| elasticsearch.node_cluster_communication_packets | received, sent | pps |\n| elasticsearch.node_cluster_communication_traffic | received, sent | bytes/s |\n| elasticsearch.node_http_connections | open | connections |\n| elasticsearch.node_breakers_trips | requests, fielddata, in_flight_requests, model_inference, accounting, parent | trips/s |\n\n### Per cluster\n\nThese metrics refer to the cluster.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_name | Name of the cluster. Based on the [Cluster name setting](https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html#cluster-name). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| elasticsearch.cluster_health_status | green, yellow, red | status |\n| elasticsearch.cluster_number_of_nodes | nodes, data_nodes | nodes |\n| elasticsearch.cluster_shards_count | active_primary, active, relocating, initializing, unassigned, delayed_unaasigned | shards |\n| elasticsearch.cluster_pending_tasks | pending | tasks |\n| elasticsearch.cluster_number_of_in_flight_fetch | in_flight_fetch | fetches |\n| elasticsearch.cluster_indices_count | indices | indices |\n| elasticsearch.cluster_indices_shards_count | total, primaries, replication | shards |\n| elasticsearch.cluster_indices_docs_count | docs | docs |\n| elasticsearch.cluster_indices_store_size | size | bytes |\n| elasticsearch.cluster_indices_query_cache | hit, miss | events/s |\n| elasticsearch.cluster_nodes_by_role_count | coordinating_only, data, data_cold, data_content, data_frozen, data_hot, data_warm, ingest, master, ml, remote_cluster_client, voting_only | nodes |\n\n### Per index\n\nThese metrics refer to the index.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_name | Name of the cluster. Based on the [Cluster name setting](https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html#cluster-name). |\n| index | Name of the index. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| elasticsearch.node_index_health | green, yellow, red | status |\n| elasticsearch.node_index_shards_count | shards | shards |\n| elasticsearch.node_index_docs_count | docs | docs |\n| elasticsearch.node_index_store_size | store_size | bytes |\n\n",integration_type:"collector",id:"go.d.plugin-elasticsearch-OpenSearch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/elasticsearch/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-envoy",plugin_name:"go.d.plugin",module_name:"envoy",monitored_instance:{name:"Envoy",link:"https://www.envoyproxy.io/",icon_filename:"envoy.svg",categories:["data-collection.web-servers-and-proxies"]},keywords:["envoy","proxy"],related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# Envoy\n\nPlugin: go.d.plugin\nModule: envoy\n\n## Overview\n\nThis collector monitors Envoy proxies. It collects server, cluster, and listener metrics.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nEnvoy can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Envoy instances running on localhost.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **envoy** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **envoy**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/envoy.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:9091/stats/prometheus | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **envoy** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the envoy data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _envoy_ (or scroll the list) to locate the **envoy** collector.\n5. Click the **+** next to the **envoy** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/envoy.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/envoy.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9901/stats/prometheus\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9901/stats/prometheus\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9901/stats/prometheus\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9901/stats/prometheus\n\n - name: remote\n url: http://192.0.2.1:9901/stats/prometheus\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `envoy` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m envoy\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m envoy -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `envoy` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep envoy\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep envoy /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep envoy\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Envoy instance\n\nEnvoy exposes metrics in Prometheus format. All metric labels are added to charts.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| envoy.server_state | live, draining, pre_initializing, initializing | state |\n| envoy.server_connections_count | connections | connections |\n| envoy.server_parent_connections_count | connections | connections |\n| envoy.server_memory_allocated_size | allocated | bytes |\n| envoy.server_memory_heap_size | heap | bytes |\n| envoy.server_memory_physical_size | physical | bytes |\n| envoy.server_uptime | uptime | seconds |\n| envoy.cluster_manager_cluster_count | active, not_active | clusters |\n| envoy.cluster_manager_cluster_changes_rate | added, modified, removed | clusters/s |\n| envoy.cluster_manager_cluster_updates_rate | cluster | updates/s |\n| envoy.cluster_manager_cluster_updated_via_merge_rate | via_merge | updates/s |\n| envoy.cluster_manager_update_merge_cancelled_rate | merge_cancelled | updates/s |\n| envoy.cluster_manager_update_out_of_merge_window_rate | out_of_merge_window | updates/s |\n| envoy.cluster_membership_endpoints_count | healthy, degraded, excluded | endpoints |\n| envoy.cluster_membership_changes_rate | membership | changes/s |\n| envoy.cluster_membership_updates_rate | success, failure, empty, no_rebuild | updates/s |\n| envoy.cluster_upstream_cx_active_count | active | connections |\n| envoy.cluster_upstream_cx_rate | created | connections/s |\n| envoy.cluster_upstream_cx_http_rate | http1, http2, http3 | connections/s |\n| envoy.cluster_upstream_cx_destroy_rate | local, remote | connections/s |\n| envoy.cluster_upstream_cx_connect_fail_rate | failed | connections/s |\n| envoy.cluster_upstream_cx_connect_timeout_rate | timeout | connections/s |\n| envoy.cluster_upstream_cx_bytes_rate | received, sent | bytes/s |\n| envoy.cluster_upstream_cx_bytes_buffered_size | received, send | bytes |\n| envoy.cluster_upstream_rq_active_count | active | requests |\n| envoy.cluster_upstream_rq_rate | requests | requests/s |\n| envoy.cluster_upstream_rq_failed_rate | cancelled, maintenance_mode, timeout, max_duration_reached, per_try_timeout, reset_local, reset_remote | requests/s |\n| envoy.cluster_upstream_rq_pending_active_count | active_pending | requests |\n| envoy.cluster_upstream_rq_pending_rate | pending | requests/s |\n| envoy.cluster_upstream_rq_pending_failed_rate | overflow, failure_eject | requests/s |\n| envoy.cluster_upstream_rq_retry_rate | request | retries/s |\n| envoy.cluster_upstream_rq_retry_success_rate | success | retries/s |\n| envoy.cluster_upstream_rq_retry_backoff_rate | exponential, ratelimited | retries/s |\n| envoy.listener_manager_listeners_count | active, warming, draining | listeners |\n| envoy.listener_manager_listener_changes_rate | added, modified, removed, stopped | listeners/s |\n| envoy.listener_manager_listener_object_events_rate | create_success, create_failure, in_place_updated | objects/s |\n| envoy.listener_admin_downstream_cx_active_count | active | connections |\n| envoy.listener_admin_downstream_cx_rate | created | connections/s |\n| envoy.listener_admin_downstream_cx_destroy_rate | destroyed | connections/s |\n| envoy.listener_admin_downstream_cx_transport_socket_connect_timeout_rate | timeout | connections/s |\n| envoy.listener_admin_downstream_cx_rejected_rate | overflow, overload, global_overflow | connections/s |\n| envoy.listener_admin_downstream_listener_filter_remote_close_rate | closed | connections/s |\n| envoy.listener_admin_downstream_listener_filter_error_rate | read | errors/s |\n| envoy.listener_admin_downstream_pre_cx_active_count | active | sockets |\n| envoy.listener_admin_downstream_pre_cx_timeout_rate | timeout | sockets/s |\n| envoy.listener_downstream_cx_active_count | active | connections |\n| envoy.listener_downstream_cx_rate | created | connections/s |\n| envoy.listener_downstream_cx_destroy_rate | destroyed | connections/s |\n| envoy.listener_downstream_cx_transport_socket_connect_timeout_rate | timeout | connections/s |\n| envoy.listener_downstream_cx_rejected_rate | overflow, overload, global_overflow | connections/s |\n| envoy.listener_downstream_listener_filter_remote_close_rate | closed | connections/s |\n| envoy.listener_downstream_listener_filter_error_rate | read | errors/s |\n| envoy.listener_downstream_pre_cx_active_count | active | sockets |\n| envoy.listener_downstream_pre_cx_timeout_rate | timeout | sockets/s |\n\n",integration_type:"collector",id:"go.d.plugin-envoy-Envoy",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/envoy/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-ethtool",plugin_name:"go.d.plugin",module_name:"ethtool",monitored_instance:{name:"Optical modules",link:"",icon_filename:"network-wired.svg",categories:["data-collection.networking"]},keywords:["sfp","ddm","optic"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Optical modules\n\nPlugin: go.d.plugin\nModule: ethtool\n\n## Overview\n\nThis collector monitors optical transceiver modules' diagnostic parameters (temperature, voltage, laser bias current, transmit/receive power levels) from network interfaces equipped with modules that support Digital Diagnostic Monitoring (DDM). It relies on the [`ethtool`](https://man7.org/linux/man-pages/man8/ethtool.8.html) CLI tool but avoids directly executing the binary. Instead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment. This approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **ethtool** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **ethtool**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/ethtool.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| timeout | Timeout for executing the binary, specified in seconds. | 2 | no |\n| optical_interfaces | Space-separated list of optical interface names which must have optical transceiver modules with [DDM](https://en.wikipedia.org/wiki/Small_Form-factor_Pluggable#Digital_diagnostics_monitoring). | | yes |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **ethtool** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the ethtool data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _ethtool_ (or scroll the list) to locate the **ethtool** collector.\n5. Click the **+** next to the **ethtool** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/ethtool.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/ethtool.conf\n```\n\n##### Examples\n\n###### Custom binary path\n\nThe executable is not in the directories specified in the PATH environment variable.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: ethtool\n binary_path: /usr/local/sbin/ethtool\n optical_interfaces: "enp1s0 enp1s1 enp2s0"\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `ethtool` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m ethtool\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m ethtool -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `ethtool` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep ethtool\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep ethtool /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep ethtool\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Optical Transceiver Module\n\nMetrics collected from optical transceiver modules that support Digital Diagnostic Monitoring (DDM).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| iface | Network interface name where the optical transceiver module is installed. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ethtool.optical_module_receiver_signal_power | rx_power | dBm |\n| ethtool.optical_module_laser_output_power | tx_power | dBm |\n| ethtool.optical_module_laser_bias_current | bias_current | mA |\n| ethtool.optical_module_temperature | temperature | Celsius |\n| ethtool.optical_module_voltage | voltage | Volts |\n\n",integration_type:"collector",id:"go.d.plugin-ethtool-Optical_modules",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/ethtool/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-exim",plugin_name:"go.d.plugin",module_name:"exim",monitored_instance:{name:"Exim",link:"https://www.exim.org/",icon_filename:"exim.jpg",categories:["data-collection.applications"]},keywords:["exim","mail","email"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Exim\n\nPlugin: go.d.plugin\nModule: exim\n\n## Overview\n\nThis collector monitors Exim mail queue. It relies on the [`exim`](https://www.exim.org/exim-html-3.20/doc/html/spec_5.html) CLI tool but avoids directly executing the binary. Instead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment. This approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.\nExecuted commands:\n- `exim -bpc`\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **exim** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **exim**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/exim.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| timeout | exim binary execution timeout. | 2 | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **exim** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the exim data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _exim_ (or scroll the list) to locate the **exim** collector.\n5. Click the **+** next to the **exim** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/exim.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/exim.conf\n```\n\n##### Examples\n\n###### Custom update_every\n\nAllows you to override the default data collection interval.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: exim\n update_every: 5 # Collect logical volume statistics every 5 seconds\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `exim` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m exim\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m exim -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `exim` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep exim\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep exim /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep exim\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Exim instance\n\nThese metrics refer to the the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| exim.qemails | emails | emails |\n\n",integration_type:"collector",id:"go.d.plugin-exim-Exim",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/exim/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-fail2ban",plugin_name:"go.d.plugin",module_name:"fail2ban",monitored_instance:{name:"Fail2ban",link:"https://github.com/fail2ban/fail2ban#readme",icon_filename:"fail2ban.png",categories:["data-collection.applications"]},keywords:["fail2ban","security","authentication","authorization"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Fail2ban\n\nPlugin: go.d.plugin\nModule: fail2ban\n\n## Overview\n\nThis collector tracks two main metrics for each jail: currently banned IPs and active failure incidents. It relies on the [`fail2ban-client`](https://linux.die.net/man/1/fail2ban-client) CLI tool but avoids directly executing the binary. Instead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment. This approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **fail2ban** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **fail2ban**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/fail2ban.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### For Netdata running in a Docker container\n\n1. **Install Fail2ban client**.\n\n Ensure `fail2ban-client` is available in the container by setting the environment variable `NETDATA_EXTRA_DEB_PACKAGES=fail2ban` when starting the container.\n\n2. **Mount host\'s `/var/run` directory**.\n\n Mount the host machine\'s `/var/run` directory to `/host/var/run` inside your Netdata container. This grants Netdata access to the Fail2ban socket file, typically located at `/var/run/fail2ban/fail2ban.sock`.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| timeout | fail2ban-client binary execution timeout. | 2 | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **fail2ban** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the fail2ban data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _fail2ban_ (or scroll the list) to locate the **fail2ban** collector.\n5. Click the **+** next to the **fail2ban** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/fail2ban.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/fail2ban.conf\n```\n\n##### Examples\n\n###### Custom update_every\n\nAllows you to override the default data collection interval.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: fail2ban\n update_every: 5 # Collect Fail2Ban jails statistics every 5 seconds\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `fail2ban` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m fail2ban\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m fail2ban -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `fail2ban` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep fail2ban\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep fail2ban /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep fail2ban\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per jail\n\nThese metrics refer to the Jail.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| jail | Jail's name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| fail2ban.jail_banned_ips | banned | addresses |\n| fail2ban.jail_active_failures | active_failures | failures |\n\n",integration_type:"collector",id:"go.d.plugin-fail2ban-Fail2ban",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/fail2ban/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-filecheck",plugin_name:"go.d.plugin",module_name:"filecheck",monitored_instance:{name:"Files and directories",link:"",icon_filename:"filesystem.svg",categories:["data-collection.synthetic-testing"]},keywords:["files","directories"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Files and directories\n\nPlugin: go.d.plugin\nModule: filecheck\n\n## Overview\n\nThis collector monitors the existence, last modification time, and size of arbitrary files and directories on the system.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThis collector requires the DAC_READ_SEARCH capability when monitoring files not normally accessible to the Netdata user, but it is set automatically during installation, so no manual configuration is needed.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **filecheck** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **filecheck**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/filecheck.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary=\"Config options\" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | [files](#option-target-files) | File selector. Defines which files to monitor. | | yes |\n| | [dirs](#option-target-dirs) | Directory selector. Defines which directories to monitor. | | yes |\n| **Discovery** | discovery_every | Files and directories discovery interval (seconds). | 60 | no |\n\n<a id=\"option-target-files\"></a>\n##### files\n\nFiles matching the selector will be monitored.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 OR pattern4)\n- Pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match)\n- Syntax:\n\n```yaml\nfiles:\n includes:\n - pattern1\n - pattern2\n excludes:\n - pattern3\n - pattern4\n```\n\n\n<a id=\"option-target-dirs\"></a>\n##### dirs\n\nDirectories matching the selector will be monitored.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 OR pattern4)\n- Pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match)\n- Syntax:\n\n```yaml\ndirs:\n includes:\n - pattern1\n - pattern2\n excludes:\n - pattern3\n - pattern4\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **filecheck** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the filecheck data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _filecheck_ (or scroll the list) to locate the **filecheck** collector.\n5. Click the **+** next to the **filecheck** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/filecheck.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/filecheck.conf\n```\n\n##### Examples\n\n###### Files\n\nFiles monitoring example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: files_example\n files:\n include:\n - '/path/to/file1'\n - '/path/to/file2'\n - '/path/to/*.log'\n\n```\n{% /details %}\n###### Directories\n\nDirectories monitoring example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: files_example\n dirs:\n collect_dir_size: no\n include:\n - '/path/to/dir1'\n - '/path/to/dir2'\n - '/path/to/dir3*'\n\n```\n{% /details %}\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `filecheck` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m filecheck\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m filecheck -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `filecheck` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep filecheck\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep filecheck /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep filecheck\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per file\n\nThese metrics refer to the File.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| file_path | File absolute path |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| filecheck.file_existence_status | exist, not_exist | status |\n| filecheck.file_modification_time_ago | mtime_ago | seconds |\n| filecheck.file_size_bytes | size | bytes |\n\n### Per directory\n\nThese metrics refer to the Directory.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| dir_path | Directory absolute path |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| filecheck.dir_existence_status | exist, not_exist | status |\n| filecheck.dir_modification_time_ago | mtime_ago | seconds |\n| filecheck.dir_size_bytes | size | bytes |\n| filecheck.dir_files count | files | files |\n\n",integration_type:"collector",id:"go.d.plugin-filecheck-Files_and_directories",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/filecheck/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-fluentd",plugin_name:"go.d.plugin",module_name:"fluentd",monitored_instance:{name:"Fluentd",link:"https://www.fluentd.org/",icon_filename:"fluentd.svg",categories:["data-collection.applications"]},keywords:["fluentd","logging"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Fluentd\n\nPlugin: go.d.plugin\nModule: fluentd\n\n## Overview\n\nThis collector monitors Fluentd servers.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **fluentd** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **fluentd**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/fluentd.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable monitor agent\n\nTo enable monitor agent, follow the [official documentation](https://docs.fluentd.org/v1.0/articles/monitoring-rest-api).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:24220 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **fluentd** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the fluentd data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _fluentd_ (or scroll the list) to locate the **fluentd** collector.\n5. Click the **+** next to the **fluentd** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/fluentd.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/fluentd.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:24220\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:24220\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nFluentd with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:24220\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:24220\n\n - name: remote\n url: http://192.0.2.1:24220\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `fluentd` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m fluentd\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m fluentd -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `fluentd` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep fluentd\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep fluentd /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep fluentd\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Fluentd instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| fluentd.retry_count | a dimension per plugin | count |\n| fluentd.buffer_queue_length | a dimension per plugin | queue_length |\n| fluentd.buffer_total_queued_size | a dimension per plugin | queued_size |\n\n",integration_type:"collector",id:"go.d.plugin-fluentd-Fluentd",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/fluentd/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-freeradius",plugin_name:"go.d.plugin",module_name:"freeradius",monitored_instance:{name:"FreeRADIUS",link:"https://freeradius.org/",categories:["data-collection.applications"],icon_filename:"freeradius.svg"},keywords:["freeradius","radius"],info_provided_to_referring_integrations:{description:""},related_resources:{integrations:{list:[]}}},overview:"# FreeRADIUS\n\nPlugin: go.d.plugin\nModule: freeradius\n\n## Overview\n\nThis collector monitors FreeRADIUS servers.\n\nIt collect metrics by sending [status-server](https://wiki.freeradius.org/config/Status) messages to the server.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nIt automatically detects FreeRadius instances running on localhost.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **freeradius** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **freeradius**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/freeradius.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable status server\n\nTo enable status server, follow the [official documentation](https://wiki.freeradius.org/config/Status).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | FreeRADIUS server address. | 127.0.0.1 | yes |\n| | timeout | Connection, read, and write timeout (seconds). | 1 | no |\n| | port | FreeRADIUS server port. | 18121 | no |\n| **Auth** | secret | FreeRADIUS shared secret. | adminsecret | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **freeradius** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the freeradius data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _freeradius_ (or scroll the list) to locate the **freeradius** collector.\n5. Click the **+** next to the **freeradius** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/freeradius.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/freeradius.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1\n port: 18121\n secert: adminsecret\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1\n port: 18121\n secert: adminsecret\n\n - name: remote\n address: 192.0.2.1\n port: 18121\n secert: adminsecret\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `freeradius` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m freeradius\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m freeradius -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `freeradius` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep freeradius\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep freeradius /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep freeradius\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per FreeRADIUS instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| freeradius.authentication | requests, responses | packets/s |\n| freeradius.authentication_access_responses | accepts, rejects, challenges | packets/s |\n| freeradius.bad_authentication | dropped, duplicate, invalid, malformed, unknown-types | packets/s |\n| freeradius.proxy_authentication | requests, responses | packets/s |\n| freeradius.proxy_authentication_access_responses | accepts, rejects, challenges | packets/s |\n| freeradius.proxy_bad_authentication | dropped, duplicate, invalid, malformed, unknown-types | packets/s |\n| freeradius.accounting | requests, responses | packets/s |\n| freeradius.bad_accounting | dropped, duplicate, invalid, malformed, unknown-types | packets/s |\n| freeradius.proxy_accounting | requests, responses | packets/s |\n| freeradius.proxy_bad_accounting | dropped, duplicate, invalid, malformed, unknown-types | packets/s |\n\n",integration_type:"collector",id:"go.d.plugin-freeradius-FreeRADIUS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/freeradius/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-gearman",plugin_name:"go.d.plugin",module_name:"gearman",monitored_instance:{name:"Gearman",link:"https://gearman.org/",categories:["data-collection.applications"],icon_filename:"gearman.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["gearman"]},overview:"# Gearman\n\nPlugin: go.d.plugin\nModule: gearman\n\n## Overview\n\nMonitors jobs activity, priority and available workers. It collects summary and function-specific statistics.\n\n\nThis collector connects to a Gearman instance via TCP socket and executes the following commands:\n\n- status\n- priority-status\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Gearman instances running on localhost that are listening on port 4730.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **gearman** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **gearman**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/gearman.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | Gearman server address (`IP:PORT`). | 127.0.0.1:11211 | yes |\n| | timeout | Connection, read, write, and name resolution timeout (seconds). | 1 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **gearman** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the gearman data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _gearman_ (or scroll the list) to locate the **gearman** collector.\n5. Click the **+** next to the **gearman** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/gearman.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/gearman.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:4730\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:4730\n\n - name: remote\n address: 203.0.113.0:4730\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `gearman` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m gearman\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m gearman -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `gearman` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep gearman\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep gearman /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep gearman\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Gearman instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| gearman.queued_jobs_activity | running, waiting | jobs |\n| gearman.queued_jobs_priority | high, normal, low | jobs |\n\n### Per Gearman instance\n\nThese metrics refer to the Function (task).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| function_name | Function name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| gearman.function_queued_jobs_activity | running, waiting | jobs |\n| gearman.function_queued_jobs_priority | high, normal, low | jobs |\n| gearman.function_workers | available | workers |\n\n",integration_type:"collector",id:"go.d.plugin-gearman-Gearman",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/gearman/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-geth",plugin_name:"go.d.plugin",module_name:"geth",monitored_instance:{name:"Go-ethereum",link:"https://github.com/ethereum/go-ethereum",icon_filename:"geth.png",categories:["data-collection.applications"]},keywords:["geth","ethereum","blockchain"],related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# Go-ethereum\n\nPlugin: go.d.plugin\nModule: geth\n\n## Overview\n\nThis collector monitors Go-ethereum instances.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nGo-ethereum can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Go-ethereum instances running on localhost.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **geth** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **geth**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/geth.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 1 | no |\n| autodetection_retry | Recheck interval in seconds. Zero means no recheck will be scheduled. | 0 | no |\n| url | Server URL. | http://127.0.0.1:6060/debug/metrics/prometheus | yes |\n| timeout | HTTP request timeout. | 1 | no |\n| username | Username for basic HTTP authentication. | | no |\n| password | Password for basic HTTP authentication. | | no |\n| proxy_url | Proxy URL. | | no |\n| proxy_username | Username for proxy basic HTTP authentication. | | no |\n| proxy_password | Password for proxy basic HTTP authentication. | | no |\n| method | HTTP request method. | GET | no |\n| body | HTTP request body. | | no |\n| headers | HTTP request headers. | | no |\n| not_follow_redirects | Redirect handling policy. Controls whether the client follows redirects. | no | no |\n| tls_skip_verify | Server certificate chain and hostname validation policy. Controls whether the client performs this check. | no | no |\n| tls_ca | Certification authority that the client uses when verifying the server\'s certificates. | | no |\n| tls_cert | Client TLS certificate. | | no |\n| tls_key | Client TLS key. | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **geth** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the geth data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _geth_ (or scroll the list) to locate the **geth** collector.\n5. Click the **+** next to the **geth** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/geth.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/geth.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:6060/debug/metrics/prometheus\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:6060/debug/metrics/prometheus\n username: username\n password: password\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:6060/debug/metrics/prometheus\n\n - name: remote\n url: http://192.0.2.1:6060/debug/metrics/prometheus\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `geth` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m geth\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m geth -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `geth` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep geth\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep geth /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep geth\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Go-ethereum instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| geth.eth_db_chaindata_ancient_io_rate | reads, writes | bytes/s |\n| geth.eth_db_chaindata_ancient_io | reads, writes | bytes |\n| geth.eth_db_chaindata_disk_io | reads, writes | bytes |\n| geth.goroutines | goroutines | goroutines |\n| geth.eth_db_chaindata_disk_io_rate | reads, writes | bytes/s |\n| geth.chaindata_db_size | level_db, ancient_db | bytes |\n| geth.chainhead | block, receipt, header | block |\n| geth.tx_pool_pending | invalid, pending, local, discard, no_funds, ratelimit, replace | transactions |\n| geth.tx_pool_current | invalid, pending, local, pool | transactions |\n| geth.tx_pool_queued | discard, eviction, no_funds, ratelimit | transactions |\n| geth.p2p_bandwidth | ingress, egress | bytes/s |\n| geth.reorgs | executed | reorgs |\n| geth.reorgs_blocks | added, dropped | blocks |\n| geth.p2p_peers | peers | peers |\n| geth.p2p_peers_calls | dials, serves | calls/s |\n| geth.rpc_calls | failed, successful | calls/s |\n\n",integration_type:"collector",id:"go.d.plugin-geth-Go-ethereum",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/geth/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-haproxy",plugin_name:"go.d.plugin",module_name:"haproxy",monitored_instance:{name:"HAProxy",link:"https://www.haproxy.org/",icon_filename:"haproxy.svg",categories:["data-collection.web-servers-and-proxies"]},keywords:["haproxy","web","webserver","http","proxy"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# HAProxy\n\nPlugin: go.d.plugin\nModule: haproxy\n\n## Overview\n\nThis collector monitors HAProxy servers.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **haproxy** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **haproxy**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/haproxy.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable PROMEX addon.\n\nTo enable PROMEX addon, follow the [official documentation](https://github.com/haproxy/haproxy/tree/master/addons/promex).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8404/metrics | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **haproxy** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the haproxy data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _haproxy_ (or scroll the list) to locate the **haproxy** collector.\n5. Click the **+** next to the **haproxy** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/haproxy.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/haproxy.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8404/metrics\n\n```\n{% /details %}\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8404/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nNGINX Plus with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:8404/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8404/metrics\n\n - name: remote\n url: http://192.0.2.1:8404/metrics\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `haproxy` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m haproxy\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m haproxy -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `haproxy` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep haproxy\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep haproxy /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep haproxy\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per HAProxy instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| haproxy.backend_current_sessions | a dimension per proxy | sessions |\n| haproxy.backend_sessions | a dimension per proxy | sessions/s |\n| haproxy.backend_response_time_average | a dimension per proxy | milliseconds |\n| haproxy.backend_queue_time_average | a dimension per proxy | milliseconds |\n| haproxy.backend_current_queue | a dimension per proxy | requests |\n\n### Per proxy\n\nThese metrics refer to the Proxy.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| haproxy.backend_http_responses | 1xx, 2xx, 3xx, 4xx, 5xx, other | responses/s |\n| haproxy.backend_network_io | in, out | bytes/s |\n\n",integration_type:"collector",id:"go.d.plugin-haproxy-HAProxy",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/haproxy/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-hddtemp",plugin_name:"go.d.plugin",module_name:"hddtemp",monitored_instance:{name:"HDD temperature",link:"https://linux.die.net/man/8/hddtemp",categories:["data-collection.storage"],icon_filename:"hard-drive.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["hardware","hdd temperature","disk temperature","temperature"]},overview:"# HDD temperature\n\nPlugin: go.d.plugin\nModule: hddtemp\n\n## Overview\n\nThis collector monitors disk temperatures.\n\n\nIt retrieves temperature data for attached disks by querying the hddtemp daemon at regular intervals.\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, this collector will attempt to connect to the `hddtemp` daemon on `127.0.0.1:7634`\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **hddtemp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **hddtemp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/hddtemp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install hddtemp\n\nInstall `hddtemp` using your distribution\'s package manager.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | hddtemp server address (`IP:PORT`). | 127.0.0.1:7634 | yes |\n| | timeout | Connection, read, write, and name resolution timeout (seconds). | 1 | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **hddtemp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the hddtemp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _hddtemp_ (or scroll the list) to locate the **hddtemp** collector.\n5. Click the **+** next to the **hddtemp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/hddtemp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/hddtemp.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:7634\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:7634\n\n - name: remote\n address: 203.0.113.0:7634\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `hddtemp` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m hddtemp\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m hddtemp -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `hddtemp` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep hddtemp\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep hddtemp /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep hddtemp\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per disk\n\nThese metrics refer to the Disk.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| disk_id | Disk identifier. It is derived from the device path (e.g. sda or ata-HUP722020APA330_BFJ0WS3F) |\n| model | Disk model |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| hddtemp.disk_temperature | temperature | Celsius |\n| hddtemp.disk_temperature_sensor_status | ok, err, na, unk, nos, slp | status |\n\n",integration_type:"collector",id:"go.d.plugin-hddtemp-HDD_temperature",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/hddtemp/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-hfs",plugin_name:"go.d.plugin",module_name:"hfs",monitored_instance:{name:"Hadoop Distributed File System (HDFS)",link:"https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html",icon_filename:"hadoop.svg",categories:["data-collection.storage"]},keywords:["hdfs","hadoop"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Hadoop Distributed File System (HDFS)\n\nPlugin: go.d.plugin\nModule: hfs\n\n## Overview\n\nThis collector monitors HDFS nodes.\n\nNetdata accesses HDFS metrics over `Java Management Extensions` (JMX) through the web interface of an HDFS daemon.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **hfs** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **hfs**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/hdfs.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:9870/jmx | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **hfs** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the hfs data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _hfs_ (or scroll the list) to locate the **hfs** collector.\n5. Click the **+** next to the **hfs** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/hdfs.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/hdfs.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9870/jmx\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9870/jmx\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9870/jmx\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9870/jmx\n\n - name: remote\n url: http://192.0.2.1:9870/jmx\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `hfs` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m hfs\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m hfs -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `hfs` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep hfs\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep hfs /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep hfs\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ hdfs_capacity_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/hdfs.conf) | hdfs.capacity | summary datanodes space capacity utilization |\n| [ hdfs_missing_blocks ](https://github.com/netdata/netdata/blob/master/src/health/health.d/hdfs.conf) | hdfs.blocks | number of missing blocks |\n| [ hdfs_stale_nodes ](https://github.com/netdata/netdata/blob/master/src/health/health.d/hdfs.conf) | hdfs.data_nodes | number of datanodes marked stale due to delayed heartbeat |\n| [ hdfs_dead_nodes ](https://github.com/netdata/netdata/blob/master/src/health/health.d/hdfs.conf) | hdfs.data_nodes | number of datanodes which are currently dead |\n| [ hdfs_num_failed_volumes ](https://github.com/netdata/netdata/blob/master/src/health/health.d/hdfs.conf) | hdfs.num_failed_volumes | number of failed volumes |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Hadoop Distributed File System (HDFS) instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit | DataNode | NameNode |\n|:------|:----------|:----|:---:|:---:|\n| hdfs.heap_memory | committed, used | MiB | \u2022 | \u2022 |\n| hdfs.gc_count_total | gc | events/s | \u2022 | \u2022 |\n| hdfs.gc_time_total | ms | ms | \u2022 | \u2022 |\n| hdfs.gc_threshold | info, warn | events/s | \u2022 | \u2022 |\n| hdfs.threads | new, runnable, blocked, waiting, timed_waiting, terminated | num | \u2022 | \u2022 |\n| hdfs.logs_total | info, error, warn, fatal | logs/s | \u2022 | \u2022 |\n| hdfs.rpc_bandwidth | received, sent | kilobits/s | \u2022 | \u2022 |\n| hdfs.rpc_calls | calls | calls/s | \u2022 | \u2022 |\n| hdfs.open_connections | open | connections | \u2022 | \u2022 |\n| hdfs.call_queue_length | length | num | \u2022 | \u2022 |\n| hdfs.avg_queue_time | time | ms | \u2022 | \u2022 |\n| hdfs.avg_processing_time | time | ms | \u2022 | \u2022 |\n| hdfs.capacity | remaining, used | KiB | | \u2022 |\n| hdfs.used_capacity | dfs, non_dfs | KiB | | \u2022 |\n| hdfs.load | load | load | | \u2022 |\n| hdfs.volume_failures_total | failures | events/s | | \u2022 |\n| hdfs.files_total | files | num | | \u2022 |\n| hdfs.blocks_total | blocks | num | | \u2022 |\n| hdfs.blocks | corrupt, missing, under_replicated | num | | \u2022 |\n| hdfs.data_nodes | live, dead, stale | num | | \u2022 |\n| hdfs.datanode_capacity | remaining, used | KiB | \u2022 | |\n| hdfs.datanode_used_capacity | dfs, non_dfs | KiB | \u2022 | |\n| hdfs.datanode_failed_volumes | failed volumes | num | \u2022 | |\n| hdfs.datanode_bandwidth | reads, writes | KiB/s | \u2022 | |\n\n",integration_type:"collector",id:"go.d.plugin-hfs-Hadoop_Distributed_File_System_(HDFS)",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/hdfs/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-hpssa",plugin_name:"go.d.plugin",module_name:"hpssa",monitored_instance:{name:"HPE Smart Arrays",link:"https://buy.hpe.com/us/en/options/controller-controller-options/smart-array-controllers-smart-host-bus-adapters/c/7109730",icon_filename:"hp.svg",categories:["data-collection.storage"]},keywords:["storage","raid-controller","hp","hpssa","array"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# HPE Smart Arrays\n\nPlugin: go.d.plugin\nModule: hpssa\n\n## Overview\n\nMonitors the health of HPE Smart Arrays by tracking the status of controllers, arrays, logical and physical drives in your storage system.\nIt relies on the `ssacli` CLI tool but avoids directly executing the binary.\nInstead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment.\nThis approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.\n\nExecuted commands:\n- `ssacli ctrl all show config detail`\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **hpssa** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **hpssa**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/ssacli.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install ssacli\n\nSee [official installation instructions](https://support.hpe.com/connect/s/softwaredetails?language=en_US&collectionId=MTX-0cb3f808e2514d3d).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| timeout | ssacli binary execution timeout. | 2 | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **hpssa** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the hpssa data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _hpssa_ (or scroll the list) to locate the **hpssa** collector.\n5. Click the **+** next to the **hpssa** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/ssacli.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/ssacli.conf\n```\n\n##### Examples\n\n###### Custom update_every\n\nAllows you to override the default data collection interval.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: hpssa\n update_every: 5 # Collect HPE Smart Array statistics every 5 seconds\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `hpssa` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m hpssa\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m hpssa -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `hpssa` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep hpssa\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep hpssa /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep hpssa\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per controller\n\nThese metrics refer to the Controller.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| slot | Slot number |\n| model | Controller model |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| hpssa.controller_status | ok, nok | status |\n| hpssa.controller_temperature | temperature | Celsius |\n| hpssa.controller_cache_module_presence_status | present, not_present | status |\n| hpssa.controller_cache_module_status | ok, nok | status |\n| hpssa.controller_cache_module_temperature | temperature | Celsius |\n| hpssa.controller_cache_module_battery_status | ok, nok | status |\n\n### Per array\n\nThese metrics refer to the Array.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| slot | Slot number |\n| array_id | Array id |\n| interface_type | Array interface type (e.g. SATA) |\n| array_type | Array type (e.g. Data) |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| hpssa.array_status | ok, nok | status |\n\n### Per logical drive\n\nThese metrics refer to the Logical Drive.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| slot | Slot number |\n| array_id | Array id |\n| logical_drive_id | Logical Drive id (number) |\n| disk_name | Disk name (e.g. /dev/sda) |\n| drive_type | Drive type (e.g. Data) |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| hpssa.logical_drive_status | ok, nok | status |\n\n### Per physical drive\n\nThese metrics refer to the Physical Drive.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| slot | Slot number |\n| array_id | Array id or "na" if unassigned |\n| logical_drive_id | Logical Drive id or "na" if unassigned |\n| location | Drive location in port:box:bay format (e.g. 1I:1:1) |\n| interface_type | Drive interface type (e.g. SATA) |\n| drive_type | Drive type (e.g. Data Drive, Unassigned Drive) |\n| model | Drive model |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| hpssa.physical_drive_status | ok, nok | status |\n| hpssa.physical_drive_temperature | temperature | status |\n\n',integration_type:"collector",id:"go.d.plugin-hpssa-HPE_Smart_Arrays",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/hpssa/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-httpcheck",plugin_name:"go.d.plugin",module_name:"httpcheck",monitored_instance:{name:"HTTP Endpoints",link:"",icon_filename:"globe.svg",categories:["data-collection.synthetic-testing"]},keywords:["webserver"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# HTTP Endpoints\n\nPlugin: go.d.plugin\nModule: httpcheck\n\n## Overview\n\nThis collector monitors HTTP servers availability status and response time.\n\nPossible statuses:\n\n| Status | Description |\n|---------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| success | HTTP request completed successfully with a status code matching the configured `status_accepted` range (default: 200), and the response body and headers (if configured) match expectations. |\n| timeout | HTTP request timed out before receiving a response (default: 1 second). |\n| no_connection | Failed to establish a connection to the target. |\n| redirect | Received a redirect response (3xx status code) while `not_follow_redirects` is configured. |\n| bad_status | HTTP request completed with a status code outside the configured `status_accepted` range (default: non-200). |\n| bad_content | HTTP request completed successfully but the response body does not match the expected content (when using `response_match`). |\n| bad_header | HTTP request completed successfully but response headers do not match the expected values (when using `header_match`). |\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **httpcheck** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **httpcheck**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/httpcheck.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **Validation** | status_accepted | HTTP accepted response statuses. Anything else results in \'bad status\' in the status chart. | [200] | no |\n| | response_match | If the status code is accepted, match the response body against this regular expression. | | no |\n| | header_match | A set of rules to check for specific key-value pairs in response headers. | [] | no |\n| | header_match.exclude | When yes, the rule asserts the key-value pair must be absent. | no | no |\n| | header_match.key | Exact HTTP header name to check. | | yes |\n| | header_match.value | The [pattern](https://github.com/netdata/netdata/tree/master/src/go/pkg/matcher#supported-format) to match against the header\'s value. | | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | cookie_file | Path to cookie file. See [cookie file format](https://everything.curl.dev/http/cookies/fileformat). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **httpcheck** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the httpcheck data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _httpcheck_ (or scroll the list) to locate the **httpcheck** collector.\n5. Click the **+** next to the **httpcheck** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/httpcheck.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/httpcheck.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8080\n\n```\n{% /details %}\n###### With HTTP request headers\n\nConfiguration with HTTP request headers that will be sent by the client.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8080\n headers:\n Host: localhost:8080\n User-Agent: netdata/go.d.plugin\n Accept: */*\n\n```\n{% /details %}\n###### With `status_accepted`\n\nA basic example configuration with non-default status_accepted.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8080\n status_accepted:\n - 200\n - 204\n\n```\n{% /details %}\n###### With `header_match`\n\nExample configurations with `header_match`. See the value [pattern](https://github.com/netdata/netdata/tree/master/src/go/pkg/matcher#supported-format) syntax.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n # The "X-Robots-Tag" header must be present in the HTTP response header,\n # but the value of the header does not matter.\n # This config checks for the presence of the header regardless of its value.\n - name: local\n url: http://127.0.0.1:8080\n header_match:\n - key: X-Robots-Tag\n\n # The "X-Robots-Tag" header must be present in the HTTP response header\n # only if its value is equal to "noindex, nofollow".\n # This config checks both the presence of the header and its value.\n - name: local\n url: http://127.0.0.1:8080\n header_match:\n - key: X-Robots-Tag\n value: \'= noindex,nofollow\'\n\n # The "X-Robots-Tag" header must not be present in the HTTP response header\n # but the value of the header does not matter.\n # This config checks for the presence of the header regardless of its value.\n - name: local\n url: http://127.0.0.1:8080\n header_match:\n - key: X-Robots-Tag\n exclude: yes\n\n # The "X-Robots-Tag" header must not be present in the HTTP response header\n # only if its value is equal to "noindex, nofollow".\n # This config checks both the presence of the header and its value.\n - name: local\n url: http://127.0.0.1:8080\n header_match:\n - key: X-Robots-Tag\n exclude: yes\n value: \'= noindex,nofollow\'\n\n```\n{% /details %}\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8080\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:8080\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8080\n\n - name: remote\n url: http://192.0.2.1:8080\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `httpcheck` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m httpcheck\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m httpcheck -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `httpcheck` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep httpcheck\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep httpcheck /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep httpcheck\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ httpcheck_web_service_up ](https://github.com/netdata/netdata/blob/master/src/health/health.d/httpcheck.conf) | httpcheck.status | HTTP check endpoint ${label:url} liveness status |\n| [ httpcheck_web_service_bad_content ](https://github.com/netdata/netdata/blob/master/src/health/health.d/httpcheck.conf) | httpcheck.status | Percentage of HTTP responses from ${label:url} with unexpected content in the last 5 minutes |\n| [ httpcheck_web_service_bad_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/httpcheck.conf) | httpcheck.status | Percentage of HTTP responses from ${label:url} with unexpected status in the last 5 minutes |\n| [ httpcheck_web_service_bad_header ](https://github.com/netdata/netdata/blob/master/src/health/health.d/httpcheck.conf) | httpcheck.status | Percentage of HTTP responses from ${label:url} with unexpected header in the last 5 minutes |\n| [ httpcheck_web_service_timeouts ](https://github.com/netdata/netdata/blob/master/src/health/health.d/httpcheck.conf) | httpcheck.status | Percentage of timed-out HTTP requests to ${label:url} in the last 5 minutes |\n| [ httpcheck_web_service_no_connection ](https://github.com/netdata/netdata/blob/master/src/health/health.d/httpcheck.conf) | httpcheck.status | Percentage of failed HTTP requests to ${label:url} in the last 5 minutes |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per target\n\nThe metrics refer to the monitored target.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| url | url value that is set in the configuration file. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| httpcheck.response_time | time | ms |\n| httpcheck.response_length | length | characters |\n| httpcheck.status | success, timeout, redirect, no_connection, bad_content, bad_header, bad_status | boolean |\n| httpcheck.in_state | time | boolean |\n\n",integration_type:"collector",id:"go.d.plugin-httpcheck-HTTP_Endpoints",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/httpcheck/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"icecast",monitored_instance:{name:"Icecast",link:"https://icecast.org/",categories:["data-collection.applications"],icon_filename:"icecast.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["icecast","streaming","media"]},overview:"# Icecast\n\nPlugin: go.d.plugin\nModule: icecast\n\n## Overview\n\nThis collector monitors Icecast listener counts.\n\nIt uses the Icecast server statistics `status-json.xsl` endpoint to retrieve the metrics.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Icecast instances running on localhost that are listening on port 8000.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **icecast** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **icecast**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/icecast.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Icecast minimum version\n\nNeeds at least Icecast version >= 2.4.0\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8000 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **icecast** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the icecast data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _icecast_ (or scroll the list) to locate the **icecast** collector.\n5. Click the **+** next to the **icecast** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/icecast.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/icecast.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8000\n\n```\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8000\n\n - name: remote\n url: http://192.0.2.1:8000\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `icecast` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m icecast\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m icecast -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `icecast` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep icecast\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep icecast /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep icecast\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Icecast source\n\nThese metrics refer to an icecast source.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| source | Source name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| icecast.listeners | listeners | listeners |\n\n",integration_type:"collector",id:"go.d.plugin-icecast-Icecast",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/icecast/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-intelgpu",plugin_name:"go.d.plugin",module_name:"intelgpu",monitored_instance:{name:"Intel GPU",link:"https://www.intel.com/",icon_filename:"microchip.svg",categories:["data-collection.hardware-and-sensors"]},keywords:["intel","gpu","hardware"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Intel GPU\n\nPlugin: go.d.plugin\nModule: intelgpu\n\n## Overview\n\nThis collector gathers performance metrics for Intel integrated GPUs.\nIt relies on the [`intel_gpu_top`](https://manpages.debian.org/testing/intel-gpu-tools/intel_gpu_top.1.en.html) CLI tool but avoids directly executing the binary.\nInstead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment.\nThis approach eliminates the need to grant the CAP_PERFMON capability to `intel_gpu_top`, improving security and potentially simplifying permission management.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **intelgpu** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **intelgpu**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/intelgpu.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install intel-gpu-tools\n\nInstall `intel-gpu-tools` using your distribution\'s package manager.\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 1 | no |\n| device | Select a specific GPU using [supported filter](https://manpages.debian.org/testing/intel-gpu-tools/intel_gpu_top.1.en.html#DESCRIPTION). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **intelgpu** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the intelgpu data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _intelgpu_ (or scroll the list) to locate the **intelgpu** collector.\n5. Click the **+** next to the **intelgpu** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/intelgpu.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/intelgpu.conf\n```\n\n##### Examples\n\n###### Custom update_every\n\nAllows you to override the default data collection interval.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: intelgpu\n update_every: 5 # Collect Intel iGPU metrics every 5 seconds\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `intelgpu` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m intelgpu\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m intelgpu -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `intelgpu` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep intelgpu\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep intelgpu /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep intelgpu\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Intel GPU instance\n\nThese metrics refer to the Intel GPU.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| intelgpu.frequency | frequency | MHz |\n| intelgpu.power | gpu, package | Watts |\n\n### Per engine\n\nThese metrics refer to the GPU hardware engine.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| engine_class | Engine class (Render/3D, Blitter, VideoEnhance, Video, Compute). |\n| engine_instance | Engine instance (e.g. Render/3D/0, Video/0, Video/1). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| intelgpu.engine_busy_perc | busy | percentage |\n\n",integration_type:"collector",id:"go.d.plugin-intelgpu-Intel_GPU",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/intelgpu/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-ipfs",plugin_name:"go.d.plugin",module_name:"ipfs",monitored_instance:{name:"IPFS",link:"https://ipfs.tech/",categories:["data-collection.storage"],icon_filename:"ipfs.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["ipfs","filesystem"]},overview:"# IPFS\n\nPlugin: go.d.plugin\nModule: ipfs\n\n## Overview\n\nThis collector monitors IPFS daemon health and network activity.\n\nIt uses [RPC API](https://docs.ipfs.tech/reference/kubo/rpc/) to collect metrics.\n\nUsed endpoints:\n\n- [/api/v0/stats/bw](https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-stats-bw)\n- [/api/v0/swarm/peers](https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-swarm-peers)\n- [/api/v0/stats/repo](https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-stats-repo)\n- [/api/v0/pin/ls](https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-pin-ls)\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects IPFS instances running on localhost that are listening on port 5001.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nCalls to the following endpoints are disabled by default due to IPFS bugs:\n\n- /api/v0/stats/repo ([#7528](https://github.com/ipfs/go-ipfs/issues/7528)).\n- /api/v0/pin/ls ([#3874](https://github.com/ipfs/go-ipfs/issues/3874)).\n\n**Disabled by default** due to potential high CPU usage. Consider enabling only if necessary.\n\n",setup:'## Setup\n\n\nYou can configure the **ipfs** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **ipfs**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/ipfs.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:5001 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **Metrics Selection** | repoapi | Collect repository statistics from the [/api/v0/stats/repo](https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-repo-stat) endpoint. | no | no |\n| | pinapi | Collect pinned objects list from the [/api/v0/pin/ls](https://docs.ipfs.tech/reference/kubo/rpc/#api-v0-pin-ls) endpoint. | no | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **ipfs** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the ipfs data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _ipfs_ (or scroll the list) to locate the **ipfs** collector.\n5. Click the **+** next to the **ipfs** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/ipfs.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/ipfs.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:5001\n\n```\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:5001\n\n - name: remote\n url: http://192.0.2.1:5001\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `ipfs` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m ipfs\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m ipfs -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `ipfs` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep ipfs\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep ipfs /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep ipfs\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ ipfs_datastore_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ipfs.conf) | ipfs.datastore_space_utilization | IPFS datastore utilization |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per IPFS instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipfs.bandwidth | in, out | bytes/s |\n| ipfs.peers | peers | peers |\n| ipfs.datastore_space_utilization | used | percent |\n| ipfs.repo_size | size | bytes |\n| ipfs.repo_objects | objects | objects |\n| ipfs.repo_pinned_objects | pinned, recursive_pins | objects |\n\n",integration_type:"collector",id:"go.d.plugin-ipfs-IPFS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/ipfs/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-isc_dhcpd",plugin_name:"go.d.plugin",module_name:"isc_dhcpd",monitored_instance:{name:"ISC DHCP",link:"https://www.isc.org/dhcp/",categories:["data-collection.networking"],icon_filename:"isc.png"},keywords:["dhcpd","dhcp"],info_provided_to_referring_integrations:{description:""},related_resources:{integrations:{list:[]}}},overview:"# ISC DHCP\n\nPlugin: go.d.plugin\nModule: isc_dhcpd\n\n## Overview\n\nThis collector monitors ISC DHCP lease usage by reading the DHCP client lease database (dhcpd.leases).\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n- BSD\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **isc_dhcpd** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **isc_dhcpd**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/isc_dhcpd.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | leases_path | Path to DHCP client lease database. | /var/lib/dhcp/dhcpd.leases | no |\n| | [pools](#option-target-pools) | DHCP IP pools to monitor. | | yes |\n\n<a id="option-target-pools"></a>\n##### pools\n\nList of IP pools to monitor.\n\n- IP range syntax: see [supported formats](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/pkg/iprange#supported-formats).\n- Syntax:\n\n```yaml\npools:\n - name: "POOL_NAME1"\n networks: "SPACE SEPARATED LIST OF IP RANGES"\n - name: "POOL_NAME2"\n networks: "SPACE SEPARATED LIST OF IP RANGES"\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **isc_dhcpd** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the isc_dhcpd data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _isc_dhcpd_ (or scroll the list) to locate the **isc_dhcpd** collector.\n5. Click the **+** next to the **isc_dhcpd** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/isc_dhcpd.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/isc_dhcpd.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n pools:\n - name: lan\n networks: "192.168.0.0/24 192.168.1.0/24 192.168.2.0/24"\n - name: wifi\n networks: "10.0.0.0/24"\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `isc_dhcpd` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m isc_dhcpd\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m isc_dhcpd -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `isc_dhcpd` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep isc_dhcpd\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep isc_dhcpd /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep isc_dhcpd\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per ISC DHCP instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| isc_dhcpd.active_leases_total | active | leases |\n\n### Per ISC DHCP instance\n\nThese metrics refer to the DHCP pool.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| dhcp_pool_name | The DHCP pool name defined in the collector configuration. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| isc_dhcpd.dhcp_pool_utilization | utilization | percent |\n| isc_dhcpd.dhcp_pool_active_leases | active | leases |\n\n",integration_type:"collector",id:"go.d.plugin-isc_dhcpd-ISC_DHCP",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/isc_dhcpd/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-k8s_apiserver",plugin_name:"go.d.plugin",module_name:"k8s_apiserver",monitored_instance:{name:"Kubernetes API Server",link:"https://kubernetes.io/docs/concepts/overview/components/#kube-apiserver",icon_filename:"kubernetes.svg",categories:["data-collection.containers-and-vms"]},keywords:["kubernetes","k8s","apiserver","kube-apiserver"],related_resources:{integrations:{list:[{plugin_name:"go.d.plugin",module_name:"k8s_kubelet"},{plugin_name:"go.d.plugin",module_name:"k8s_kubeproxy"},{plugin_name:"go.d.plugin",module_name:"k8s_state"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Kubernetes Containers"},{plugin_name:"go.d.plugin",module_name:"coredns"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# Kubernetes API Server\n\nPlugin: go.d.plugin\nModule: k8s_apiserver\n\n## Overview\n\nThis collector monitors Kubernetes API Server health, performance, and request metrics.\n\nIt collects metrics from the kube-apiserver\'s `/metrics` endpoint, providing insights into:\n- Request rates, latencies, and error rates\n- Current inflight and long-running requests\n- Admission controller and webhook performance\n- etcd backend health and object counts\n- Controller work queue depths and latencies\n- Authentication and audit events\n- Go runtime and process metrics\n\n\nThe collector scrapes Prometheus-format metrics from the Kubernetes API Server\'s metrics endpoint.\nAuthentication is typically done using a ServiceAccount bearer token.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe ServiceAccount used must have permissions to access the `/metrics` endpoint.\nIn most clusters, this requires cluster-admin or a custom ClusterRole with metrics access.\n\n\nKubernetes API Server can be monitored further using the following other integrations:\n\n- {% relatedResource id="go.d.plugin-k8s_kubelet-Kubelet" %}Kubelet{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-k8s_kubeproxy-Kubeproxy" %}Kubeproxy{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-k8s_state-Kubernetes_Cluster_State" %}Kubernetes Cluster State{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Kubernetes_Containers" %}Kubernetes Containers{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-coredns-CoreDNS" %}CoreDNS{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nWhen running inside a Kubernetes cluster, the collector attempts to connect to\n`https://kubernetes.default.svc:443/metrics` using the pod\'s ServiceAccount token.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **k8s_apiserver** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **k8s_apiserver**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/k8s_apiserver.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### ServiceAccount with metrics access\n\nThe Netdata pod must have a ServiceAccount with permissions to read metrics from the API server.\nYou can create a ClusterRole and ClusterRoleBinding for this purpose.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | https://kubernetes.default.svc:443/metrics | yes |\n| | timeout | HTTP request timeout (seconds). | 2 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | /var/run/secrets/kubernetes.io/serviceaccount/token | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | /var/run/secrets/kubernetes.io/serviceaccount/ca.crt | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **k8s_apiserver** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the k8s_apiserver data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _k8s_apiserver_ (or scroll the list) to locate the **k8s_apiserver** collector.\n5. Click the **+** next to the **k8s_apiserver** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/k8s_apiserver.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/k8s_apiserver.conf\n```\n\n##### Examples\n\n###### In-cluster (default)\n\nDefault configuration when running inside a Kubernetes cluster.\n\n```yaml\njobs:\n - name: local\n url: https://kubernetes.default.svc:443/metrics\n bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token\n tls_ca: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt\n\n```\n###### External access with kubectl proxy\n\nAccess API server metrics via kubectl proxy running on localhost.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: via-proxy\n url: http://127.0.0.1:8001/metrics\n\n```\n{% /details %}\n###### Direct access with token\n\nDirect access to API server with a bearer token.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: direct\n url: https://api.example.com:6443/metrics\n bearer_token_file: /path/to/token\n tls_skip_verify: yes\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `k8s_apiserver` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m k8s_apiserver\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m k8s_apiserver -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `k8s_apiserver` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep k8s_apiserver\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep k8s_apiserver /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep k8s_apiserver\n```\n\n### Connection refused\n\nThe API server may not be accessible. Check that:\n1. The URL is correct\n2. Network policies allow access\n3. The ServiceAccount has proper RBAC permissions\n\n\n### 401 Unauthorized\n\nAuthentication failed. Verify:\n1. The bearer token file exists and is readable\n2. The token is valid and not expired\n3. The ServiceAccount has metrics access permissions\n\n\n### Certificate errors\n\nTLS verification failed. Options:\n1. Provide the correct CA certificate path in `tls_ca`\n2. Set `tls_skip_verify: yes` (not recommended for production)\n\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ k8s_apiserver_request_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/k8s_apiserver.conf) | k8s_apiserver.requests_by_code | high rate of API server request errors (5xx responses) |\n| [ k8s_apiserver_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/k8s_apiserver.conf) | k8s_apiserver.request_latency | API server request latency is high |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Kubernetes API Server instance\n\nThese metrics refer to the entire monitored API server instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| k8s_apiserver.requests_total | requests | requests/s |\n| k8s_apiserver.requests_dropped | dropped | requests/s |\n| k8s_apiserver.requests_by_verb | a dimension per HTTP verb | requests/s |\n| k8s_apiserver.requests_by_code | a dimension per HTTP status code | requests/s |\n| k8s_apiserver.requests_by_resource | a dimension per Kubernetes resource | requests/s |\n| k8s_apiserver.request_latency | p50, p90, p99 | milliseconds |\n| k8s_apiserver.response_size | p50, p90, p99 | bytes |\n| k8s_apiserver.inflight_requests | mutating, read_only | requests |\n| k8s_apiserver.longrunning_requests | longrunning | requests |\n| k8s_apiserver.rest_client_requests_by_code | a dimension per HTTP status code | requests/s |\n| k8s_apiserver.rest_client_requests_by_method | a dimension per HTTP method | requests/s |\n| k8s_apiserver.rest_client_latency | p50, p90, p99 | milliseconds |\n| k8s_apiserver.admission_step_latency | validate, admit | milliseconds |\n| k8s_apiserver.etcd_object_counts | a dimension per resource type | objects |\n| k8s_apiserver.audit_events | events, rejected | events/s |\n| k8s_apiserver.authentication_requests | authenticated | requests/s |\n| k8s_apiserver.goroutines | goroutines | goroutines |\n| k8s_apiserver.threads | threads | threads |\n| k8s_apiserver.process_memory | resident, virtual | bytes |\n| k8s_apiserver.heap_memory | alloc, inuse, stack | bytes |\n| k8s_apiserver.gc_duration | min, p25, p50, p75, max | seconds |\n| k8s_apiserver.open_fds | open, max | file descriptors |\n| k8s_apiserver.cpu_usage | cpu | seconds/s |\n\n### Per workqueue\n\nThese metrics refer to controller work queues.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| controller | Controller name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| k8s_apiserver.workqueue_depth | depth | items |\n| k8s_apiserver.workqueue_latency | p50, p90, p99 | microseconds |\n| k8s_apiserver.workqueue_adds | adds, retries | items/s |\n| k8s_apiserver.workqueue_duration | p50, p90, p99 | microseconds |\n\n### Per admission controller\n\nThese metrics refer to admission controllers.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| name | Admission controller name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| k8s_apiserver.admission_controller_latency | 5ms, 25ms, 100ms, 500ms, 1s, 2.5s, +Inf | events/s |\n\n### Per admission webhook\n\nThese metrics refer to admission webhooks.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| name | Webhook name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| k8s_apiserver.admission_webhook_latency | 5ms, 25ms, 100ms, 500ms, 1s, 2.5s, +Inf | events/s |\n\n",integration_type:"collector",id:"go.d.plugin-k8s_apiserver-Kubernetes_API_Server",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/k8s_apiserver/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-k8s_kubelet",plugin_name:"go.d.plugin",module_name:"k8s_kubelet",monitored_instance:{name:"Kubelet",link:"https://kubernetes.io/docs/concepts/overview/components/#kubelet",icon_filename:"kubernetes.svg",categories:["data-collection.containers-and-vms"]},keywords:["kubelet","kubernetes","k8s"],related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"go.d.plugin",module_name:"k8s_state"},{plugin_name:"go.d.plugin",module_name:"k8s_apiserver"},{plugin_name:"go.d.plugin",module_name:"k8s_kubeproxy"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Kubernetes Containers"},{plugin_name:"go.d.plugin",module_name:"coredns"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# Kubelet\n\nPlugin: go.d.plugin\nModule: k8s_kubelet\n\n## Overview\n\nThis collector monitors Kubelet instances.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nKubelet can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-k8s_state-Kubernetes_Cluster_State" %}Kubernetes Cluster State{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-k8s_apiserver-Kubernetes_API_Server" %}Kubernetes API Server{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-k8s_kubeproxy-Kubeproxy" %}Kubeproxy{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Kubernetes_Containers" %}Kubernetes Containers{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-coredns-CoreDNS" %}CoreDNS{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn\'t support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **k8s_kubelet** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **k8s_kubelet**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/k8s_kubelet.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:10255/metrics | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | /var/run/secrets/kubernetes.io/serviceaccount/token | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **k8s_kubelet** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the k8s_kubelet data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _k8s_kubelet_ (or scroll the list) to locate the **k8s_kubelet** collector.\n5. Click the **+** next to the **k8s_kubelet** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/k8s_kubelet.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/k8s_kubelet.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:10255/metrics\n\n```\n###### HTTPS with self-signed certificate\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:10250/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `k8s_kubelet` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m k8s_kubelet\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m k8s_kubelet -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `k8s_kubelet` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep k8s_kubelet\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep k8s_kubelet /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep k8s_kubelet\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ kubelet_node_config_error ](https://github.com/netdata/netdata/blob/master/src/health/health.d/kubelet.conf) | k8s_kubelet.kubelet_node_config_error | the node is experiencing a configuration-related error (0: false, 1: true) |\n| [ kubelet_token_requests ](https://github.com/netdata/netdata/blob/master/src/health/health.d/kubelet.conf) | k8s_kubelet.kubelet_token_requests | number of failed Token() requests to the alternate token source |\n| [ kubelet_token_requests ](https://github.com/netdata/netdata/blob/master/src/health/health.d/kubelet.conf) | k8s_kubelet.kubelet_token_requests | number of failed Token() requests to the alternate token source |\n| [ kubelet_operations_error ](https://github.com/netdata/netdata/blob/master/src/health/health.d/kubelet.conf) | k8s_kubelet.kubelet_operations_errors | number of Docker or runtime operation errors |\n| [ kubelet_operations_error ](https://github.com/netdata/netdata/blob/master/src/health/health.d/kubelet.conf) | k8s_kubelet.kubelet_operations_errors | number of Docker or runtime operation errors |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Kubelet instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| k8s_kubelet.apiserver_audit_requests_rejected | rejected | requests/s |\n| k8s_kubelet.apiserver_storage_data_key_generation_failures | failures | events/s |\n| k8s_kubelet.apiserver_storage_data_key_generation_latencies | 5_\xb5s, 10_\xb5s, 20_\xb5s, 40_\xb5s, 80_\xb5s, 160_\xb5s, 320_\xb5s, 640_\xb5s, 1280_\xb5s, 2560_\xb5s, 5120_\xb5s, 10240_\xb5s, 20480_\xb5s, 40960_\xb5s, +Inf | observes/s |\n| k8s_kubelet.apiserver_storage_data_key_generation_latencies_percent | 5_\xb5s, 10_\xb5s, 20_\xb5s, 40_\xb5s, 80_\xb5s, 160_\xb5s, 320_\xb5s, 640_\xb5s, 1280_\xb5s, 2560_\xb5s, 5120_\xb5s, 10240_\xb5s, 20480_\xb5s, 40960_\xb5s, +Inf | percentage |\n| k8s_kubelet.apiserver_storage_envelope_transformation_cache_misses | cache misses | events/s |\n| k8s_kubelet.kubelet_containers_running | total | running_containers |\n| k8s_kubelet.kubelet_pods_running | total | running_pods |\n| k8s_kubelet.kubelet_pods_log_filesystem_used_bytes | a dimension per namespace and pod | B |\n| k8s_kubelet.kubelet_runtime_operations | a dimension per operation type | operations/s |\n| k8s_kubelet.kubelet_runtime_operations_errors | a dimension per operation type | errors/s |\n| k8s_kubelet.kubelet_docker_operations | a dimension per operation type | operations/s |\n| k8s_kubelet.kubelet_docker_operations_errors | a dimension per operation type | errors/s |\n| k8s_kubelet.kubelet_node_config_error | experiencing_error | bool |\n| k8s_kubelet.kubelet_pleg_relist_interval_microseconds | 0.5, 0.9, 0.99 | microseconds |\n| k8s_kubelet.kubelet_pleg_relist_latency_microseconds | 0.5, 0.9, 0.99 | microseconds |\n| k8s_kubelet.kubelet_token_requests | total, failed | token_requests/s |\n| k8s_kubelet.rest_client_requests_by_code | a dimension per HTTP status code | requests/s |\n| k8s_kubelet.rest_client_requests_by_method | a dimension per HTTP method | requests/s |\n\n### Per volume manager\n\nThese metrics refer to the Volume Manager.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| k8s_kubelet.volume_manager_total_volumes | actual, desired | state |\n\n",integration_type:"collector",id:"go.d.plugin-k8s_kubelet-Kubelet",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/k8s_kubelet/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-k8s_kubeproxy",plugin_name:"go.d.plugin",module_name:"k8s_kubeproxy",monitored_instance:{name:"Kubeproxy",link:"https://kubernetes.io/docs/concepts/overview/components/#kube-proxy",icon_filename:"kubernetes.svg",categories:["data-collection.containers-and-vms"]},keywords:["kubeproxy","kubernetes","k8s"],related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"go.d.plugin",module_name:"k8s_state"},{plugin_name:"go.d.plugin",module_name:"k8s_apiserver"},{plugin_name:"go.d.plugin",module_name:"k8s_kubelet"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Kubernetes Containers"},{plugin_name:"go.d.plugin",module_name:"coredns"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# Kubeproxy\n\nPlugin: go.d.plugin\nModule: k8s_kubeproxy\n\n## Overview\n\nThis collector monitors Kubeproxy instances.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nKubeproxy can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-k8s_state-Kubernetes_Cluster_State" %}Kubernetes Cluster State{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-k8s_apiserver-Kubernetes_API_Server" %}Kubernetes API Server{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-k8s_kubelet-Kubelet" %}Kubelet{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Kubernetes_Containers" %}Kubernetes Containers{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-coredns-CoreDNS" %}CoreDNS{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn\'t support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **k8s_kubeproxy** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **k8s_kubeproxy**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/k8s_kubeproxy.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:10249/metrics | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **k8s_kubeproxy** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the k8s_kubeproxy data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _k8s_kubeproxy_ (or scroll the list) to locate the **k8s_kubeproxy** collector.\n5. Click the **+** next to the **k8s_kubeproxy** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/k8s_kubeproxy.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/k8s_kubeproxy.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:10249/metrics\n\n```\n###### HTTPS with self-signed certificate\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:10249/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `k8s_kubeproxy` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m k8s_kubeproxy\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m k8s_kubeproxy -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `k8s_kubeproxy` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep k8s_kubeproxy\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep k8s_kubeproxy /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep k8s_kubeproxy\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Kubeproxy instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| k8s_kubeproxy.kubeproxy_sync_proxy_rules | sync_proxy_rules | events/s |\n| k8s_kubeproxy.kubeproxy_sync_proxy_rules_latency_microsecond | 0.001, 0.002, 0.004, 0.008, 0.016, 0.032, 0.064, 0.128, 0.256, 0.512, 1.024, 2.048, 4.096, 8.192, 16.384, +Inf | observes/s |\n| k8s_kubeproxy.kubeproxy_sync_proxy_rules_latency | 0.001, 0.002, 0.004, 0.008, 0.016, 0.032, 0.064, 0.128, 0.256, 0.512, 1.024, 2.048, 4.096, 8.192, 16.384, +Inf | percentage |\n| k8s_kubeproxy.rest_client_requests_by_code | a dimension per HTTP status code | requests/s |\n| k8s_kubeproxy.rest_client_requests_by_method | a dimension per HTTP method | requests/s |\n| k8s_kubeproxy.http_request_duration | 0.5, 0.9, 0.99 | microseconds |\n\n",integration_type:"collector",id:"go.d.plugin-k8s_kubeproxy-Kubeproxy",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/k8s_kubeproxy/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-k8s_state",plugin_name:"go.d.plugin",module_name:"k8s_state",monitored_instance:{name:"Kubernetes Cluster State",link:"https://kubernetes.io/",icon_filename:"kubernetes.svg",categories:["data-collection.containers-and-vms"]},keywords:["kubernetes","k8s"],related_resources:{integrations:{list:[{plugin_name:"go.d.plugin",module_name:"k8s_apiserver"},{plugin_name:"go.d.plugin",module_name:"k8s_kubelet"},{plugin_name:"go.d.plugin",module_name:"k8s_kubeproxy"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Kubernetes Containers"},{plugin_name:"go.d.plugin",module_name:"coredns"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# Kubernetes Cluster State\n\nPlugin: go.d.plugin\nModule: k8s_state\n\n## Overview\n\nThis collector monitors Kubernetes Nodes, Pods and Containers.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\nKubernetes Cluster State can be monitored further using the following other integrations:\n\n- {% relatedResource id="go.d.plugin-k8s_apiserver-Kubernetes_API_Server" %}Kubernetes API Server{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-k8s_kubelet-Kubelet" %}Kubelet{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-k8s_kubeproxy-Kubeproxy" %}Kubeproxy{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Kubernetes_Containers" %}Kubernetes Containers{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-coredns-CoreDNS" %}CoreDNS{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn\'t support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:"## Setup\n\n\nYou can configure the **k8s_state** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **k8s_state**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/k8s_state.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n#### via UI\n\nConfigure the **k8s_state** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the k8s_state data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _k8s_state_ (or scroll the list) to locate the **k8s_state** collector.\n5. Click the **+** next to the **k8s_state** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/k8s_state.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/k8s_state.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `k8s_state` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m k8s_state\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m k8s_state -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `k8s_state` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep k8s_state\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep k8s_state /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep k8s_state\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ k8s_state_deployment_condition_available ](https://github.com/netdata/netdata/blob/master/src/health/health.d/k8sstate.conf) | k8s_state.deployment_conditions | Deployment ${label:k8s_deployment_name} does not have the minimum required replicas |\n| [ k8s_state_cronjob_last_execution_failed ](https://github.com/netdata/netdata/blob/master/src/health/health.d/k8sstate.conf) | k8s_state.cronjob_last_execution_status | CronJob ${label:k8s_cronjob_name} in ${label:k8s_namespace} failing |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per node\n\nThese metrics refer to the Node.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| k8s_cluster_id | Cluster ID. This is equal to the kube-system namespace UID. |\n| k8s_cluster_name | Cluster name. Cluster name discovery only works in GKE. |\n| k8s_node_name | Node name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| k8s_state.node_allocatable_cpu_requests_utilization | requests | % |\n| k8s_state.node_allocatable_cpu_requests_used | requests | millicpu |\n| k8s_state.node_allocatable_cpu_limits_utilization | limits | % |\n| k8s_state.node_allocatable_cpu_limits_used | limits | millicpu |\n| k8s_state.node_allocatable_mem_requests_utilization | requests | % |\n| k8s_state.node_allocatable_mem_requests_used | requests | bytes |\n| k8s_state.node_allocatable_mem_limits_utilization | limits | % |\n| k8s_state.node_allocatable_mem_limits_used | limits | bytes |\n| k8s_state.node_allocatable_pods_utilization | allocated | % |\n| k8s_state.node_allocatable_pods_usage | available, allocated | pods |\n| k8s_state.node_condition | Ready, DiskPressure, MemoryPressure, NetworkUnavailable, PIDPressure | status |\n| k8s_state.node_schedulability | schedulable, unschedulable | state |\n| k8s_state.node_pods_readiness | ready | % |\n| k8s_state.node_pods_readiness_state | ready, unready | pods |\n| k8s_state.node_pods_condition | pod_ready, pod_scheduled, pod_initialized, containers_ready | pods |\n| k8s_state.node_pods_phase | running, failed, succeeded, pending | pods |\n| k8s_state.node_containers | containers, init_containers | containers |\n| k8s_state.node_containers_state | running, waiting, terminated | containers |\n| k8s_state.node_init_containers_state | running, waiting, terminated | containers |\n| k8s_state.node_age | age | seconds |\n\n### Per deployment\n\nThese metrics refer to Deployments.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| k8s_cluster_id | Cluster ID. This is equal to the kube-system namespace UID. |\n| k8s_cluster_name | Cluster name. Cluster name discovery only works in GKE. |\n| k8s_deployment_name | Deployment name. |\n| k8s_namespace | Namespace. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| k8s_state.deployment_conditions | available, replica_failure, progressing | status |\n| k8s_state.deployment_replicas | desired, current, ready | replicas |\n| k8s_state.deployment_age | age | seconds |\n\n### Per cronjob\n\nThese metrics refer to CronJobs.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| k8s_cluster_id | Cluster ID. This is equal to the kube-system namespace UID. |\n| k8s_cluster_name | Cluster name. Cluster name discovery only works in GKE. |\n| k8s_cronjob_name | CronJob name. |\n| k8s_namespace | Namespace. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| k8s_state.cronjob_jobs_count_by_status | completed, failed, running, suspended | jobs |\n| k8s_state.cronjob_jobs_failed_by_reason | pod_failure_policy, backoff_limit_exceeded, deadline_exceeded | jobs |\n| k8s_state.cronjob_last_execution_status | completed, failed | status |\n| k8s_state.cronjob_last_completion_duration | last_completion | seconds |\n| k8s_state.cronjob_last_completed_time_ago | last_completed_ago | seconds |\n| k8s_state.cronjob_last_schedule_time_ago | last_schedule_ago | seconds |\n| k8s_state.cronjob_suspend_status | enabled, suspended | status |\n| k8s_state.cronjob_age | age | seconds |\n\n### Per pod\n\nThese metrics refer to the Pod.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| k8s_cluster_id | Cluster ID. This is equal to the kube-system namespace UID. |\n| k8s_cluster_name | Cluster name. Cluster name discovery only works in GKE. |\n| k8s_node_name | Node name. |\n| k8s_namespace | Namespace. |\n| k8s_controller_kind | Controller kind (ReplicaSet, DaemonSet, StatefulSet, Job, etc.). |\n| k8s_controller_name | Controller name. |\n| k8s_pod_name | Pod name. |\n| k8s_qos_class | Pod QOS class (burstable, guaranteed, besteffort). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| k8s_state.pod_cpu_requests_used | requests | millicpu |\n| k8s_state.pod_cpu_limits_used | limits | millicpu |\n| k8s_state.pod_mem_requests_used | requests | bytes |\n| k8s_state.pod_mem_limits_used | limits | bytes |\n| k8s_state.pod_condition | pod_ready, pod_scheduled, pod_initialized, containers_ready | state |\n| k8s_state.pod_phase | running, failed, succeeded, pending | state |\n| k8s_state.pod_status_reason | Evicted, NodeAffinity, NodeLost, Shutdown, UnexpectedAdmissionError, Other | status |\n| k8s_state.pod_age | age | seconds |\n| k8s_state.pod_containers | containers, init_containers | containers |\n| k8s_state.pod_containers_state | running, waiting, terminated | containers |\n| k8s_state.pod_init_containers_state | running, waiting, terminated | containers |\n\n### Per container\n\nThese metrics refer to the Pod container.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| k8s_cluster_id | Cluster ID. This is equal to the kube-system namespace UID. |\n| k8s_cluster_name | Cluster name. Cluster name discovery only works in GKE. |\n| k8s_node_name | Node name. |\n| k8s_namespace | Namespace. |\n| k8s_controller_kind | Controller kind (ReplicaSet, DaemonSet, StatefulSet, Job, etc.). |\n| k8s_controller_name | Controller name. |\n| k8s_pod_name | Pod name. |\n| k8s_qos_class | Pod QOS class (burstable, guaranteed, besteffort). |\n| k8s_container_name | Container name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| k8s_state.pod_container_readiness_state | ready | state |\n| k8s_state.pod_container_restarts | restarts | restarts |\n| k8s_state.pod_container_state | running, waiting, terminated | state |\n| k8s_state.pod_container_waiting_state_reason | ContainerCreating, CrashLoopBackOff, CreateContainerConfigError, CreateContainerError, ErrImagePull, ImagePullBackOff, InvalidImageName, PodInitializing, Other | state |\n| k8s_state.pod_container_terminated_state_reason | Completed, ContainerCannotRun, DeadlineExceeded, Error, Evicted, OOMKilled, Other | state |\n\n",integration_type:"collector",id:"go.d.plugin-k8s_state-Kubernetes_Cluster_State",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/k8s_state/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-lighttpd",plugin_name:"go.d.plugin",module_name:"lighttpd",monitored_instance:{name:"Lighttpd",link:"https://www.lighttpd.net/",icon_filename:"lighttpd.svg",categories:["data-collection.web-servers-and-proxies"]},keywords:["webserver"],related_resources:{integrations:{list:[{plugin_name:"go.d.plugin",module_name:"web_log"},{plugin_name:"go.d.plugin",module_name:"httpcheck"},{plugin_name:"apps.plugin",module_name:"apps"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# Lighttpd\n\nPlugin: go.d.plugin\nModule: lighttpd\n\n## Overview\n\nThis collector monitors the activity and performance of Lighttpd servers, and collects metrics such as the number of connections, workers, requests and more.\n\n\nIt sends HTTP requests to the Lighttpd location [server-status](https://redmine.lighttpd.net/projects/lighttpd/wiki/Mod_status), \nwhich is a built-in location that provides metrics about the Lighttpd server.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nLighttpd can be monitored further using the following other integrations:\n\n- {% relatedResource id="go.d.plugin-web_log-Web_server_log_files" %}Web server log files{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-httpcheck-HTTP_Endpoints" %}HTTP Endpoints{% /relatedResource %}\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Lighttpd instances running on localhost that are listening on port 80.\nOn startup, it tries to collect metrics from:\n\n- http://localhost/server-status?auto\n- http://127.0.0.1/server-status?auto\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **lighttpd** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **lighttpd**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/lighttpd.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable Lighttpd status support\n\nTo enable status support, see the [official documentation](https://redmine.lighttpd.net/projects/lighttpd/wiki/Mod_status).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1/server-status?auto | yes |\n| | timeout | HTTP request timeout (seconds). | 2 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **lighttpd** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the lighttpd data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _lighttpd_ (or scroll the list) to locate the **lighttpd** collector.\n5. Click the **+** next to the **lighttpd** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/lighttpd.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/lighttpd.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/server-status?auto\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/server-status?auto\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nLighttpd with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1/server-status?auto\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/server-status?auto\n\n - name: remote\n url: http://192.0.2.1/server-status?auto\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `lighttpd` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m lighttpd\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m lighttpd -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `lighttpd` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep lighttpd\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep lighttpd /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep lighttpd\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Lighttpd instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| lighttpd.requests | requests | requests/s |\n| lighttpd.net | sent | kilobits/s |\n| lighttpd.workers | idle, busy | servers |\n| lighttpd.scoreboard | waiting, open, close, hard_error, keepalive, read, read_post, write, handle_request, request_start, request_end | connections |\n| lighttpd.uptime | uptime | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-lighttpd-Lighttpd",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/lighttpd/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-litespeed",plugin_name:"go.d.plugin",module_name:"litespeed",monitored_instance:{name:"Litespeed",link:"https://www.litespeedtech.com/products/litespeed-web-server",categories:["data-collection.web-servers-and-proxies"],icon_filename:"litespeed.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["litespeed","web","server"]},overview:"# Litespeed\n\nPlugin: go.d.plugin\nModule: litespeed\n\n## Overview\n\nExamine Litespeed metrics for insights into web server operations. Analyze request rates, response times, and error rates for efficient web service delivery.\n\nThe collector uses the statistics under /tmp/lshttpd to gather the metrics.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n- BSD\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nIf no configuration is present, the collector will attempt to read files under /tmp/lshttpd/.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **litespeed** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **litespeed**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/litespeed.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary=\"Config options\" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| autodetection_retry | Sets the job re-check interval in seconds. | 0 | no |\n| reports_dir | Directory containing Litespeed's real-time statistics files. | /tmp/lshttpd/ | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **litespeed** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the litespeed data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _litespeed_ (or scroll the list) to locate the **litespeed** collector.\n5. Click the **+** next to the **litespeed** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/litespeed.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/litespeed.conf\n```\n\n##### Examples\n\n###### Set the path to statistics\n\nChange the path for the litespeed stats files\n\n```yaml\nlocal:\n name: 'local'\n path: '/tmp/lshttpd'\n\n```\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `litespeed` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m litespeed\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m litespeed -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `litespeed` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep litespeed\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep litespeed /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep litespeed\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Litespeed instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| litespeed.requests | requests | requests/s |\n| litespeed.requests_processing | processing | requests |\n| litespeed.net_throughput | in, out | kilobits/s |\n| litespeed.net_ssl_throughput | in, out | kilobits/s |\n| litespeed.connections | free, used | conns |\n| litespeed.ssl_connections | free, used | conns |\n| litespeed.public_cache | hits | hits/s |\n| litespeed.private_cache | hits | hits/s |\n| litespeed.static | hits | hits/s |\n\n",integration_type:"collector",id:"go.d.plugin-litespeed-Litespeed",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/litespeed/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-logind",plugin_name:"go.d.plugin",module_name:"logind",monitored_instance:{name:"systemd-logind users",link:"https://www.freedesktop.org/software/systemd/man/systemd-logind.service.html",icon_filename:"users.svg",categories:["data-collection.operating-systems"]},keywords:["logind","systemd"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# systemd-logind users\n\nPlugin: go.d.plugin\nModule: logind\n\n## Overview\n\nThis collector monitors number of sessions and users as reported by the `org.freedesktop.login1` DBus API.\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **logind** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **logind**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/logind.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n\n#### via UI\n\nConfigure the **logind** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the logind data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _logind_ (or scroll the list) to locate the **logind** collector.\n5. Click the **+** next to the **logind** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/logind.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/logind.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `logind` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m logind\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m logind -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `logind` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep logind\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep logind /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep logind\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per systemd-logind users instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| logind.sessions | remote, local | sessions |\n| logind.sessions_type | console, graphical, other | sessions |\n| logind.sessions_state | online, closing, active | sessions |\n| logind.users_state | offline, closing, online, lingering, active | users |\n\n",integration_type:"collector",id:"go.d.plugin-logind-systemd-logind_users",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/logind/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-logstash",plugin_name:"go.d.plugin",module_name:"logstash",monitored_instance:{name:"Logstash",link:"https://www.elastic.co/products/logstash",icon_filename:"elastic-logstash.svg",categories:["data-collection.applications"]},keywords:["logstash"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Logstash\n\nPlugin: go.d.plugin\nModule: logstash\n\n## Overview\n\nThis collector monitors Logstash instances.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **logstash** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **logstash**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/logstatsh.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://localhost:9600 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **logstash** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the logstash data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _logstash_ (or scroll the list) to locate the **logstash** collector.\n5. Click the **+** next to the **logstash** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/logstatsh.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/logstatsh.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://localhost:9600\n\n```\n{% /details %}\n###### HTTP authentication\n\nHTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://localhost:9600\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nHTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://localhost:9600\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://localhost:9600\n\n - name: remote\n url: http://192.0.2.1:9600\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `logstash` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m logstash\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m logstash -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `logstash` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep logstash\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep logstash /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep logstash\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Logstash instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| logstash.jvm_threads | threads | count |\n| logstash.jvm_mem_heap_used | in_use | percentage |\n| logstash.jvm_mem_heap | committed, used | KiB |\n| logstash.jvm_mem_pools_eden | committed, used | KiB |\n| logstash.jvm_mem_pools_survivor | committed, used | KiB |\n| logstash.jvm_mem_pools_old | committed, used | KiB |\n| logstash.jvm_gc_collector_count | eden, old | counts/s |\n| logstash.jvm_gc_collector_time | eden, old | ms |\n| logstash.open_file_descriptors | open | fd |\n| logstash.event | in, filtered, out | events/s |\n| logstash.event_duration | event, queue | seconds |\n| logstash.uptime | uptime | seconds |\n\n### Per pipeline\n\nThese metrics refer to the pipeline.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| pipeline | pipeline name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| logstash.pipeline_event | in, filtered, out | events/s |\n| logstash.pipeline_event_duration | event, queue | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-logstash-Logstash",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/logstash/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-lvm",plugin_name:"go.d.plugin",module_name:"lvm",monitored_instance:{name:"LVM logical volumes",link:"",icon_filename:"filesystem.svg",categories:["data-collection.storage"]},keywords:["lvm","lvs"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# LVM logical volumes\n\nPlugin: go.d.plugin\nModule: lvm\n\n## Overview\n\nThis collector monitors the health of LVM logical volumes. It relies on the [`lvs`](https://man7.org/linux/man-pages/man8/lvs.8.html) CLI tool but avoids directly executing the binary. Instead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment. This approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n- NetBSD\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **lvm** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **lvm**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/lvm.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| timeout | lvs binary execution timeout. | 2 | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **lvm** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the lvm data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _lvm_ (or scroll the list) to locate the **lvm** collector.\n5. Click the **+** next to the **lvm** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/lvm.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/lvm.conf\n```\n\n##### Examples\n\n###### Custom update_every\n\nAllows you to override the default data collection interval.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: lvm\n update_every: 5 # Collect logical volume statistics every 5 seconds\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `lvm` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m lvm\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m lvm -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `lvm` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep lvm\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep lvm /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep lvm\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ lvm_lv_data_space_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/lvm.conf) | lvm.lv_data_space_utilization | LVM logical volume high data space usage (LV ${label:lv_name} VG ${label:vg_name} Type ${label:volume_type}) |\n| [ lvm_lv_metadata_space_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/lvm.conf) | lvm.lv_metadata_space_utilization | LVM logical volume high metadata space usage (LV ${label:lv_name} VG ${label:vg_name} Type ${label:volume_type}) |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per logical volume\n\nThese metrics refer to the LVM logical volume.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| lv_name | Logical volume name |\n| vg_name | Volume group name |\n| volume_type | Type of the volume |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| lvm.lv_data_space_utilization | utilization | % |\n| lvm.lv_metadata_space_utilization | utilization | % |\n\n",integration_type:"collector",id:"go.d.plugin-lvm-LVM_logical_volumes",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/lvm/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-maxscale",plugin_name:"go.d.plugin",module_name:"maxscale",monitored_instance:{name:"MaxScale",link:"https://mariadb.com/kb/en/maxscale/",categories:["data-collection.databases"],icon_filename:"maxscale.svg"},related_resources:{integrations:{list:[]}},alternative_monitored_instances:[],info_provided_to_referring_integrations:{description:""},keywords:["maria","mariadb","maxscale","database","db"]},overview:"# MaxScale\n\nPlugin: go.d.plugin\nModule: maxscale\n\n## Overview\n\nThis collector monitors the activity and performance of MaxScale servers.\n\n\nIt sends HTTP requests to the MaxScale [REST API](https://mariadb.com/kb/en/maxscale-24-02rest-api/).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector can automatically detect MaxScale instances running on:\n\n- localhost that are listening on port 8989\n- within Docker containers\n\n> **Note that the MaxScale REST API requires a username and password**. \n> While Netdata can automatically detect MaxScale instances and create data collection jobs, these jobs will fail unless you provide the necessary credentials.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **maxscale** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **maxscale**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/maxscale.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8989 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | admin | no |\n| | password | Password for Basic HTTP authentication. | mariadb | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **maxscale** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the maxscale data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _maxscale_ (or scroll the list) to locate the **maxscale** collector.\n5. Click the **+** next to the **maxscale** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/maxscale.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/maxscale.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8989\n username: admin\n password: mariadb\n\n```\n###### HTTPS with self-signed certificate\n\nMaxScale with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8989\n username: admin\n password: mariadb\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8989\n username: admin\n password: mariadb\n\n - name: remote\n url: http://192.0.2.1:8989\n username: admin\n password: mariadb\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `maxscale` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m maxscale\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m maxscale -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `maxscale` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep maxscale\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep maxscale /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep maxscale\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per MaxScale instance\n\nThese metrics refer to the monitored MaxScale instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| maxscale.poll_events | reads, writes, accepts, errors, hangups | events/s |\n| maxscale.current_sessions | sessions | sessions |\n| maxscale.current_zombie_connections | zombie | connections |\n| maxscale.threads_by_state | active, draining, dormant | threads |\n| maxscale.current_fds | managed | fds |\n| maxscale.qc_cache_efficiency | hits, misses | requests/s |\n| maxscale.qc_cache_operations | inserts, evictions | operations/s |\n| maxscale.uptime | uptime | seconds |\n\n### Per server\n\nThese metrics refer to the MariaDB server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| server | Server ID. |\n| address | Server address. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| maxscale.server_state | master, slave, running, down, maintenance, draining, drained, relay_master, binlog_relay, synced | state |\n| maxscale.server_current_connections | connections | connections |\n\n",integration_type:"collector",id:"go.d.plugin-maxscale-MaxScale",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/maxscale/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-megacli",plugin_name:"go.d.plugin",module_name:"megacli",monitored_instance:{name:"MegaCLI MegaRAID",link:"https://wikitech.wikimedia.org/wiki/MegaCli",icon_filename:"hard-drive.svg",categories:["data-collection.storage"]},keywords:["storage","raid-controller","manage-disks"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# MegaCLI MegaRAID\n\nPlugin: go.d.plugin\nModule: megacli\n\n## Overview\n\nMonitors the health of MegaCLI Hardware RAID by tracking the status of RAID adapters, physical drives, and backup batteries in your storage system.\nIt relies on the `megacli` CLI tool but avoids directly executing the binary.\nInstead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment.\nThis approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.\n\nExecuted commands:\n- `megacli -LDPDInfo -aAll -NoLog`\n- `megacli -AdpBbuCmd -aAll -NoLog`\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n- BSD\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **megacli** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **megacli**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/megacli.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| timeout | megacli binary execution timeout. | 2 | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **megacli** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the megacli data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _megacli_ (or scroll the list) to locate the **megacli** collector.\n5. Click the **+** next to the **megacli** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/megacli.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/megacli.conf\n```\n\n##### Examples\n\n###### Custom update_every\n\nAllows you to override the default data collection interval.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: megacli\n update_every: 5 # Collect MegaCli Hardware RAID statistics every 5 seconds\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `megacli` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m megacli\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m megacli -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `megacli` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep megacli\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep megacli /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep megacli\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ megacli_adapter_health_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/megacli.conf) | megacli.adapter_health_state | MegaCLI adapter ${label:adapter_number} is in the degraded state |\n| [ megacli_phys_drive_media_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/megacli.conf) | megacli.phys_drive_media_errors | MegaCLI physical drive adapter ${label:adapter_number} slot ${label:slot_number} media errors |\n| [ megacli_phys_drive_predictive_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/megacli.conf) | megacli.phys_drive_predictive_failures | MegaCLI physical drive (adapter ${label:adapter_number} slot ${label:slot_number}) predictive failures |\n| [ megacli_bbu_charge ](https://github.com/netdata/netdata/blob/master/src/health/health.d/megacli.conf) | megacli.bbu_charge | MegaCLI Backup Battery Unit (adapter ${label:adapter_number}) average charge over the last minute |\n| [ megacli_bbu_recharge_cycles ](https://github.com/netdata/netdata/blob/master/src/health/health.d/megacli.conf) | megacli.bbu_recharge_cycles | MegaCLI Backup Battery Unit (adapter ${label:adapter_number}) average charge over the last minute |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per adapter\n\nThese metrics refer to the MegaCLI Adapter.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| adapter_number | Adapter number |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| megacli.adapter_health_state | optimal, degraded, partially_degraded, failed | state |\n\n### Per physical drive\n\nThese metrics refer to the MegaCLI Physical Drive.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| adapter_number | Adapter number |\n| wwn | World Wide Name |\n| slot_number | Slot number |\n| drive_position | Position (e.g. DiskGroup: 0, Span: 0, Arm: 2) |\n| drive_type | Type (e.g. SATA) |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| megacli.phys_drive_media_errors_rate | media_errors | errors/s |\n| megacli.phys_drive_predictive_failures_rate | predictive_failures | failures/s |\n\n### Per backup battery unit\n\nThese metrics refer to the MegaCLI Backup Battery Unit.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| adapter_number | Adapter number |\n| battery_type | Battery type (e.g. BBU) |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| megacli.bbu_charge | charge | percentage |\n| megacli.bbu_recharge_cycles | recharge | cycles |\n| megacli.bbu_capacity_degradation | cap_degradation | percent |\n| megacli.bbu_temperature | temperature | Celsius |\n\n",integration_type:"collector",id:"go.d.plugin-megacli-MegaCLI_MegaRAID",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/megacli/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-memcached",plugin_name:"go.d.plugin",module_name:"memcached",monitored_instance:{name:"Memcached",link:"https://memcached.org/",categories:["data-collection.databases"],icon_filename:"memcached.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["memcached","memcache","cache","database"]},overview:"# Memcached\n\nPlugin: go.d.plugin\nModule: memcached\n\n## Overview\n\nMonitor Memcached metrics for proficient in-memory key-value store operations. Track cache hits, misses, and memory usage for efficient data caching.\n\nIt reads the server's response to the `stats` command.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nIf no configuration is given, collector will attempt to connect to memcached instance on `127.0.0.1:11211` address.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **memcached** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **memcached**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/memcached.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### UNIX socket access\n\nIf you are connecting to Memcached via its UNIX socket, ensure that the `netdata` user\nhas permission to access it. You can do this by:\n\n1. Adding the `netdata` user to the `memcache` group.\n ```bash\n sudo gpasswd -a netdata memcache\n ```\n2. Configuring the socket permissions in `/etc/memcached.conf` so the group has access (e.g. `-a 770`).\n\n**Note**: You may need to restart Memcached after making these changes for them to take effect.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | Memcached server address (`IP:PORT`). | 127.0.0.1:11211 | yes |\n| | timeout | Connection, read, write, and name resolution timeout (seconds). | 1 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **memcached** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the memcached data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _memcached_ (or scroll the list) to locate the **memcached** collector.\n5. Click the **+** next to the **memcached** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/memcached.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/memcached.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:11211\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:11211\n\n - name: remote\n address: 203.0.113.0:11211\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `memcached` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m memcached\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m memcached -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `memcached` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep memcached\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep memcached /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep memcached\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ memcached_cache_memory_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/memcached.conf) | memcached.cache | cache memory utilization |\n| [ memcached_cache_fill_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/memcached.conf) | memcached.cache | average rate the cache fills up (positive), or frees up (negative) space over the last hour |\n| [ memcached_out_of_cache_space_time ](https://github.com/netdata/netdata/blob/master/src/health/health.d/memcached.conf) | memcached.cache | estimated time the cache will run out of space if the system continues to add data at the same rate as the past hour |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Memcached instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| memcached.cache | available, used | MiB |\n| memcached.net | in, out | kilobits/s |\n| memcached.connections | current, rejected, total | connections/s |\n| memcached.items | current, total | items |\n| memcached.evicted_reclaimed | reclaimed, evicted | items |\n| memcached.get | hints, misses | requests |\n| memcached.get_rate | rate | requests/s |\n| memcached.set_rate | rate | requests/s |\n| memcached.delete | hits, misses | requests |\n| memcached.cas | hits, misses, bad value | requests |\n| memcached.increment | hits, misses | requests |\n| memcached.decrement | hits, misses | requests |\n| memcached.touch | hits, misses | requests |\n| memcached.touch_rate | rate | requests/s |\n\n",integration_type:"collector",id:"go.d.plugin-memcached-Memcached",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/memcached/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-mongodb",plugin_name:"go.d.plugin",module_name:"mongodb",monitored_instance:{name:"MongoDB",link:"https://www.mongodb.com/",icon_filename:"mongodb.svg",categories:["data-collection.databases"]},keywords:["mongodb","databases"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# MongoDB\n\nPlugin: go.d.plugin\nModule: mongodb\n\n## Overview\n\nThis collector monitors MongoDB servers.\n\nExecuted queries:\n\n- [serverStatus](https://docs.mongodb.com/manual/reference/command/serverStatus/)\n- [dbStats](https://docs.mongodb.com/manual/reference/command/dbStats/)\n- [replSetGetStatus](https://www.mongodb.com/docs/manual/reference/command/replSetGetStatus/)\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **mongodb** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **mongodb**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/mongodb.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create a read-only user\n\nCreate a read-only user for Netdata in the admin database.\n\n- Authenticate as the admin user:\n\n ```bash\n use admin\n db.auth("admin", "<MONGODB_ADMIN_PASSWORD>")\n ```\n\n- Create a user:\n\n ```bash\n db.createUser({\n "user":"netdata",\n "pwd": "<UNIQUE_PASSWORD>",\n "roles" : [\n {role: \'read\', db: \'admin\' },\n {role: \'clusterMonitor\', db: \'admin\'},\n {role: \'read\', db: \'local\' }\n ]\n })\n ```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | uri | MongoDB connection string. See [URI syntax](https://www.mongodb.com/docs/manual/reference/connection-string/). | mongodb://localhost:27017 | yes |\n| | timeout | Query timeout (seconds). | 1 | no |\n| **Filters** | databases | Database selector. Defines which databases to collect metrics from. | | no |\n| **Functions** | functions.top_queries.disabled | Disable the [top-queries](#top-queries) function. | no | no |\n| | functions.top_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.top_queries.limit | Maximum number of queries to return. | 500 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **mongodb** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the mongodb data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _mongodb_ (or scroll the list) to locate the **mongodb** collector.\n5. Click the **+** next to the **mongodb** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/mongodb.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/mongodb.conf\n```\n\n##### Examples\n\n###### TCP socket\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n uri: mongodb://netdata:password@localhost:27017\n\n```\n{% /details %}\n###### With databases metrics\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n uri: mongodb://netdata:password@localhost:27017\n databases:\n includes:\n - "* *"\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n uri: mongodb://netdata:password@localhost:27017\n\n - name: remote\n uri: mongodb://netdata:password@203.0.113.0:27017\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `mongodb` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m mongodb\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m mongodb -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `mongodb` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep mongodb\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep mongodb /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep mongodb\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",functions:"## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Top Queries\n\nRetrieves profiled query statistics from MongoDB [system.profile](https://www.mongodb.com/docs/manual/reference/database-profiler/) collection.\n\nThis function queries the `system.profile` collection across all user databases (excluding admin, local, config) to retrieve slow or sampled queries captured by the MongoDB profiler. It provides detailed execution metrics including timing, document counts, and execution plan information.\n\nUse cases:\n- Identify slow queries that exceed the profiling threshold\n- Analyze query patterns by examining docs examined vs docs returned ratios\n- Detect collection scans (COLLSCAN) that may need index optimization\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Mongodb:top-queries` |\n| Require Cloud | yes |\n| Performance | Reads from `system.profile` collection across all user databases:<br/>\u2022 Profiling itself adds overhead to MongoDB operations (typically 1-5%)<br/>\u2022 Default limit of 500 rows balances usefulness with performance |\n| Security | Query text may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Document field values in query filters<br/>\u2022 Personal information in inserted/updated documents<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to MongoDB<br/>\u2022 Profiling is enabled on at least one user database<br/>\u2022 Returns HTTP 503 if collector is still initializing or profiling is disabled on all databases<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Enable MongoDB profiling\n\nDatabase profiling must be enabled on each database you want to monitor, and the function must be enabled in the collector configuration.\n\n1. Enable profiling on a database (profile slow queries > 100ms):\n\n ```javascript\n use myDatabase\n db.setProfilingLevel(1, { slowms: 100 })\n ```\n\n2. Or profile all operations (level 2, use with caution):\n\n ```javascript\n db.setProfilingLevel(2)\n ```\n\n3. Verify profiling status:\n\n ```javascript\n db.getProfilingStatus()\n ```\n\n4. Enable the function in Netdata collector config:\n\n ```yaml\n jobs:\n - name: local\n uri: mongodb://localhost:27017\n top_queries_function_enabled: true\n ```\n\n:::info\n\n- Profiling level 0 = off, 1 = slow operations only, 2 = all operations\n- The `slowms` threshold determines which queries are captured at level 1\n- `system.profile` is a capped collection; old entries are automatically removed\n- System databases (admin, local, config) are excluded from profiling queries\n\n:::\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. Options include execution time, docs examined, keys examined, and more. Defaults to execution time to focus on slowest queries. | yes | execution_time | |\n\n#### Returns\n\nProfiled query statistics from `system.profile`. Each row represents a single profiled operation with execution metrics and plan details.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Timestamp | timestamp | | | When the operation was profiled. Useful for correlating slow queries with application events. |\n| Namespace | string | | | Database and collection name in format `database.collection`. Identifies which collection the operation targeted. |\n| Operation | string | | | Type of operation: query, insert, update, remove, command, getmore. Helps categorize workload patterns. |\n| Query | string | | | The command document as JSON showing the query filter, projection, and options. Truncated to 4096 characters. |\n| Execution Time | duration | seconds | | Total execution time of the operation. High values indicate slow queries that may need optimization. |\n| Docs Examined | integer | | | Number of documents scanned during execution. A high ratio of docs examined to docs returned suggests missing or inefficient indexes. |\n| Keys Examined | integer | | | Number of index keys scanned. Compare with docs examined to assess index efficiency. |\n| Docs Returned | integer | | | Number of documents returned to the client. Compare with docs examined to identify inefficient queries. |\n| Plan Summary | string | | | Execution plan summary (e.g., IXSCAN, COLLSCAN, SORT). COLLSCAN indicates a full collection scan that may need an index. |\n| Client | string | | | Client IP address or hostname that executed the operation. Useful for identifying query sources. |\n| User | string | | | Authenticated user who executed the operation. Empty for unauthenticated connections. |\n| Docs Deleted | integer | | hidden | Number of documents deleted by the operation. Relevant for remove operations. |\n| Docs Inserted | integer | | hidden | Number of documents inserted by the operation. Relevant for insert operations. |\n| Docs Modified | integer | | hidden | Number of documents modified by the operation. Relevant for update operations. |\n| Response Length | integer | | hidden | Size of the response in bytes. Large responses may indicate queries returning excessive data. |\n| Num Yield | integer | | hidden | Number of times the operation yielded to allow other operations to proceed. High yields may indicate lock contention. |\n| App Name | string | | | Application name from the client connection string. Useful for identifying which application generated the query. |\n| Cursor Exhausted | string | | hidden | Whether the cursor was fully exhausted (Yes/No). |\n| Has Sort Stage | string | | hidden | Whether the query required an in-memory sort stage (Yes/No). In-memory sorts are slower than index-based sorts. |\n| Uses Disk | string | | hidden | Whether the operation used disk for sorting or aggregation (Yes/No). Indicates memory pressure. |\n| From Multi Planner | string | | hidden | Whether multiple query plans were evaluated (Yes/No). |\n| Replanned | string | | hidden | Whether the query was replanned due to plan cache eviction (Yes/No). |\n| Query Hash | string | | hidden | Hash of the query shape for identifying similar queries. Available in MongoDB 4.2+. |\n| Plan Cache Key | string | | hidden | Key used for plan cache lookup. Available in MongoDB 4.2+. |\n| Planning Time | duration | seconds | hidden | Time spent planning the query execution. Available in MongoDB 6.2+. |\n| CPU Time | duration | seconds | hidden | CPU time consumed by the operation. Available in MongoDB 6.3+ on Linux only. |\n| Query Framework | string | | hidden | Query execution framework used (classic or SBE). Available in MongoDB 7.0+. |\n| Query Shape Hash | string | | hidden | Hash representing the query shape for grouping similar queries. Available in MongoDB 8.0+. |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n- WireTiger metrics are available only if [WiredTiger](https://docs.mongodb.com/v6.0/core/wiredtiger/) is used as the\nstorage engine.\n- Sharding metrics are available on shards only\nfor [mongos](https://www.mongodb.com/docs/manual/reference/program/mongos/).\n\n\n### Per MongoDB instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mongodb.operations_rate | reads, writes, commands | operations/s |\n| mongodb.operations_latency_time | reads, writes, commands | milliseconds |\n| mongodb.operations_by_type_rate | insert, query, update, delete, getmore, command | operations/s |\n| mongodb.document_operations_rate | inserted, deleted, returned, updated | operations/s |\n| mongodb.scanned_indexes_rate | scanned | indexes/s |\n| mongodb.scanned_documents_rate | scanned | documents/s |\n| mongodb.active_clients_count | readers, writers | clients |\n| mongodb.queued_operations_count | reads, writes | operations |\n| mongodb.cursors_open_count | open | cursors |\n| mongodb.cursors_open_no_timeout_count | open_no_timeout | cursors |\n| mongodb.cursors_opened_rate | opened | cursors/s |\n| mongodb.cursors_timed_out_rate | timed_out | cursors/s |\n| mongodb.cursors_by_lifespan_count | le_1s, 1s_5s, 5s_15s, 15s_30s, 30s_1m, 1m_10m, ge_10m | cursors |\n| mongodb.transactions_count | active, inactive, open, prepared | transactions |\n| mongodb.transactions_rate | started, aborted, committed, prepared | transactions/s |\n| mongodb.connections_usage | available, used | connections |\n| mongodb.connections_by_state_count | active, threaded, exhaust_is_master, exhaust_hello, awaiting_topology_changes | connections |\n| mongodb.connections_rate | created | connections/s |\n| mongodb.asserts_rate | regular, warning, msg, user, tripwire, rollovers | asserts/s |\n| mongodb.network_traffic_rate | in, out | bytes/s |\n| mongodb.network_requests_rate | requests | requests/s |\n| mongodb.network_slow_dns_resolutions_rate | slow_dns | resolutions/s |\n| mongodb.network_slow_ssl_handshakes_rate | slow_ssl | handshakes/s |\n| mongodb.memory_resident_size | used | bytes |\n| mongodb.memory_virtual_size | used | bytes |\n| mongodb.memory_page_faults_rate | pgfaults | pgfaults/s |\n| mongodb.memory_tcmalloc_stats | allocated, central_cache_freelist, transfer_cache_freelist, thread_cache_freelists, pageheap_freelist, pageheap_unmapped | bytes |\n| mongodb.wiredtiger_concurrent_read_transactions_usage | available, used | transactions |\n| mongodb.wiredtiger_concurrent_write_transactions_usage | available, used | transactions |\n| mongodb.wiredtiger_cache_usage | used | bytes |\n| mongodb.wiredtiger_cache_dirty_space_size | dirty | bytes |\n| mongodb.wiredtiger_cache_io_rate | read, written | pages/s |\n| mongodb.wiredtiger_cache_evictions_rate | unmodified, modified | pages/s |\n| mongodb.sharding_nodes_count | shard_aware, shard_unaware | nodes |\n| mongodb.sharding_sharded_databases_count | partitioned, unpartitioned | databases |\n| mongodb.sharding_sharded_collections_count | partitioned, unpartitioned | collections |\n\n### Per lock type\n\nThese metrics refer to the lock type.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| lock_type | lock type (e.g. global, database, collection, mutex) |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mongodb.lock_acquisitions_rate | shared, exclusive, intent_shared, intent_exclusive | acquisitions/s |\n\n### Per commit type\n\nThese metrics refer to the commit type.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| commit_type | commit type (e.g. noShards, singleShard, singleWriteShard) |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mongodb.transactions_commits_rate | success, fail | commits/s |\n| mongodb.transactions_commits_duration_time | commits | milliseconds |\n\n### Per database\n\nThese metrics refer to the database.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| database | database name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mongodb.database_collection_count | collections | collections |\n| mongodb.database_indexes_count | indexes | indexes |\n| mongodb.database_views_count | views | views |\n| mongodb.database_documents_count | documents | documents |\n| mongodb.database_data_size | data_size | bytes |\n| mongodb.database_storage_size | storage_size | bytes |\n| mongodb.database_index_size | index_size | bytes |\n\n### Per replica set member\n\nThese metrics refer to the replica set member.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| repl_set_member | replica set member name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mongodb.repl_set_member_state | primary, startup, secondary, recovering, startup2, unknown, arbiter, down, rollback, removed | state |\n| mongodb.repl_set_member_health_status | up, down | status |\n| mongodb.repl_set_member_replication_lag_time | replication_lag | milliseconds |\n| mongodb.repl_set_member_heartbeat_latency_time | heartbeat_latency | milliseconds |\n| mongodb.repl_set_member_ping_rtt_time | ping_rtt | milliseconds |\n| mongodb.repl_set_member_uptime | uptime | seconds |\n\n### Per shard\n\nThese metrics refer to the shard.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| shard_id | shard id |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mongodb.sharding_shard_chunks_count | chunks | chunks |\n\n",integration_type:"collector",id:"go.d.plugin-mongodb-MongoDB",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/mongodb/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-monit",plugin_name:"go.d.plugin",module_name:"monit",monitored_instance:{name:"Monit",link:"https://mmonit.com/monit/",categories:["data-collection.synthetic-testing"],icon_filename:"monit.png"},related_resources:{integrations:{list:[]}},alternative_monitored_instances:[],info_provided_to_referring_integrations:{description:""},keywords:["monit","mmonit","supervision tool","monitrc"]},overview:"# Monit\n\nPlugin: go.d.plugin\nModule: monit\n\n## Overview\n\nThis collector monitors status of Monit's service checks.\n\n\nIt sends HTTP requests to the Monit `/_status?format=xml&level=full` endpoint.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Monit instances running on localhost that are listening on port 2812.\nOn startup, it tries to collect metrics from:\n\n- http://127.0.0.1:2812\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **monit** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **monit**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/monit.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable TCP PORT\n\nSee [Syntax for TCP port](https://mmonit.com/monit/documentation/monit.html#TCP-PORT) for details.\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:2812 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | admin | no |\n| | password | Password for Basic HTTP authentication. | monit | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **monit** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the monit data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _monit_ (or scroll the list) to locate the **monit** collector.\n5. Click the **+** next to the **monit** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/monit.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/monit.conf\n```\n\n##### Examples\n\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:2812\n username: admin\n password: monit\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nWith enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:2812\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:2812\n\n - name: remote\n url: http://192.0.2.1:2812\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `monit` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m monit\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m monit -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `monit` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep monit\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep monit /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep monit\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per service\n\nThese metrics refer to the monitored Service.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| server_hostname | Hostname of the Monit server. |\n| service_check_name | Service check name. |\n| service_check_type | Service check type. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| monit.service_check_status | ok, error, initializing, not_monitored | status |\n\n",integration_type:"collector",id:"go.d.plugin-monit-Monit",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/monit/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-mssql",plugin_name:"go.d.plugin",module_name:"mssql",monitored_instance:{name:"Microsoft SQL Server",link:"https://www.microsoft.com/en-us/sql-server",categories:["data-collection.databases"],icon_filename:"mssql.svg"},related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},info_provided_to_referring_integrations:{description:""},keywords:["db","database","mssql","sql server","microsoft"]},overview:'# Microsoft SQL Server\n\nPlugin: go.d.plugin\nModule: mssql\n\n## Overview\n\nThis collector monitors the health and performance of Microsoft SQL Server instances.\n\nIt collects metrics from:\n- Performance counters (buffer manager, memory manager, SQL statistics)\n- Dynamic management views (DMVs) for wait statistics, locks, and sessions\n- Per-database transaction and lock statistics\n- SQL Server Agent job status and execution history\n- Always On Availability Group health, replica states, and per-database synchronization metrics\n- Replication publication status, warnings, latency, and subscription counts\n\nAll SQL Server editions are supported, including Express, Developer, Standard, Enterprise, and Web.\nOn editions that lack certain features, the collector omits the unavailable metrics and continues\ncollecting the rest:\n- SQL Server Express and other editions without SQL Server Agent: job metrics are not collected.\n- Editions without Always On Availability Groups (e.g., Express): AG metrics are not collected.\n- Editions without replication configured: replication metrics are not collected.\n\nCore metrics \u2014 performance counters, wait statistics, locks, per-database transactions, I/O latency,\nand memory \u2014 are collected on every edition without special configuration. The top-queries function\nis available on Express 2016 SP1 and later when Query Store is enabled.\n\n\nIt connects to the SQL Server instance via TCP using the go-mssqldb driver and executes queries against:\n\n- `sys.dm_os_performance_counters` - Performance counter values\n- `sys.dm_exec_sessions` - Connection information\n- `sys.dm_os_wait_stats` - Wait statistics\n- `sys.dm_tran_locks` - Lock information\n- `sys.dm_io_virtual_file_stats` - I/O stall (latency) statistics\n- `sys.dm_os_process_memory` - SQL Server process memory\n- `sys.dm_os_sys_memory` - OS physical memory and page file\n- `sys.master_files` - Database file sizes\n- `msdb.dbo.sysjobs` - SQL Agent job status\n- `msdb.dbo.sysjobhistory` - SQL Agent completed job execution history\n- `msdb.dbo.sysjobactivity` - SQL Agent current job activity\n- `sys.dm_hadr_availability_group_states` - AG health rollup\n- `sys.dm_hadr_availability_replica_states` - Replica operational state\n- `sys.dm_hadr_database_replica_states` - Database sync queues and rates\n- `sys.dm_hadr_cluster` / `sys.dm_hadr_cluster_members` - WSFC cluster health\n- `sys.dm_hadr_database_replica_cluster_states` - Failover readiness\n- `sys.dm_hadr_auto_page_repair` - Automatic page repair events\n- `sys.dm_hadr_ag_threads` - AG thread usage (SQL Server 2019+)\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe monitoring user requires the VIEW SERVER STATE permission to access DMVs.\n\nSQL Agent job metrics require access to `msdb.dbo.sysjobs`.\n\nSQL Agent job execution metrics additionally require access to `msdb.dbo.sysjobhistory` and `msdb.dbo.sysjobactivity`.\nIf those optional `msdb` grants are missing, the collector continues collecting other SQL Server metrics and omits only the affected SQL Agent job metrics.\n\nCurrent job execution time is based on the latest visible SQL Server Agent activity session.\nIf SQL Server Agent stops or crashes while a job is recorded as running, `sysjobactivity` can report that job as running until Agent creates a newer session or activity/history state changes.\n\nLast execution warning detection checks failed step history between the previous and latest completed job summary rows.\nIf SQL Server Agent step history is suppressed or purged before collection, a job that completed successfully with failed intermediate steps can be reported as `ok` instead of `warning`.\n\nAlways On AG monitoring requires VIEW ANY DEFINITION for access to availability group catalog views.\nOn SQL Server 2022+, HADR DMVs may additionally require VIEW SERVER PERFORMANCE STATE.\n\n\nMicrosoft SQL Server can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it tries to connect to SQL Server on localhost:1433 without authentication.\nYou must configure proper credentials for monitoring.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe collector executes lightweight queries against system views.\nMost queries complete in milliseconds and have minimal impact on server performance.\n\n',setup:'## Setup\n\n\nYou can configure the **mssql** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **mssql**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/mssql.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create monitoring user\n\nCreate a SQL Server login with VIEW SERVER STATE permission:\n\n```sql\n-- Create login\nCREATE LOGIN netdata_user WITH PASSWORD = \'YourStrongPassword!\';\n\n-- Grant VIEW SERVER STATE (required for DMVs)\nGRANT VIEW SERVER STATE TO netdata_user;\n\n-- Grant VIEW ANY DEFINITION (required for Always On AG monitoring)\nGRANT VIEW ANY DEFINITION TO netdata_user;\n\n-- Grant VIEW SERVER PERFORMANCE STATE (required for HADR DMVs on SQL Server 2022+)\n-- GRANT VIEW SERVER PERFORMANCE STATE TO netdata_user;\n\n-- Grant access to msdb for SQL Agent job monitoring\nUSE msdb;\nCREATE USER netdata_user FOR LOGIN netdata_user;\nGRANT SELECT ON dbo.sysjobs TO netdata_user;\nGRANT SELECT ON dbo.sysjobhistory TO netdata_user;\nGRANT SELECT ON dbo.sysjobactivity TO netdata_user;\n\n-- Optional: Grant access to distribution database for replication monitoring\n-- (only if replication is configured)\nUSE distribution;\nCREATE USER netdata_user FOR LOGIN netdata_user;\nGRANT SELECT ON dbo.MSreplication_monitordata TO netdata_user;\nGRANT SELECT ON dbo.MSpublications TO netdata_user;\nGRANT SELECT ON dbo.MSsubscriptions TO netdata_user;\n```\n\n**Required permissions:**\n- `VIEW SERVER STATE` - Access to dynamic management views\n\n**Optional permissions:**\n- `SELECT on msdb.dbo.sysjobs` - SQL Agent job status monitoring\n- `SELECT on msdb.dbo.sysjobhistory` - SQL Agent completed job execution history\n- `SELECT on msdb.dbo.sysjobactivity` - SQL Agent current job activity\n- `VIEW ANY DEFINITION` - Always On Availability Group monitoring\n- `VIEW SERVER PERFORMANCE STATE` - HADR DMVs on SQL Server 2022+\n- `SELECT on distribution.dbo.MSreplication_monitordata` - Replication monitoring\n- `SELECT on distribution.dbo.MSpublications` - Publication information\n- `SELECT on distribution.dbo.MSsubscriptions` - Subscription counts\n\n\n#### Grant Windows Authentication access (optional)\n\nIf you prefer Windows integrated authentication instead of SQL authentication, grant the\nNetdata service account access to SQL Server.\n\nBy default, the Netdata service runs as `Local System`. The identity it presents to\nSQL Server depends on whether the connection is local or remote:\n\n**Local connection (Netdata and SQL Server on the same machine):**\n\n`Local System` always authenticates as `NT AUTHORITY\\SYSTEM`, regardless of whether\nthe machine is domain-joined or in a workgroup.\n\n```sql\nCREATE LOGIN [NT AUTHORITY\\SYSTEM] FROM WINDOWS;\nGRANT VIEW SERVER STATE TO [NT AUTHORITY\\SYSTEM];\nGRANT VIEW ANY DEFINITION TO [NT AUTHORITY\\SYSTEM];\nUSE msdb;\nCREATE USER [NT AUTHORITY\\SYSTEM] FOR LOGIN [NT AUTHORITY\\SYSTEM];\nGRANT SELECT ON dbo.sysjobs TO [NT AUTHORITY\\SYSTEM];\nGRANT SELECT ON dbo.sysjobhistory TO [NT AUTHORITY\\SYSTEM];\nGRANT SELECT ON dbo.sysjobactivity TO [NT AUTHORITY\\SYSTEM];\n```\n\n**Remote connection (Netdata connects to SQL Server on another machine):**\n\nOn a domain-joined machine, `Local System` authenticates over the network as the\ncomputer account (`DOMAIN\\COMPUTERNAME$`). Replace with your actual values\n(e.g., `MYDOM\\SQLBOX01$`).\n\n```sql\nCREATE LOGIN [DOMAIN\\COMPUTERNAME$] FROM WINDOWS;\nGRANT VIEW SERVER STATE TO [DOMAIN\\COMPUTERNAME$];\nGRANT VIEW ANY DEFINITION TO [DOMAIN\\COMPUTERNAME$];\nUSE msdb;\nCREATE USER [DOMAIN\\COMPUTERNAME$] FOR LOGIN [DOMAIN\\COMPUTERNAME$];\nGRANT SELECT ON dbo.sysjobs TO [DOMAIN\\COMPUTERNAME$];\nGRANT SELECT ON dbo.sysjobhistory TO [DOMAIN\\COMPUTERNAME$];\nGRANT SELECT ON dbo.sysjobactivity TO [DOMAIN\\COMPUTERNAME$];\n```\n\nFor the default `Local System` service account, remote Windows Authentication works\nonly on domain-joined machines, where it can authenticate as the computer account.\nIn workgroups, use a different Windows service account if you need remote Windows\nAuthentication.\n\n> **Note**: To verify which account SQL Server sees, connect with Windows Authentication\n> and run `SELECT SYSTEM_USER`.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | dsn | SQL Server DSN (Data Source Name). See [DSN syntax](https://github.com/microsoft/go-mssqldb#connection-parameters-and-dsn). When `cloud_auth.provider` is `azure_ad`, use URL format with `sqlserver://` scheme. | sqlserver://localhost:1433 | yes |\n| **Cloud Auth** | cloud_auth.provider | Cloud auth provider (`none` or `azure_ad`). | none | no |\n| **Cloud Auth/Azure** | cloud_auth.azure_ad.mode | Azure AD credential mode (`service_principal`, `managed_identity`, or `default`). Required when `cloud_auth.provider` is `azure_ad`. | | yes |\n| | cloud_auth.azure_ad.mode_service_principal.tenant_id | Azure tenant ID. Required for `service_principal` mode. | | no |\n| | cloud_auth.azure_ad.mode_service_principal.client_id | Azure client ID. Required for `service_principal` mode. | | no |\n| | cloud_auth.azure_ad.mode_service_principal.client_secret | Azure client secret for `service_principal` mode. | | no |\n| | cloud_auth.azure_ad.mode_managed_identity.client_id | Optional client ID of a user-assigned managed identity (`managed_identity` mode). | | no |\n| **Target** | timeout | Query timeout (seconds). | 5 | no |\n| **Functions** | functions.top_queries.disabled | Disable the [top-queries](#top-queries) function. | no | no |\n| | functions.top_queries.timeout | Query timeout for top-queries function (seconds). Uses collector timeout if not set. | | no |\n| | functions.top_queries.limit | Maximum number of queries to return in the top-queries response. | 500 | no |\n| | functions.top_queries.time_window_days | Number of days of Query Store data to analyze. Set to 0 to include all available data. Smaller values improve query performance but show less history. | 7 | no |\n| | functions.deadlock_info.disabled | Disable the [deadlock-info](#deadlock-info) function. | no | no |\n| | functions.deadlock_info.timeout | Query timeout for deadlock-info function (seconds). Uses collector timeout if not set. | | no |\n| | functions.deadlock_info.use_ring_buffer | Use ring_buffer instead of event_file for system_health session.<br/><br/>WARNING: Not recommended for production:<br/>\u2022 Data cleared on failover/restart<br/>\u2022 4 MB capacity limit<br/>\u2022 High CPU load during queries<br/><br/>Use only for Azure SQL Database without Blob Storage or testing. | no | no |\n| | functions.error_info.disabled | Disable the [error-info](#error-info) function. | no | no |\n| | functions.error_info.timeout | Query timeout for error-info function (seconds). Uses collector timeout if not set. | | no |\n| | functions.error_info.session_name | Extended Events session name capturing error_reported events.<br/>Must be created by administrator with event_file (recommended) or ring_buffer target. | netdata_errors | no |\n| | functions.error_info.use_ring_buffer | Use ring_buffer instead of event_file for error events.<br/><br/>WARNING: Not recommended for production:<br/>\u2022 Data cleared on failover/restart<br/>\u2022 4 MB capacity limit<br/>\u2022 High CPU load during queries<br/><br/>Use only for Azure SQL Database without Blob Storage or testing. | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **mssql** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the mssql data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _mssql_ (or scroll the list) to locate the **mssql** collector.\n5. Click the **+** next to the **mssql** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/mssql.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/mssql.conf\n```\n\n##### Examples\n\n###### Basic configuration\n\nConnect to local SQL Server with SQL authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n dsn: "sqlserver://netdata_user:password@localhost:1433"\n\n```\n{% /details %}\n###### Windows Authentication\n\nConnect using Windows integrated authentication (Windows only).\n\nWhen no username/password is provided in the DSN, the driver uses the Netdata service account\'s\nWindows credentials. By default, the Netdata service runs as `Local System`, which authenticates\nto a local SQL Server as `NT AUTHORITY\\SYSTEM`.\n\nSee the [Grant Windows Authentication access](#grant-windows-authentication-access-optional) prerequisite\nto configure SQL Server for this.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n dsn: "sqlserver://localhost:1433"\n\n```\n{% /details %}\n###### Named instance\n\nConnect to a named SQL Server instance.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: named_instance\n dsn: "sqlserver://netdata_user:password@localhost/INSTANCENAME"\n\n```\n{% /details %}\n###### Remote server\n\nConnect to a remote SQL Server.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: remote\n dsn: "sqlserver://netdata_user:password@192.168.1.100:1433"\n\n```\n{% /details %}\n###### Azure SQL with service principal\n\nUse Microsoft Entra service principal authentication for Azure SQL.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: azure_sql_sp\n dsn: "sqlserver://my-server.database.windows.net:1433?database=mydb"\n cloud_auth:\n provider: azure_ad\n azure_ad:\n mode: service_principal\n mode_service_principal:\n tenant_id: "00000000-0000-0000-0000-000000000000"\n client_id: "11111111-1111-1111-1111-111111111111"\n client_secret: "super-secret-value"\n\n```\n{% /details %}\n###### Azure SQL with managed identity\n\nUse managed identity authentication (system-assigned by default).\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: azure_sql_mi\n dsn: "sqlserver://my-server.database.windows.net:1433?database=mydb"\n cloud_auth:\n provider: azure_ad\n azure_ad:\n mode: managed_identity\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nMonitoring multiple SQL Server instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: production\n dsn: "sqlserver://netdata_user:password@prod-sql:1433"\n\n - name: development\n dsn: "sqlserver://netdata_user:password@dev-sql:1433"\n\n```\n{% /details %}\n###### With custom function settings\n\nConfigure function-specific settings like timeouts and limits.\n\n> **Warning**: Query Store may contain unmasked literal values (PII).\n> Disable functions if not needed or ensure proper access controls.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n dsn: "sqlserver://netdata_user:password@localhost:1433"\n functions:\n top_queries:\n limit: 100\n time_window_days: 7\n deadlock_info:\n use_ring_buffer: true\n error_info:\n session_name: custom_errors\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `mssql` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m mssql\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m mssql -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `mssql` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep mssql\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep mssql /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep mssql\n```\n\n### Connection refused\n\nEnsure SQL Server is running and accepting TCP connections on the configured port.\nCheck that the SQL Server Browser service is running if using named instances.\n\n\n### Login failed\n\nVerify the username and password in the DSN are correct.\nEnsure SQL Server is configured for mixed mode authentication if using SQL logins.\n\n\n### Permission denied\n\nThe monitoring user needs VIEW SERVER STATE permission.\nGrant it with: `GRANT VIEW SERVER STATE TO netdata_user;`\n\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ mssql_database_log_percent_used ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mssql.conf) | mssql.database_log_percent_used | SQL Server transaction log percent used has been above 90% for the last 15 minutes |\n| [ mssql_sql_agent_job_last_execution_warning ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mssql.conf) | mssql.job_last_execution_status | SQL Server Agent job succeeded but at least one step failed in the last completed execution |\n| [ mssql_sql_agent_job_last_execution_failed ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mssql.conf) | mssql.job_last_execution_status | SQL Server Agent job failed in the last completed execution |\n",functions:"## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Top Queries\n\nRetrieves aggregated SQL query performance metrics from Microsoft SQL Server [Query Store](https://learn.microsoft.com/en-us/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store) runtime statistics.\n\nThis function queries `sys.query_store_runtime_stats` and related views across all databases with Query Store enabled, aggregating execution statistics by query hash. It provides comprehensive timing, I/O, memory, and parallelism metrics.\n\nUse cases:\n- Identify slow or resource-intensive queries consuming excessive CPU time or memory\n- Analyze I/O patterns (logical reads, physical reads, writes) to detect bottlenecks\n- Monitor parallelism (DOP) and tempdb usage for capacity planning\n\nQuery text is truncated at 4096 characters for display purposes. Columns are dynamically detected based on SQL Server version (some metrics only available in 2016+/2017+).\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Mssql:top-queries` |\n| Require Cloud | yes |\n| Performance | Executes dynamic SQL to aggregate Query Store data across all enabled databases:<br/>\u2022 Execution time depends on Query Store workload and number of monitored databases<br/>\u2022 Default limit of 500 rows balances completeness with performance |\n| Security | Query text may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Personal information in WHERE clauses or INSERT values<br/>\u2022 Business data and internal identifiers<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to SQL Server<br/>\u2022 Query Store is enabled on at least one user database<br/>\u2022 Returns HTTP 503 if collector is still initializing<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Enable Query Store\n\nQuery Store must be enabled on each database you want to monitor.\n\n1. Verify Query Store is enabled on your databases:\n\n ```sql\n SELECT name, is_query_store_on\n FROM sys.databases\n WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');\n ```\n\n2. Enable Query Store on databases where it is disabled:\n\n ```sql\n ALTER DATABASE [YourDatabaseName] SET QUERY_STORE = ON;\n ```\n\n3. Enable the function in Netdata collector config:\n\n ```yaml\n jobs:\n - name: local\n dsn: \"sqlserver://user:pass@localhost:1433\"\n query_store_function_enabled: true\n ```\n\n:::info\n\n- Query Store is available in SQL Server 2016+ and Azure SQL Database\n- Requires ALTER DATABASE permission to enable Query Store\n- System databases (master, tempdb, model, msdb) are excluded from queries\n\n:::\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. The available options depend on your SQL Server version and include metrics like total execution time, number of calls, CPU time, logical I/O, memory grants, and more. Default is Total Time to focus on most resource-intensive queries. | yes | totalTime | |\n\n#### Returns\n\nAggregated query execution statistics from Query Store runtime views, providing comprehensive performance analysis across all monitored databases. Each row represents a unique query pattern (normalized query hash) with cumulative metrics across all its executions.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Query Hash | string | | hidden | Unique hash identifier for the normalized query pattern. Queries with identical structure but different literal values share the same digest. |\n| Query | string | | | The SQL query text with literal values truncated at 4096 characters. Use this to identify the actual SQL being executed and spot parameterized queries or injection risks. |\n| Database | string | | | Database name where the query was executed. Essential for multi-database analysis to identify which database is experiencing query load. |\n| Calls | integer | | | Total number of times this query pattern has been executed. High values indicate frequently run queries that may impact server performance significantly. |\n| Error Attribution | string | | | Status of error detail attribution for this query. Values: enabled, no_data, not_enabled, not_supported. |\n| Error Number | integer | | | Most recent error number observed for this query (when error attribution is enabled). |\n| Error State | integer | | hidden | SQL Server error state for the most recent error (when error attribution is enabled). |\n| Error Message | string | | | Most recent error message for this query (when error attribution is enabled). |\n| Hash Match Joins | integer | | | Count of Hash Match join operators across all stored plans for this query. |\n| Merge Joins | integer | | | Count of Merge Join operators across all stored plans for this query. |\n| Nested Loops | integer | | | Count of Nested Loops operators across all stored plans for this query. |\n| Sorts | integer | | | Count of Sort operators across all stored plans for this query. |\n| Total Time | duration | milliseconds | | Cumulative execution time across all query executions. This is a key metric for identifying the most resource-intensive queries in terms of total server time consumption. |\n| Avg Time | duration | milliseconds | | Average execution time per query run, calculated as weighted average when execution count is greater than zero. Compare with Total Time to determine if individual executions or high frequency drives resource usage. |\n| Last Time | duration | milliseconds | hidden | Execution time of the most recent execution for this query pattern. Useful for identifying recent performance changes or individual outlier executions. |\n| Min Time | duration | milliseconds | hidden | Minimum execution time observed. Helps identify variability in query performance and spot potential optimization opportunities for outliers. |\n| Max Time | duration | milliseconds | hidden | Maximum execution time observed. Large gaps between Min Time and Max Time may indicate performance instability due to parameter sniffing, data skew, or lock contention. |\n| StdDev Time | duration | milliseconds | hidden | Standard deviation of execution time. High values indicate inconsistent query performance, making capacity planning difficult and suggesting need for query optimization or consistent indexing. |\n| Avg CPU | duration | milliseconds | | Average CPU time consumed per query execution. High values indicate CPU-intensive operations that may include complex calculations, string manipulations, or excessive function calls. Available in SQL Server 2016+. |\n| Last CPU | duration | milliseconds | hidden | CPU time of the most recent execution. Useful for identifying recent changes in query patterns and resource usage. |\n| Min CPU | duration | milliseconds | hidden | Minimum CPU time observed. Helps identify variability in CPU consumption and spot efficient vs. inefficient query executions. |\n| Max CPU | duration | milliseconds | hidden | Maximum CPU time observed. Spikes may indicate complex queries, large result sets, or parallelism issues. |\n| StdDev CPU | duration | milliseconds | hidden | Standard deviation of CPU time. High variability suggests inconsistent performance due to varying data volumes, plan cache hit rates, or changing execution contexts. |\n| Avg Logical Reads | float | | | Average number of logical read operations (8KB pages) per execution. High values indicate queries scanning large amounts of data through indexes or table scans. Monitor for I/O subsystem impact. |\n| Last Logical Reads | integer | | hidden | Logical reads from the most recent execution. Useful for identifying immediate query patterns and recent performance changes. |\n| Min Logical Reads | integer | | hidden | Minimum logical reads observed. Helps identify data access patterns and spot outliers. |\n| Max Logical Reads | integer | | hidden | Maximum logical reads observed. Very high values may indicate full table scans, missing indexes, or inefficient join operations requiring excessive data access. |\n| StdDev Logical Reads | float | | hidden | Standard deviation of logical reads. High variability suggests inconsistent access patterns, potentially indicating performance issues with certain queries or data volumes. |\n| Avg Logical Writes | float | | | Average number of logical write operations per execution. High values indicate heavy write workloads that may benefit from batching or optimization. |\n| Last Logical Writes | integer | | hidden | Logical writes from the most recent execution. Helps track recent write activity and identify immediate performance impact. |\n| Min Logical Writes | integer | | hidden | Minimum logical writes observed. Helps identify read-heavy vs. write-heavy query patterns and data access characteristics. |\n| Max Logical Writes | integer | | hidden | Maximum logical writes observed. Spikes may indicate bulk insert/update operations, large transactions, or data migration activities. |\n| StdDev Logical Writes | float | | hidden | Standard deviation of logical writes. High values indicate write performance variability, potentially suggesting inconsistent transaction sizes or periodic bulk operations. |\n| Avg Physical Reads | float | | | Average number of physical read operations from storage per execution. High values indicate queries requiring substantial disk I/O for data retrieval, potentially due to full table scans or missing covering indexes. |\n| Last Physical Reads | integer | | hidden | Physical reads from the most recent execution. Useful for identifying immediate I/O patterns and recent storage subsystem pressure. |\n| Min Physical Reads | integer | | hidden | Minimum physical reads observed. Helps baseline I/O patterns and identify read-intensive query scenarios. |\n| Max Physical Reads | integer | | hidden | Maximum physical reads observed. Extremely high values may indicate storage subsystem bottlenecks, full table scans without covering indexes, or queries processing very large data volumes. |\n| StdDev Physical Reads | float | | hidden | Standard deviation of physical reads. High variability suggests inconsistent disk access patterns, potentially indicating intermittent I/O performance issues or storage contention. |\n| Avg CLR Time | duration | milliseconds | | Average CLR (Common Language Runtime) time per execution. High values indicate managed code (stored procedures, functions, triggers) with heavy computations, garbage collection pressure, or inefficient memory allocations. Available in SQL Server 2016+. |\n| Last CLR Time | duration | milliseconds | hidden | CLR time of the most recent execution. Useful for identifying recent managed code performance changes and detecting inefficient code deployments. |\n| Min CLR Time | duration | milliseconds | hidden | Minimum CLR time observed. Helps identify efficient managed code executions and spot expensive CLR operations. |\n| Max CLR Time | duration | milliseconds | hidden | Maximum CLR time observed. Spikes may indicate complex managed code operations, large object allocations, or expensive .NET framework method calls. |\n| StdDev CLR Time | duration | milliseconds | hidden | Standard deviation of CLR time. High variability suggests inconsistent managed code execution patterns, potentially varying by execution parameters, data volumes, or different code paths being taken. |\n| Avg DOP | float | | | Average Degree of Parallelism (DOP) per query. Higher values indicate queries utilizing more CPU cores through parallelism, potentially consuming significant server resources. Values above 1 indicate intra-query parallelism; values of 1 indicate serial execution. |\n| Last DOP | integer | | hidden | DOP of the most recent execution. Helps track recent parallelism patterns and identify changes in query execution behavior. |\n| Min DOP | integer | | hidden | Minimum DOP observed. Values of 0 may indicate serial execution; values above 1 suggest parallel query execution within individual queries. |\n| Max DOP | integer | | hidden | Maximum DOP observed. Very high values (>4) may indicate aggressive parallelism consuming excessive resources and potentially affecting concurrent workloads. Available in SQL Server 2016+. |\n| StdDev DOP | float | | hidden | Standard deviation of DOP. High variability suggests inconsistent parallelism patterns across executions, potentially indicating performance variability based on data characteristics or query complexity. |\n| Avg Memory (8KB pages) | float | | | Average memory grant (in 8KB pages) per execution. High values indicate memory-intensive queries that may benefit from index optimization, reduced result sets, or query tuning to reduce working memory usage. |\n| Last Memory (8KB pages) | integer | | hidden | Memory grant from the most recent execution. Useful for identifying recent memory pressure and tracking immediate impact of resource-intensive queries. |\n| Min Memory (8KB pages) | integer | | hidden | Minimum memory grant observed. Helps identify memory-efficient queries and baseline memory requirements for common operations. |\n| Max Memory (8KB pages) | integer | | hidden | Maximum memory grant observed. Spikes may indicate queries with large sort operations, hash joins, temporary table creation, or excessive parameter lengths consuming working memory. |\n| StdDev Memory | float | | hidden | Standard deviation of memory grants. High variability suggests inconsistent memory usage patterns, potentially varying by execution parameters, result set sizes, or different code paths being executed. |\n| Avg Rows | float | | | Average number of rows processed per query execution. High values indicate queries returning large result sets that may consume significant network bandwidth, memory for result buffers, and client application resources. |\n| Last Rows | integer | | hidden | Row count from the most recent execution. Helps identify recent query patterns and track immediate data processing requirements. |\n| Min Rows | integer | | hidden | Minimum rows observed. Helps identify data access patterns and spot outliers in result set sizes. |\n| Max Rows | integer | | hidden | Maximum rows observed. Extremely high values may indicate full table scans without WHERE clauses, missing or inefficient filters, or data export operations. |\n| StdDev Rows | float | | hidden | Standard deviation of rows processed. High variability suggests inconsistent result set sizes, potentially due to varying query filters, parameterized inputs, or different data distributions across executions. |\n| Avg Log Bytes | float | | | Average transaction log bytes written per query execution (SQL Server 2017+). High values indicate write-intensive operations (INSERT/UPDATE/DELETE), large transactions, or bulk modifications. This measures WAL activity, not diagnostic logging. |\n| Last Log Bytes | integer | | hidden | Transaction log bytes from the most recent execution. Useful for tracking recent write activity. |\n| Min Log Bytes | integer | | hidden | Minimum transaction log bytes observed. Helps identify write-efficient queries and baseline requirements. |\n| Max Log Bytes | integer | | hidden | Maximum transaction log bytes observed. Spikes may indicate bulk operations, large transactions, or queries affecting many rows. |\n| StdDev Log Bytes | float | | hidden | Standard deviation of transaction log bytes. High variability suggests inconsistent write patterns, potentially varying by the number of rows affected or transaction sizes. |\n| Avg TempDB (8KB pages) | float | | | Average tempdb space usage (in 8KB pages) per execution. High values indicate queries that create or use large temporary objects, work tables, sort operations, or have heavy tempdb spillage from disk. High tempdb usage can lead to disk I/O contention and overall performance degradation. |\n| Last TempDB (8KB pages) | integer | | hidden | Tempdb space from the most recent execution. Useful for identifying recent tempdb pressure and tracking immediate disk I/O impact of resource-intensive queries. |\n| Min TempDB (8KB pages) | integer | | hidden | Minimum tempdb space observed. Helps identify tempdb-efficient queries and baseline temporary object requirements for common operations. |\n| Max TempDB (8KB pages) | integer | | hidden | Maximum tempdb space observed. Spikes may indicate queries with large sort operations, hash joins, index spool usage, or temporary table creation consuming substantial tempdb space. Can lead to tempdb autogrow and disk space issues. |\n| StdDev TempDB | float | | hidden | Standard deviation of tempdb space usage. High variability suggests inconsistent temporary object usage patterns, potentially varying by query complexity, parameter types, or different data access patterns affecting temporary object creation. |\n\n### Deadlock Info\n\nRetrieves the most recent deadlock event from SQL Server's `system_health` Extended Events session (`xml_deadlock_report`).\n\nThe deadlock graph XML is parsed to attribute the deadlock to the participating processes and their query text, lock mode, lock status, and wait resource.\n\nUse cases:\n- Identify which process was chosen as the deadlock victim\n- Inspect the waiting resource and lock mode involved in the deadlock\n- Correlate deadlocks with recent application changes or deployments\n\nQuery text and wait resource strings are truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Mssql:deadlock-info` |\n| Require Cloud | yes |\n| Performance | Executes on-demand queries against the `system_health` ring buffer:<br/>\u2022 Not part of regular metric collection<br/>\u2022 Overhead is limited to function execution time and XML parsing |\n| Security | Query text and wait resource strings may include unmasked literal values including sensitive data (PII/secrets):<br/>\u2022 SQL literals such as emails, IDs, or tokens<br/>\u2022 Schema and table names that may be sensitive in some environments<br/>\u2022 Restrict dashboard access to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to SQL Server<br/>\u2022 `deadlock_info_function_enabled` is true<br/>\u2022 The account has `VIEW SERVER STATE` permission<br/>\u2022 Returns HTTP 200 with empty data when no deadlock is found<br/>\u2022 Returns HTTP 403 when permission is missing<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 561 when the deadlock graph cannot be parsed<br/>\u2022 Returns HTTP 503 if the collector is still initializing or the function is disabled<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\nNo additional configuration is required.\n\n#### Parameters\n\nThis function has no parameters.\n\n#### Returns\n\nParsed deadlock participants from the latest detected deadlock event. Each row represents one process involved in the deadlock.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Row ID | string | | hidden | Unique row identifier composed of deadlock ID and process ID. |\n| Deadlock ID | string | | | Identifier for the deadlock event, derived from the deadlock timestamp to group participating processes. |\n| Timestamp | timestamp | | | Timestamp of the deadlock event from Extended Events when available; otherwise the function execution time. |\n| Process ID | string | | | Deadlock graph process identifier for the process involved in the deadlock. |\n| SPID | integer | | | SQL Server session ID (SPID) for the process when available. |\n| ECID | integer | | | Execution context ID (ECID) for parallel execution contexts when available. |\n| Victim | string | | | \"true\" when the process was chosen as the deadlock victim and rolled back; otherwise \"false\". |\n| Query | string | | | SQL query text for the process involved in the deadlock. Truncated to 4096 characters. |\n| Lock Mode | string | | | Lock mode reported for the process within the deadlock graph (for example X or S). |\n| Lock Status | string | | | Lock status for the process. WAITING indicates the process was waiting on a lock. |\n| Wait Resource | string | | | Lock resource identifier from the deadlock graph showing what the process was waiting on. |\n| Database | string | | | Database name mapped from the deadlock graph database ID when available. |\n\n### Error Info\n\nRetrieves recent SQL errors from a user-managed Extended Events session that captures `sqlserver.error_reported`\nwith both the `sql_text` and `query_hash` actions.\n\nThe session must be created by an administrator and include an `event_file` target. Netdata reads the event file\nand returns recent error events with error number, message, and SQL text. The `query_hash` action is required for\nreliable mapping into `top-queries` (query text fallback is best-effort).\n\nUse cases:\n- Identify recent query errors and their messages\n- Correlate errors to query text\n- Validate error rates seen in top-queries\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Mssql:error-info` |\n| Require Cloud | yes |\n| Performance | Executes on-demand queries against the configured Extended Events event file:<br/>\u2022 Not part of regular metric collection<br/>\u2022 Overhead is limited to function execution time |\n| Security | Error messages and query text may include unmasked literal values including sensitive data (PII/secrets):<br/>\u2022 Restrict dashboard access to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to SQL Server<br/>\u2022 `error_info_function_enabled` is true<br/>\u2022 The Extended Events session exists and has an event_file target<br/>\u2022 The account has `VIEW SERVER STATE` permission<br/>\u2022 Returns HTTP 200 with empty data when no errors are found<br/>\u2022 Returns HTTP 403 when permission is missing<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 503 if the session is not enabled or the function is disabled<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Create Extended Events session for error capture\n\nCreate an Extended Events session that captures `sqlserver.error_reported` with `sql_text` and `query_hash` actions:\n\n```sql\n-- Create the Extended Events session with event_file target\nCREATE EVENT SESSION [netdata_errors] ON SERVER\nADD EVENT sqlserver.error_reported(\n ACTION(sqlserver.sql_text, sqlserver.query_hash)\n)\nADD TARGET package0.event_file(SET filename=N'netdata_errors');\nGO\n\n-- Start the session\nALTER EVENT SESSION [netdata_errors] ON SERVER STATE = START;\nGO\n\n-- Grant required permission\nGRANT VIEW SERVER STATE TO [netdata_user];\n```\n\nIf you use a different session name, set it in the collector config:\n\n```yaml\njobs:\n - name: local\n dsn: \"sqlserver://user:pass@localhost:1433\"\n error_info_session_name: your_session_name\n```\n\n\n\n#### Parameters\n\nThis function has no parameters.\n\n#### Returns\n\nRecent error events from the configured Extended Events session.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Timestamp | timestamp | | | Timestamp of the error event. |\n| Error Number | integer | | | SQL Server error number. |\n| Error State | integer | | | SQL Server error state. |\n| Error Message | string | | | Error message text. |\n| Query | string | | | SQL text captured with the error event. |\n| Query Hash | string | | hidden | Query hash captured with the error event (used for mapping into top-queries). |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Microsoft SQL Server instance\n\nThese metrics refer to the entire SQL Server instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit | SQL Server | Azure SQL Database |\n|:------|:----------|:----|:---:|:---:|\n| mssql.user_connections | user | connections | \u2022 | \u2022 |\n| mssql.session_connections | user, internal | connections | \u2022 | \u2022 |\n| mssql.blocked_processes | blocked | processes | \u2022 | \u2022 |\n| mssql.batch_requests | batch | requests/s | \u2022 | \u2022 |\n| mssql.compilations | compilations | compilations/s | \u2022 | \u2022 |\n| mssql.recompilations | recompilations | recompilations/s | \u2022 | \u2022 |\n| mssql.auto_param_attempts | total, safe, failed | attempts/s | \u2022 | \u2022 |\n| mssql.sql_errors | errors | errors/s | \u2022 | \u2022 |\n| mssql.buffer_cache_hit_ratio | hit_ratio | percentage | \u2022 | \u2022 |\n| mssql.buffer_page_life_expectancy | life_expectancy | seconds | \u2022 | \u2022 |\n| mssql.buffer_page_iops | read, written | pages/s | \u2022 | \u2022 |\n| mssql.buffer_checkpoint_pages | flushed | pages/s | \u2022 | \u2022 |\n| mssql.buffer_page_lookups | lookups | lookups/s | \u2022 | \u2022 |\n| mssql.buffer_lazy_writes | lazy_writes | writes/s | \u2022 | \u2022 |\n| mssql.memory_total | memory | bytes | \u2022 | \u2022 |\n| mssql.memory_connection | memory | bytes | \u2022 | \u2022 |\n| mssql.memory_pending_grants | pending | processes | \u2022 | \u2022 |\n| mssql.memory_external_benefit | benefit | benefit | \u2022 | \u2022 |\n| mssql.page_splits | page | splits/s | \u2022 | \u2022 |\n| mssql.process_memory_resident | resident | bytes | \u2022 | \u2022 |\n| mssql.process_memory_virtual | virtual | bytes | \u2022 | \u2022 |\n| mssql.process_memory_utilization | utilization | percentage | \u2022 | \u2022 |\n| mssql.process_page_faults | page_faults | faults | \u2022 | \u2022 |\n| mssql.os_memory | used, available | bytes | \u2022 | \u2022 |\n| mssql.os_pagefile | used, available | bytes | \u2022 | \u2022 |\n\n### Per database\n\nThese metrics refer to individual databases.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| database | Database name |\n\nMetrics:\n\n| Metric | Dimensions | Unit | SQL Server | Azure SQL Database |\n|:------|:----------|:----|:---:|:---:|\n| mssql.database_active_transactions | active | transactions | \u2022 | \u2022 |\n| mssql.database_transactions | transactions | transactions/s | \u2022 | \u2022 |\n| mssql.database_write_transactions | write | transactions/s | \u2022 | \u2022 |\n| mssql.database_log_flushes | flushes | flushes/s | \u2022 | \u2022 |\n| mssql.database_log_flushed | flushed | bytes/s | \u2022 | \u2022 |\n| mssql.database_log_growths | growths | growths | \u2022 | \u2022 |\n| mssql.database_log_file_size | used, free | bytes | \u2022 | \u2022 |\n| mssql.database_log_percent_used | used | percentage | \u2022 | \u2022 |\n| mssql.database_log_truncations_shrinks | truncations, shrinks | events/s | \u2022 | \u2022 |\n| mssql.database_io_stall | read, write | ms | \u2022 | \u2022 |\n| mssql.database_data_file_size | size | bytes | \u2022 | \u2022 |\n| mssql.database_backup_restore_throughput | throughput | bytes/s | \u2022 | \u2022 |\n| mssql.database_state | online, restoring, recovering, pending, suspect, emergency, offline | state | \u2022 | \u2022 |\n| mssql.database_read_only | read_only, read_write | status | \u2022 | \u2022 |\n\n### Per lock stats\n\nThese metrics refer to lock statistics by lock resource type (from performance counters).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource | Lock resource type (Database, File, Object, Page, Key, Extent, RID, HoBT, etc.) |\n\nMetrics:\n\n| Metric | Dimensions | Unit | SQL Server | Azure SQL Database |\n|:------|:----------|:----|:---:|:---:|\n| mssql.lock_stats_deadlocks | deadlocks | deadlocks/s | \u2022 | \u2022 |\n| mssql.lock_stats_waits | waits | waits/s | \u2022 | \u2022 |\n| mssql.lock_stats_timeouts | timeouts | timeouts/s | \u2022 | \u2022 |\n| mssql.lock_stats_requests | requests | requests/s | \u2022 | \u2022 |\n\n### Per lock resource\n\nThese metrics refer to lock resource types (from sys.dm_tran_locks).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resource | Lock resource type (Database, File, Object, Page, Key, etc.) |\n\nMetrics:\n\n| Metric | Dimensions | Unit | SQL Server | Azure SQL Database |\n|:------|:----------|:----|:---:|:---:|\n| mssql.locks_by_resource | locks | locks | \u2022 | \u2022 |\n\n### Per wait type\n\nThese metrics refer to individual wait types (from sys.dm_os_wait_stats).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| wait_type | Wait type name |\n| wait_category | Wait category (CPU, Lock, Latch, Buffer IO, etc.) |\n\nMetrics:\n\n| Metric | Dimensions | Unit | SQL Server | Azure SQL Database |\n|:------|:----------|:----|:---:|:---:|\n| mssql.wait_total_time | duration | ms | \u2022 | \u2022 |\n| mssql.wait_resource_time | duration | ms | \u2022 | \u2022 |\n| mssql.wait_signal_time | duration | ms | \u2022 | \u2022 |\n| mssql.wait_max_time | max_time | ms | \u2022 | \u2022 |\n| mssql.wait_count | waits | waits/s | \u2022 | \u2022 |\n\n### Per job\n\nThese metrics refer to SQL Server Agent jobs.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| job_name | Job name |\n\nMetrics:\n\n| Metric | Dimensions | Unit | SQL Server | Azure SQL Database |\n|:------|:----------|:----|:---:|:---:|\n| mssql.job_status | enabled, disabled | status | \u2022 | |\n| mssql.job_last_execution_status | unknown, ok, warning, error, canceled | status | \u2022 | |\n| mssql.job_last_execution_duration | duration | seconds | \u2022 | |\n| mssql.job_last_execution_age | age | seconds | \u2022 | |\n| mssql.job_current_execution_time | duration | seconds | \u2022 | |\n\n### Per replication\n\nThese metrics refer to SQL Server replication publications.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| publisher_db | Publisher database name |\n| publication | Publication name |\n\nMetrics:\n\n| Metric | Dimensions | Unit | SQL Server | Azure SQL Database |\n|:------|:----------|:----|:---:|:---:|\n| mssql.replication_status | started, succeeded, in_progress, idle, retrying, failed | status | \u2022 | \u2022 |\n| mssql.replication_warning | expiration, latency, merge_expiration, merge_slow_duration, merge_fast_duration, merge_fast_speed, merge_slow_speed | flags | \u2022 | \u2022 |\n| mssql.replication_latency | average, best, worst | seconds | \u2022 | \u2022 |\n| mssql.replication_subscriptions | total, agents_running | subscriptions | \u2022 | \u2022 |\n\n### Per availability group\n\nThese metrics refer to Always On Availability Groups. Auto-detected when HADR is enabled.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| ag_name | Availability group name |\n\nMetrics:\n\n| Metric | Dimensions | Unit | SQL Server | Azure SQL Database |\n|:------|:----------|:----|:---:|:---:|\n| mssql.ag_sync_health | not_healthy, partially_healthy, healthy | state | \u2022 | \u2022 |\n| mssql.ag_recovery_health | primary_online, primary_in_progress, secondary_online, secondary_in_progress | state | \u2022 | \u2022 |\n| mssql.ag_threads | capture, redo, parallel_redo | threads | \u2022 | \u2022 |\n\n### Per availability group replica\n\nThese metrics refer to per-replica state within an Availability Group. Note: on secondary replicas, the replica states DMV returns only local information.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| ag_name | Availability group name |\n| replica_server | Replica server name |\n| availability_mode | Availability mode (synchronous_commit or asynchronous_commit) |\n| failover_mode | Failover mode (automatic or manual) |\n\nMetrics:\n\n| Metric | Dimensions | Unit | SQL Server | Azure SQL Database |\n|:------|:----------|:----|:---:|:---:|\n| mssql.ag_replica_role | primary, secondary, resolving, unknown | state | \u2022 | \u2022 |\n| mssql.ag_replica_connected_state | connected, disconnected, unknown | state | \u2022 | \u2022 |\n| mssql.ag_replica_sync_health | not_healthy, partially_healthy, healthy | state | \u2022 | \u2022 |\n\n### Per availability group database replica\n\nThese metrics refer to per-database synchronization within an Availability Group.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| ag_name | Availability group name |\n| replica_server | Replica server name |\n| database | Database name |\n\nMetrics:\n\n| Metric | Dimensions | Unit | SQL Server | Azure SQL Database |\n|:------|:----------|:----|:---:|:---:|\n| mssql.ag_db_sync_state | not_synchronizing, synchronizing, synchronized, reverting, initializing | state | \u2022 | \u2022 |\n| mssql.ag_db_log_send_queue | queue_size | bytes | \u2022 | \u2022 |\n| mssql.ag_db_log_send_rate | send_rate | bytes/s | \u2022 | \u2022 |\n| mssql.ag_db_redo_queue | queue_size | bytes | \u2022 | \u2022 |\n| mssql.ag_db_redo_rate | redo_rate | bytes/s | \u2022 | \u2022 |\n| mssql.ag_db_filestream_send_rate | send_rate | bytes/s | \u2022 | \u2022 |\n| mssql.ag_db_secondary_lag | lag | seconds | \u2022 | \u2022 |\n| mssql.ag_db_suspended | active, suspended | state | \u2022 | \u2022 |\n| mssql.ag_db_failover_readiness | ready, not_ready | state | \u2022 | \u2022 |\n| mssql.ag_db_joined_state | joined, not_joined | state | \u2022 | \u2022 |\n\n### Per WSFC cluster\n\nThese metrics refer to the Windows Server Failover Clustering quorum state.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit | SQL Server | Azure SQL Database |\n|:------|:----------|:----|:---:|:---:|\n| mssql.ag_cluster_quorum_state | normal, forced, unknown | state | \u2022 | \u2022 |\n\n### Per WSFC cluster member\n\nThese metrics refer to individual WSFC cluster members.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_member | Cluster member name |\n\nMetrics:\n\n| Metric | Dimensions | Unit | SQL Server | Azure SQL Database |\n|:------|:----------|:----|:---:|:---:|\n| mssql.ag_cluster_member_state | up, down | state | \u2022 | \u2022 |\n| mssql.ag_cluster_member_quorum_votes | votes | votes | \u2022 | \u2022 |\n\n### Per AG page repair\n\nThese metrics refer to automatic page repair events per database in an Availability Group.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| database | Database name |\n\nMetrics:\n\n| Metric | Dimensions | Unit | SQL Server | Azure SQL Database |\n|:------|:----------|:----|:---:|:---:|\n| mssql.ag_page_repair | successful, failed | repairs | \u2022 | \u2022 |\n\n",integration_type:"collector",id:"go.d.plugin-mssql-Microsoft_SQL_Server",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/mssql/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-mariadb",plugin_name:"go.d.plugin",module_name:"mysql",monitored_instance:{name:"MariaDB",link:"https://mariadb.org/",icon_filename:"mariadb.svg",categories:["data-collection.databases"]},related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},info_provided_to_referring_integrations:{description:""},keywords:["db","database","mysql","maria","mariadb","sql"]},overview:'# MariaDB\n\nPlugin: go.d.plugin\nModule: mysql\n\n## Overview\n\nThis collector monitors the health and performance of MySQL servers and collects general statistics, replication and user metrics.\n\n\nIt connects to the MySQL instance via a TCP or UNIX socket and executes the following commands:\n\nExecuted queries:\n\n- `SELECT VERSION();`\n- `SHOW GLOBAL STATUS;`\n- `SHOW ENGINE INNODB STATUS;`\n- `SHOW GLOBAL VARIABLES;`\n- `SHOW SLAVE STATUS;` or `SHOW ALL SLAVES STATUS;` (MariaDBv10.2+) or `SHOW REPLICA STATUS;` (MySQL 8.0.22+)\n- `SHOW USER_STATISTICS;` (MariaDBv10.1.1+)\n- `SELECT TIME,USER FROM INFORMATION_SCHEMA.PROCESSLIST;`\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nMariaDB can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on localhost by trying to connect as root and netdata using known MySQL TCP sockets:\n\n- 127.0.0.1:3306\n- "[::1]:3306"\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:"## Setup\n\n\nYou can configure the **mysql** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **mysql**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/mysql.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create netdata user\n\nA user account should have the following [permissions](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html):\n\n- [`USAGE`](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_usage)\n- [`REPLICATION CLIENT`](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_replication-client)\n- [`PROCESS`](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_process)\n\nTo create the `netdata` user with these permissions, execute the following in the MySQL shell:\n\n- **MySQL and MariaDB < 10.5.9**\n\n ```mysql\n CREATE USER 'netdata'@'localhost';\n GRANT USAGE, REPLICATION CLIENT, PROCESS ON *.* TO 'netdata'@'localhost';\n FLUSH PRIVILEGES;\n ```\n\n- **MariaDB >= 10.5.9**\n\n For MariaDB 10.5.9 and later, use the `SLAVE MONITOR` privilege instead of `REPLICATION CLIENT`:\n\n ```mysql\n CREATE USER 'netdata'@'localhost';\n GRANT USAGE, SLAVE MONITOR, PROCESS ON *.* TO 'netdata'@'localhost';\n FLUSH PRIVILEGES;\n ```\n\nThe `netdata` user will have the ability to connect to the MySQL server on localhost without a password.\nIt will only be able to gather statistics without being able to alter or affect operations in any way.\n\n\n#### Enable User Statistics (optional)\n\nTo collect per-user statistics, the [User Statistics](https://mariadb.com/docs/server/ha-and-performance/optimization-and-tuning/query-optimizations/statistics-for-optimizing-queries/user-statistics) plugin must be enabled.\nThis is available for **MariaDB** and **Percona**, not for MySQL.\n\nBy default, statistics are not collected. To enable the plugin, set the `userstat` system variable.\n\n- **In a configuration file** (persistent, requires restart):\n\n ```ini\n [mariadb]\n userstat = 1\n ```\n\n- **Dynamically** (takes effect immediately, does not persist across restarts):\n\n ```mysql\n SET GLOBAL userstat=1;\n ```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary=\"Config options\" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | dsn | MySQL server DSN (Data Source Name). See [DSN syntax](https://github.com/go-sql-driver/mysql#dsn-data-source-name). | root@tcp(localhost:3306)/ | yes |\n| | my.cnf | Path to a `my.cnf` file to read connection settings from the `[client]` section. | | no |\n| | timeout | Query timeout (seconds). | 1 | no |\n| **Functions** | functions.top_queries.disabled | Disable the [top-queries](#top-queries) function. | no | no |\n| | functions.top_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.top_queries.limit | Maximum number of queries to return. | 500 | no |\n| | functions.deadlock_info.disabled | Disable the [deadlock-info](#deadlock-info) function. | no | no |\n| | functions.deadlock_info.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.error_info.disabled | Disable the [error-info](#error-info) function. | no | no |\n| | functions.error_info.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **mysql** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the mysql data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _mysql_ (or scroll the list) to locate the **mysql** collector.\n5. Click the **+** next to the **mysql** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/mysql.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/mysql.conf\n```\n\n##### Examples\n\n###### TCP socket\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n dsn: netdata@tcp(127.0.0.1:3306)/\n\n```\n{% /details %}\n###### Unix socket\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n dsn: netdata@unix(/var/lib/mysql/mysql.sock)/\n\n```\n{% /details %}\n###### Connection with password\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n dsn: netconfig:password@tcp(127.0.0.1:3306)/\n\n```\n{% /details %}\n###### my.cnf\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n my.cnf: '/etc/my.cnf'\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n dsn: netdata@tcp(127.0.0.1:3306)/\n\n - name: remote\n dsn: netconfig:password@tcp(203.0.113.0:3306)/\n\n```\n{% /details %}\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `mysql` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m mysql\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m mysql -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `mysql` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep mysql\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep mysql /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep mysql\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ mysql_10s_slow_queries ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.queries | number of slow queries in the last 10 seconds |\n| [ mysql_10s_table_locks_immediate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.table_locks | number of table immediate locks in the last 10 seconds |\n| [ mysql_10s_table_locks_waited ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.table_locks | number of table waited locks in the last 10 seconds |\n| [ mysql_10s_waited_locks_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.table_locks | ratio of waited table locks over the last 10 seconds |\n| [ mysql_connections ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.connections_active | client connections utilization |\n| [ mysql_replication ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.slave_status | replication status (0: stopped, 1: working) |\n| [ mysql_replication_lag ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.slave_behind | difference between the timestamp of the latest transaction processed by the SQL thread and the timestamp of the same transaction when it was processed on the master |\n| [ mysql_galera_cluster_size_max_2m ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.galera_cluster_size | maximum galera cluster size in the last 2 minutes starting one minute ago |\n| [ mysql_galera_cluster_size ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.galera_cluster_size | current galera cluster size, compared to the maximum size in the last 2 minutes |\n| [ mysql_galera_cluster_state_warn ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.galera_cluster_state | galera node state is either Donor/Desynced or Joined |\n| [ mysql_galera_cluster_state_crit ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.galera_cluster_state | galera node state is either Undefined or Joining or Error |\n| [ mysql_galera_cluster_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.galera_cluster_status | galera node is part of a nonoperational component. This occurs in cases of multiple membership changes that result in a loss of Quorum or in cases of split-brain situations. |\n",functions:"## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Top Queries\n\nRetrieves aggregated SQL query performance metrics from MySQL [performance_schema.events_statements_summary_by_digest](https://dev.mysql.com/doc/refman/8.4/en/performance-schema-statement-summary-tables.html) table.\n\nThis function queries the `events_statements_summary_by_digest` table which contains aggregated statistics for SQL statements grouped by their digest (normalized query pattern). The function dynamically detects available columns based on your MySQL/MariaDB version.\n\nUse cases:\n- Identify slow queries that consume the most execution time\n- Find frequently executed queries that may benefit from optimization\n- Detect queries with high lock time, errors, or table scans\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Mysql:top-queries` |\n| Require Cloud | yes |\n| Performance | Queries the `events_statements_summary_by_digest` table:<br/>\u2022 On busy servers with high query throughput, the digest table can grow large<br/>\u2022 Default limit of 500 rows balances usefulness with performance |\n| Security | Query text may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Personal information in WHERE clauses or INSERT values<br/>\u2022 Business data and internal identifiers<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to MySQL<br/>\u2022 Performance Schema is enabled with statement digest collection<br/>\u2022 Returns HTTP 503 if collector is still initializing<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Enable performance_schema statement digest collection\n\nPerformance Schema must be enabled and statement instrumentation must be configured to collect digest statistics.\n\n1. Check if Performance Schema is enabled:\n ```sql\n SELECT @@performance_schema;\n ```\n\n2. Check statement instrumentation configuration:\n ```sql\n SELECT * FROM performance_schema.setup_consumers\n WHERE NAME LIKE '%statement%';\n ```\n\n3. The following consumer should be enabled:\n - `events_statements_summary_by_digest`\n\n4. Enable statement consumers if needed:\n ```sql\n UPDATE performance_schema.setup_consumers\n SET ENABLED = 'YES'\n WHERE NAME LIKE 'events_statements%';\n ```\n\n :::info\n\n - Changes to `setup_consumers` take effect immediately without requiring a server restart.\n - MariaDB also supports the `events_statements_summary_by_digest` table. Exact consumer names may vary by MariaDB version, so checking `setup_consumers` first as shown above is recommended.\n\n :::\n\n5. Verify digest table contains data:\n ```sql\n SELECT COUNT(*) FROM performance_schema.events_statements_summary_by_digest;\n ```\n\n Note: Statement digest data is accumulated since server startup or since the table was last truncated. To reset statistics:\n ```sql\n TRUNCATE TABLE performance_schema.events_statements_summary_by_digest;\n ```\n\n Ensure that statement instruments are enabled in the Performance Schema so that statement digest statistics are collected. Refer to your MySQL or MariaDB version documentation for the appropriate configuration options.\n\n\n##### Grant SELECT permission on Performance Schema tables\n\nThe netdata user must have SELECT permission on Performance Schema tables. The standard collector permissions\n(USAGE, REPLICATION CLIENT, PROCESS) do not automatically include Performance Schema access.\n\n1. Grant the required permission:\n ```sql\n GRANT SELECT ON performance_schema.* TO 'netdata'@'localhost';\n FLUSH PRIVILEGES;\n ```\n\n :::info\n\n The host part (`'localhost'`) should match how the netdata user connects. If connecting via TCP/IP, you may need `'netdata'@'%'` or a specific IP address instead.\n\n :::\n\n2. Verify access:\n ```sql\n -- As the netdata user:\n SELECT COUNT(*) FROM performance_schema.events_statements_summary_by_digest;\n ```\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. The available options depend on your MySQL/MariaDB version and include metrics like total execution time, number of calls, lock time, errors, rows examined, and more. Defaults to total execution time. | yes | totalTime | |\n\n#### Returns\n\nAggregated statement statistics from Performance Schema, grouped by query digest. Each row represents a unique query pattern with cumulative metrics across all executions.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Digest | string | | hidden | Unique hash identifier for the normalized query pattern. Queries with the same structure (different literal values) share the same digest. |\n| Query | string | | | Normalized SQL query text with literals replaced by placeholders (e.g., '?' for values). Truncated to 4096 characters. |\n| Schema | string | | | Database schema name where the query was executed. Empty string for queries without a schema context. |\n| Calls | integer | | | Total number of times this query pattern has been executed since server startup or since the digest table was last truncated. |\n| Total Time | duration | milliseconds | | Cumulative execution time across all executions. High values indicate queries that consume significant server resources. |\n| Min Time | duration | milliseconds | hidden | Minimum execution time observed for a single execution. Helps identify variability in query performance. |\n| Avg Time | duration | milliseconds | | Average execution time (total time divided by calls). Use this to compare performance across different query patterns. |\n| Max Time | duration | milliseconds | hidden | Maximum execution time observed for a single execution. Large gaps between min and max may indicate performance instability. |\n| Lock Time | duration | milliseconds | | Total time spent waiting for table locks across all executions. High lock time may indicate contention from concurrent transactions. |\n| Errors | integer | | | Total number of times this query pattern resulted in an error. Non-zero values require investigation into the underlying issue. |\n| Warnings | integer | | | Total number of times this query pattern generated warnings. Warnings may indicate data type conversions, NULL handling issues, or other non-critical problems. |\n| Error Attribution | string | | | Status of error detail attribution for this query. Values: enabled (error details available), no_data (no recent error for this digest), not_enabled (statement history consumers disabled), not_supported (required columns unavailable). |\n| Error Number | integer | | | Most recent error number observed for this query digest (when error attribution is enabled). |\n| SQL State | string | | hidden | SQLSTATE code for the most recent error (when error attribution is enabled). |\n| Error Message | string | | | Most recent error message for this query digest (when error attribution is enabled). |\n| Rows Affected | integer | | | Total number of rows modified by INSERT, UPDATE, DELETE, or REPLACE statements. Useful for tracking write workloads. |\n| Rows Sent | integer | | | Total number of rows returned to the client by SELECT statements. High values may indicate result sets that are too large. |\n| Rows Examined | integer | | | Total number of rows read during query execution. A high ratio of rows examined to rows sent suggests missing or inefficient indexes. |\n| Temp Disk Tables | integer | | | Total number of temporary tables created on disk across all executions. Disk-based temporary tables are significantly slower than in-memory tables and may indicate memory pressure or complex operations requiring sorting/grouping. |\n| Temp Tables | integer | | | Total number of temporary tables created (both in-memory and on-disk). High values suggest frequent sorting, grouping, or DISTINCT operations. |\n| Full Joins | integer | | | Total number of joins that performed a full table scan without using an index. These are typically very expensive operations that should be optimized. |\n| Full Range Joins | integer | | hidden | Total number of joins that used a range scan on the first table. Less efficient than indexed joins but better than full scans. |\n| Select Range | integer | | hidden | Total number of joins that used a range on the first table for row selection. |\n| Select Range Check | integer | | hidden | Total number of joins that checked each row after scanning for key ranges. Very inefficient operation. |\n| Select Scan | integer | | | Total number of joins that performed a full scan of the first table. Indicates missing indexes or suboptimal join order. |\n| Sort Merge Passes | integer | | hidden | Total number of merge passes performed during sort operations. More passes indicate larger datasets that exceed sort buffer size. |\n| Sort Range | integer | | hidden | Total number of sorts that used a range scan. |\n| Sort Rows | integer | | | Total number of rows sorted across all executions. High values indicate frequent sorting operations on large datasets. |\n| Sort Scan | integer | | hidden | Total number of sorts that required a full table scan. |\n| No Index Used | integer | | | Total number of executions where no index was used for table access. These queries are prime candidates for index optimization. |\n| No Good Index Used | integer | | hidden | Total number of executions where a non-optimal index was used. Indicates that while an index exists, a better one might improve performance. |\n| First Seen | string | | hidden | Timestamp when this query pattern was first observed. Helps identify new queries that may have been introduced by application changes. |\n| Last Seen | string | | hidden | Timestamp when this query pattern was last executed. Can help identify stale queries that are no longer in use. |\n| P95 Time | duration | milliseconds | | 95th percentile execution time. 95% of executions completed within this time. Available in MySQL 8.0+. Useful for understanding typical performance. |\n| P99 Time | duration | milliseconds | | 99th percentile execution time. 99% of executions completed within this time. Available in MySQL 8.0+. Helps identify outlier slow executions. |\n| P99.9 Time | duration | milliseconds | hidden | 99.9th percentile execution time. Available in MySQL 8.0+. Identifies extreme outliers in query performance. |\n| Sample Query | string | | hidden | Example of an actual query execution with literal values preserved. Available in MySQL 8.0+. Helpful for understanding the exact queries being executed. |\n| Sample Seen | string | | hidden | Timestamp when the sample query was captured. Available in MySQL 8.0+. |\n| Sample Time | duration | milliseconds | hidden | Execution time of the captured sample query. Available in MySQL 8.0+. |\n| CPU Time | duration | milliseconds | | Total CPU time consumed across all executions. Available in MySQL 8.0.28+. Helps identify CPU-intensive queries. |\n| Max Controlled Memory | integer | | | Maximum memory controlled by the query executor for this query pattern. Available in MySQL 8.0.31+. Helps identify memory-intensive operations. |\n| Max Total Memory | integer | | | Maximum total memory used by this query pattern including both controlled and uncontrolled allocations. Available in MySQL 8.0.31+. |\n\n### Deadlock Info\n\nRetrieves the latest detected InnoDB deadlock from `SHOW ENGINE INNODB STATUS`.\n\nThe output is parsed to attribute the deadlock to the participating transactions and their query text, lock mode, lock status, and wait resource.\n\nUse cases:\n- Identify which query was chosen as the deadlock victim\n- Inspect the waiting lock resource and lock mode\n- Correlate deadlocks with application changes or deployment events\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Mysql:deadlock-info` |\n| Require Cloud | yes |\n| Performance | Executes `SHOW ENGINE INNODB STATUS` on demand:<br/>\u2022 Not part of regular collection<br/>\u2022 Query cost depends on server load and the size of the InnoDB status output |\n| Security | Query text and wait resource strings may include unmasked literal values including sensitive data (PII/secrets):<br/>\u2022 SQL literals such as emails, IDs, or tokens<br/>\u2022 Schema and table names that may be sensitive in some environments<br/>\u2022 Restrict dashboard access to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to MySQL<br/>\u2022 `deadlock_info_function_enabled` is true<br/>\u2022 The account can run `SHOW ENGINE INNODB STATUS` (PROCESS privilege)<br/>\u2022 Returns HTTP 200 with empty data when no deadlock is found<br/>\u2022 Returns HTTP 403 when PROCESS privilege is missing<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out<br/>\u2022 Returns HTTP 561 when the deadlock section cannot be parsed<br/>\u2022 Returns HTTP 503 if the collector is still initializing or the function is disabled |\n\n#### Prerequisites\n\n##### Enable deadlock-info function in Netdata\n\nSet `deadlock_info_function_enabled: true` in the `go.d/mysql.conf` job.\n\n\n##### Grant PROCESS privilege\n\nThe monitoring user must have PROCESS privilege to run `SHOW ENGINE INNODB STATUS`.\n\n\n\n#### Parameters\n\nThis function has no parameters.\n\n#### Returns\n\nParsed deadlock participants from the latest detected deadlock. Each row represents one transaction involved in the deadlock.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Row ID | string | | hidden | Unique row identifier composed of deadlock ID and process ID. |\n| Deadlock ID | string | | | Identifier for the deadlock event, used to group participating transactions. |\n| Timestamp | timestamp | | | Timestamp of the deadlock event. Parsed from the deadlock section when available; otherwise the function execution time. |\n| Process ID | string | | | MySQL thread id of the transaction involved in the deadlock. |\n| Connection ID | integer | | | Numeric connection identifier when the process id is numeric. |\n| ECID | integer | | | Execution context id (engine-specific). This is typically null for MySQL and reserved for cross-engine consistency. |\n| Victim | string | | | \"true\" when the transaction was chosen as the deadlock victim and rolled back; otherwise \"false\". |\n| Query | string | | | SQL query text for the transaction involved in the deadlock. Truncated to 4096 characters. |\n| Lock Mode | string | | | Lock mode reported for the waiting lock (for example X or S). |\n| Lock Status | string | | | Lock status for the transaction. WAITING indicates the transaction was waiting on a lock. |\n| Wait Resource | string | | | Lock resource line from InnoDB status showing what the transaction was waiting on. |\n| Database | string | | | Database name when it can be inferred. This may be empty or null depending on the deadlock output. |\n\n### Error Info\n\nRetrieves recent SQL errors from Performance Schema statement history tables.\n\nThis function reads `performance_schema.events_statements_history_long` when enabled,\notherwise falls back to `performance_schema.events_statements_history`. It reports the\nmost recent error per query digest, including error number, SQLSTATE, and message.\n\nUse cases:\n- Identify recent query errors and their messages\n- Correlate errors to query patterns (digest)\n- Validate error rates seen in top-queries\n\nError messages are truncated by Performance Schema (usually 128 characters).\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Mysql:error-info` |\n| Require Cloud | yes |\n| Performance | Reads Performance Schema statement history tables on demand:<br/>\u2022 Not part of regular collection<br/>\u2022 Query cost depends on history table size and server load |\n| Security | Error messages and query text may include unmasked literals (PII/secrets).<br/>\u2022 Restrict dashboard access to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to MySQL<br/>\u2022 `error_info_function_enabled` is true<br/>\u2022 Performance Schema statement history consumers are enabled (history and/or history_long)<br/>\u2022 Returns HTTP 200 with empty data when no errors are found<br/>\u2022 Returns HTTP 503 when required consumers are not enabled or function disabled<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Enable error-info function in Netdata\n\nSet `error_info_function_enabled: true` in the `go.d/mysql.conf` job.\n\n\n##### Enable statement history consumers\n\nEnsure `events_statements_history` and/or `events_statements_history_long` consumers are enabled.\n\n\n##### Grant SELECT on Performance Schema\n\nThe monitoring user must have SELECT on `performance_schema.*` to read statement history tables.\n\n\n\n#### Parameters\n\nThis function has no parameters.\n\n#### Returns\n\nMost recent error per query digest from Performance Schema history tables.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Digest | string | | hidden | Unique hash identifier for the normalized query pattern. |\n| Query | string | | | Normalized query text when available (digest text or SQL text). |\n| Schema | string | | | Database schema name when available. |\n| Error Number | integer | | | MySQL error number for the most recent error of this digest. |\n| SQL State | string | | | SQLSTATE code for the most recent error. |\n| Error Message | string | | | Error message for the most recent error. |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per MariaDB instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit | MySQL | MariaDB | Percona |\n|:------|:----------|:----|:---:|:---:|:---:|\n| mysql.net | in, out | kilobits/s | \u2022 | \u2022 | \u2022 |\n| mysql.queries | queries, questions, slow_queries | queries/s | \u2022 | \u2022 | \u2022 |\n| mysql.queries_type | select, delete, update, insert, replace | queries/s | \u2022 | \u2022 | \u2022 |\n| mysql.handlers | commit, delete, prepare, read_first, read_key, read_next, read_prev, read_rnd, read_rnd_next, rollback, savepoint, savepointrollback, update, write | handlers/s | \u2022 | \u2022 | \u2022 |\n| mysql.table_open_cache_overflows | open_cache | overflows/s | \u2022 | \u2022 | \u2022 |\n| mysql.table_locks | immediate, waited | locks/s | \u2022 | \u2022 | \u2022 |\n| mysql.join_issues | full_join, full_range_join, range, range_check, scan | joins/s | \u2022 | \u2022 | \u2022 |\n| mysql.sort_issues | merge_passes, range, scan | issues/s | \u2022 | \u2022 | \u2022 |\n| mysql.tmp | disk_tables, files, tables | events/s | \u2022 | \u2022 | \u2022 |\n| mysql.connections | all, aborted | connections/s | \u2022 | \u2022 | \u2022 |\n| mysql.connections_active | active, limit, max_active | connections | \u2022 | \u2022 | \u2022 |\n| mysql.threads | connected, cached, running | threads | \u2022 | \u2022 | \u2022 |\n| mysql.threads_created | created | threads/s | \u2022 | \u2022 | \u2022 |\n| mysql.thread_cache_misses | misses | misses | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_io | read, write | KiB/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_io_ops | reads, writes, fsyncs | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_io_pending_ops | reads, writes, fsyncs | operations | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_log | waits, write_requests, writes | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_redo_log_activity | redo_written, checkpointed | B/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_redo_log_occupancy | occupancy | percentage | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_redo_log_checkpoint_age | age | B | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_cur_row_lock | current waits | operations | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_rows | inserted, read, updated, deleted | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_pages | data, dirty, free, misc, total | pages | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_pages_flushed | flush_pages | requests/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_bytes | data, dirty | MiB | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_read_ahead | all, evicted | pages/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_read_ahead_rnd | read-ahead | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_ops | disk_reads, wait_free | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_os_log | fsyncs, writes | operations | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_os_log_fsync_writes | fsyncs | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_os_log_io | write | KiB/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_deadlocks | deadlocks | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.files | files | files | \u2022 | \u2022 | \u2022 |\n| mysql.files_rate | files | files/s | \u2022 | \u2022 | \u2022 |\n| mysql.connection_errors | accept, internal, max, peer_addr, select, tcpwrap | errors/s | \u2022 | \u2022 | \u2022 |\n| mysql.opened_tables | tables | tables/s | \u2022 | \u2022 | \u2022 |\n| mysql.open_tables | cache, tables | tables | \u2022 | \u2022 | \u2022 |\n| mysql.process_list_fetch_query_duration | duration | milliseconds | \u2022 | \u2022 | \u2022 |\n| mysql.process_list_queries_count | system, user | queries | \u2022 | \u2022 | \u2022 |\n| mysql.process_list_longest_query_duration | duration | seconds | \u2022 | \u2022 | \u2022 |\n| mysql.qcache_ops | hits, lowmem_prunes, inserts, not_cached | queries/s | \u2022 | \u2022 | \u2022 |\n| mysql.qcache | queries | queries | \u2022 | \u2022 | \u2022 |\n| mysql.qcache_freemem | free | MiB | \u2022 | \u2022 | \u2022 |\n| mysql.qcache_memblocks | free, total | blocks | \u2022 | \u2022 | \u2022 |\n| mysql.galera_writesets | rx, tx | writesets/s | \u2022 | \u2022 | \u2022 |\n| mysql.galera_bytes | rx, tx | KiB/s | \u2022 | \u2022 | \u2022 |\n| mysql.galera_queue | rx, tx | writesets | \u2022 | \u2022 | \u2022 |\n| mysql.galera_conflicts | bf_aborts, cert_fails | transactions | \u2022 | \u2022 | \u2022 |\n| mysql.galera_flow_control | paused | ms | \u2022 | \u2022 | \u2022 |\n| mysql.galera_cluster_status | primary, non_primary, disconnected | status | \u2022 | \u2022 | \u2022 |\n| mysql.galera_cluster_state | undefined, joining, donor, joined, synced, error | state | \u2022 | \u2022 | \u2022 |\n| mysql.galera_cluster_size | nodes | nodes | \u2022 | \u2022 | \u2022 |\n| mysql.galera_cluster_weight | weight | weight | \u2022 | \u2022 | \u2022 |\n| mysql.galera_connected | connected | boolean | \u2022 | \u2022 | \u2022 |\n| mysql.galera_ready | ready | boolean | \u2022 | \u2022 | \u2022 |\n| mysql.galera_open_transactions | open | transactions | \u2022 | \u2022 | \u2022 |\n| mysql.galera_thread_count | threads | threads | \u2022 | \u2022 | \u2022 |\n| mysql.key_blocks | unused, used, not_flushed | blocks | \u2022 | \u2022 | \u2022 |\n| mysql.key_requests | reads, writes | requests/s | \u2022 | \u2022 | \u2022 |\n| mysql.key_disk_ops | reads, writes | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.binlog_cache | disk, all | transactions/s | \u2022 | \u2022 | \u2022 |\n| mysql.binlog_stmt_cache | disk, all | statements/s | \u2022 | \u2022 | \u2022 |\n\n### Per connection\n\nThese metrics refer to the replication connection.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit | MySQL | MariaDB | Percona |\n|:------|:----------|:----|:---:|:---:|:---:|\n| mysql.slave_behind | seconds | seconds | \u2022 | \u2022 | \u2022 |\n| mysql.slave_status | sql_running, io_running | boolean | \u2022 | \u2022 | \u2022 |\n\n### Per user\n\nThese metrics refer to the MySQL user.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| user | username |\n\nMetrics:\n\n| Metric | Dimensions | Unit | MySQL | MariaDB | Percona |\n|:------|:----------|:----|:---:|:---:|:---:|\n| mysql.userstats_cpu | used | percentage | | \u2022 | \u2022 |\n| mysql.userstats_rows | read, sent, updated, inserted, deleted | operations/s | | \u2022 | \u2022 |\n| mysql.userstats_commands | select, update, other | commands/s | | \u2022 | \u2022 |\n| mysql.userstats_denied_commands | denied | commands/s | | \u2022 | \u2022 |\n| mysql.userstats_created_transactions | commit, rollback | transactions/s | | \u2022 | \u2022 |\n| mysql.userstats_binlog_written | written | B/s | | \u2022 | \u2022 |\n| mysql.userstats_empty_queries | empty | queries/s | | \u2022 | \u2022 |\n| mysql.userstats_connections | created | connections/s | | \u2022 | \u2022 |\n| mysql.userstats_lost_connections | lost | connections/s | | \u2022 | \u2022 |\n| mysql.userstats_denied_connections | denied | connections/s | | \u2022 | \u2022 |\n\n",integration_type:"collector",id:"go.d.plugin-mysql-MariaDB",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/mysql/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-mysql",plugin_name:"go.d.plugin",module_name:"mysql",monitored_instance:{name:"MySQL",link:"https://www.mysql.com/",categories:["data-collection.databases"],icon_filename:"mysql.svg"},related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},info_provided_to_referring_integrations:{description:""},keywords:["db","database","mysql","maria","mariadb","sql"]},overview:'# MySQL\n\nPlugin: go.d.plugin\nModule: mysql\n\n## Overview\n\nThis collector monitors the health and performance of MySQL servers and collects general statistics, replication and user metrics.\n\n\nIt connects to the MySQL instance via a TCP or UNIX socket and executes the following commands:\n\nExecuted queries:\n\n- `SELECT VERSION();`\n- `SHOW GLOBAL STATUS;`\n- `SHOW ENGINE INNODB STATUS;`\n- `SHOW GLOBAL VARIABLES;`\n- `SHOW SLAVE STATUS;` or `SHOW ALL SLAVES STATUS;` (MariaDBv10.2+) or `SHOW REPLICA STATUS;` (MySQL 8.0.22+)\n- `SHOW USER_STATISTICS;` (MariaDBv10.1.1+)\n- `SELECT TIME,USER FROM INFORMATION_SCHEMA.PROCESSLIST;`\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nMySQL can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on localhost by trying to connect as root and netdata using known MySQL TCP sockets:\n\n- 127.0.0.1:3306\n- "[::1]:3306"\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:"## Setup\n\n\nYou can configure the **mysql** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **mysql**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/mysql.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create netdata user\n\nA user account should have the following [permissions](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html):\n\n- [`USAGE`](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_usage)\n- [`REPLICATION CLIENT`](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_replication-client)\n- [`PROCESS`](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_process)\n\nTo create the `netdata` user with these permissions, execute the following in the MySQL shell:\n\n- **MySQL and MariaDB < 10.5.9**\n\n ```mysql\n CREATE USER 'netdata'@'localhost';\n GRANT USAGE, REPLICATION CLIENT, PROCESS ON *.* TO 'netdata'@'localhost';\n FLUSH PRIVILEGES;\n ```\n\n- **MariaDB >= 10.5.9**\n\n For MariaDB 10.5.9 and later, use the `SLAVE MONITOR` privilege instead of `REPLICATION CLIENT`:\n\n ```mysql\n CREATE USER 'netdata'@'localhost';\n GRANT USAGE, SLAVE MONITOR, PROCESS ON *.* TO 'netdata'@'localhost';\n FLUSH PRIVILEGES;\n ```\n\nThe `netdata` user will have the ability to connect to the MySQL server on localhost without a password.\nIt will only be able to gather statistics without being able to alter or affect operations in any way.\n\n\n#### Enable User Statistics (optional)\n\nTo collect per-user statistics, the [User Statistics](https://mariadb.com/docs/server/ha-and-performance/optimization-and-tuning/query-optimizations/statistics-for-optimizing-queries/user-statistics) plugin must be enabled.\nThis is available for **MariaDB** and **Percona**, not for MySQL.\n\nBy default, statistics are not collected. To enable the plugin, set the `userstat` system variable.\n\n- **In a configuration file** (persistent, requires restart):\n\n ```ini\n [mariadb]\n userstat = 1\n ```\n\n- **Dynamically** (takes effect immediately, does not persist across restarts):\n\n ```mysql\n SET GLOBAL userstat=1;\n ```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary=\"Config options\" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | dsn | MySQL server DSN (Data Source Name). See [DSN syntax](https://github.com/go-sql-driver/mysql#dsn-data-source-name). | root@tcp(localhost:3306)/ | yes |\n| | my.cnf | Path to a `my.cnf` file to read connection settings from the `[client]` section. | | no |\n| | timeout | Query timeout (seconds). | 1 | no |\n| **Functions** | functions.top_queries.disabled | Disable the [top-queries](#top-queries) function. | no | no |\n| | functions.top_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.top_queries.limit | Maximum number of queries to return. | 500 | no |\n| | functions.deadlock_info.disabled | Disable the [deadlock-info](#deadlock-info) function. | no | no |\n| | functions.deadlock_info.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.error_info.disabled | Disable the [error-info](#error-info) function. | no | no |\n| | functions.error_info.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **mysql** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the mysql data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _mysql_ (or scroll the list) to locate the **mysql** collector.\n5. Click the **+** next to the **mysql** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/mysql.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/mysql.conf\n```\n\n##### Examples\n\n###### TCP socket\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n dsn: netdata@tcp(127.0.0.1:3306)/\n\n```\n{% /details %}\n###### Unix socket\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n dsn: netdata@unix(/var/lib/mysql/mysql.sock)/\n\n```\n{% /details %}\n###### Connection with password\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n dsn: netconfig:password@tcp(127.0.0.1:3306)/\n\n```\n{% /details %}\n###### my.cnf\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n my.cnf: '/etc/my.cnf'\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n dsn: netdata@tcp(127.0.0.1:3306)/\n\n - name: remote\n dsn: netconfig:password@tcp(203.0.113.0:3306)/\n\n```\n{% /details %}\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `mysql` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m mysql\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m mysql -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `mysql` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep mysql\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep mysql /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep mysql\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ mysql_10s_slow_queries ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.queries | number of slow queries in the last 10 seconds |\n| [ mysql_10s_table_locks_immediate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.table_locks | number of table immediate locks in the last 10 seconds |\n| [ mysql_10s_table_locks_waited ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.table_locks | number of table waited locks in the last 10 seconds |\n| [ mysql_10s_waited_locks_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.table_locks | ratio of waited table locks over the last 10 seconds |\n| [ mysql_connections ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.connections_active | client connections utilization |\n| [ mysql_replication ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.slave_status | replication status (0: stopped, 1: working) |\n| [ mysql_replication_lag ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.slave_behind | difference between the timestamp of the latest transaction processed by the SQL thread and the timestamp of the same transaction when it was processed on the master |\n| [ mysql_galera_cluster_size_max_2m ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.galera_cluster_size | maximum galera cluster size in the last 2 minutes starting one minute ago |\n| [ mysql_galera_cluster_size ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.galera_cluster_size | current galera cluster size, compared to the maximum size in the last 2 minutes |\n| [ mysql_galera_cluster_state_warn ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.galera_cluster_state | galera node state is either Donor/Desynced or Joined |\n| [ mysql_galera_cluster_state_crit ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.galera_cluster_state | galera node state is either Undefined or Joining or Error |\n| [ mysql_galera_cluster_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.galera_cluster_status | galera node is part of a nonoperational component. This occurs in cases of multiple membership changes that result in a loss of Quorum or in cases of split-brain situations. |\n",functions:"## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Top Queries\n\nRetrieves aggregated SQL query performance metrics from MySQL [performance_schema.events_statements_summary_by_digest](https://dev.mysql.com/doc/refman/8.4/en/performance-schema-statement-summary-tables.html) table.\n\nThis function queries the `events_statements_summary_by_digest` table which contains aggregated statistics for SQL statements grouped by their digest (normalized query pattern). The function dynamically detects available columns based on your MySQL/MariaDB version.\n\nUse cases:\n- Identify slow queries that consume the most execution time\n- Find frequently executed queries that may benefit from optimization\n- Detect queries with high lock time, errors, or table scans\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Mysql:top-queries` |\n| Require Cloud | yes |\n| Performance | Queries the `events_statements_summary_by_digest` table:<br/>\u2022 On busy servers with high query throughput, the digest table can grow large<br/>\u2022 Default limit of 500 rows balances usefulness with performance |\n| Security | Query text may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Personal information in WHERE clauses or INSERT values<br/>\u2022 Business data and internal identifiers<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to MySQL<br/>\u2022 Performance Schema is enabled with statement digest collection<br/>\u2022 Returns HTTP 503 if collector is still initializing<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Enable performance_schema statement digest collection\n\nPerformance Schema must be enabled and statement instrumentation must be configured to collect digest statistics.\n\n1. Check if Performance Schema is enabled:\n ```sql\n SELECT @@performance_schema;\n ```\n\n2. Check statement instrumentation configuration:\n ```sql\n SELECT * FROM performance_schema.setup_consumers\n WHERE NAME LIKE '%statement%';\n ```\n\n3. The following consumer should be enabled:\n - `events_statements_summary_by_digest`\n\n4. Enable statement consumers if needed:\n ```sql\n UPDATE performance_schema.setup_consumers\n SET ENABLED = 'YES'\n WHERE NAME LIKE 'events_statements%';\n ```\n\n :::info\n\n - Changes to `setup_consumers` take effect immediately without requiring a server restart.\n - MariaDB also supports the `events_statements_summary_by_digest` table. Exact consumer names may vary by MariaDB version, so checking `setup_consumers` first as shown above is recommended.\n\n :::\n\n5. Verify digest table contains data:\n ```sql\n SELECT COUNT(*) FROM performance_schema.events_statements_summary_by_digest;\n ```\n\n Note: Statement digest data is accumulated since server startup or since the table was last truncated. To reset statistics:\n ```sql\n TRUNCATE TABLE performance_schema.events_statements_summary_by_digest;\n ```\n\n Ensure that statement instruments are enabled in the Performance Schema so that statement digest statistics are collected. Refer to your MySQL or MariaDB version documentation for the appropriate configuration options.\n\n\n##### Grant SELECT permission on Performance Schema tables\n\nThe netdata user must have SELECT permission on Performance Schema tables. The standard collector permissions\n(USAGE, REPLICATION CLIENT, PROCESS) do not automatically include Performance Schema access.\n\n1. Grant the required permission:\n ```sql\n GRANT SELECT ON performance_schema.* TO 'netdata'@'localhost';\n FLUSH PRIVILEGES;\n ```\n\n :::info\n\n The host part (`'localhost'`) should match how the netdata user connects. If connecting via TCP/IP, you may need `'netdata'@'%'` or a specific IP address instead.\n\n :::\n\n2. Verify access:\n ```sql\n -- As the netdata user:\n SELECT COUNT(*) FROM performance_schema.events_statements_summary_by_digest;\n ```\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. The available options depend on your MySQL/MariaDB version and include metrics like total execution time, number of calls, lock time, errors, rows examined, and more. Defaults to total execution time. | yes | totalTime | |\n\n#### Returns\n\nAggregated statement statistics from Performance Schema, grouped by query digest. Each row represents a unique query pattern with cumulative metrics across all executions.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Digest | string | | hidden | Unique hash identifier for the normalized query pattern. Queries with the same structure (different literal values) share the same digest. |\n| Query | string | | | Normalized SQL query text with literals replaced by placeholders (e.g., '?' for values). Truncated to 4096 characters. |\n| Schema | string | | | Database schema name where the query was executed. Empty string for queries without a schema context. |\n| Calls | integer | | | Total number of times this query pattern has been executed since server startup or since the digest table was last truncated. |\n| Total Time | duration | milliseconds | | Cumulative execution time across all executions. High values indicate queries that consume significant server resources. |\n| Min Time | duration | milliseconds | hidden | Minimum execution time observed for a single execution. Helps identify variability in query performance. |\n| Avg Time | duration | milliseconds | | Average execution time (total time divided by calls). Use this to compare performance across different query patterns. |\n| Max Time | duration | milliseconds | hidden | Maximum execution time observed for a single execution. Large gaps between min and max may indicate performance instability. |\n| Lock Time | duration | milliseconds | | Total time spent waiting for table locks across all executions. High lock time may indicate contention from concurrent transactions. |\n| Errors | integer | | | Total number of times this query pattern resulted in an error. Non-zero values require investigation into the underlying issue. |\n| Warnings | integer | | | Total number of times this query pattern generated warnings. Warnings may indicate data type conversions, NULL handling issues, or other non-critical problems. |\n| Error Attribution | string | | | Status of error detail attribution for this query. Values: enabled (error details available), no_data (no recent error for this digest), not_enabled (statement history consumers disabled), not_supported (required columns unavailable). |\n| Error Number | integer | | | Most recent error number observed for this query digest (when error attribution is enabled). |\n| SQL State | string | | hidden | SQLSTATE code for the most recent error (when error attribution is enabled). |\n| Error Message | string | | | Most recent error message for this query digest (when error attribution is enabled). |\n| Rows Affected | integer | | | Total number of rows modified by INSERT, UPDATE, DELETE, or REPLACE statements. Useful for tracking write workloads. |\n| Rows Sent | integer | | | Total number of rows returned to the client by SELECT statements. High values may indicate result sets that are too large. |\n| Rows Examined | integer | | | Total number of rows read during query execution. A high ratio of rows examined to rows sent suggests missing or inefficient indexes. |\n| Temp Disk Tables | integer | | | Total number of temporary tables created on disk across all executions. Disk-based temporary tables are significantly slower than in-memory tables and may indicate memory pressure or complex operations requiring sorting/grouping. |\n| Temp Tables | integer | | | Total number of temporary tables created (both in-memory and on-disk). High values suggest frequent sorting, grouping, or DISTINCT operations. |\n| Full Joins | integer | | | Total number of joins that performed a full table scan without using an index. These are typically very expensive operations that should be optimized. |\n| Full Range Joins | integer | | hidden | Total number of joins that used a range scan on the first table. Less efficient than indexed joins but better than full scans. |\n| Select Range | integer | | hidden | Total number of joins that used a range on the first table for row selection. |\n| Select Range Check | integer | | hidden | Total number of joins that checked each row after scanning for key ranges. Very inefficient operation. |\n| Select Scan | integer | | | Total number of joins that performed a full scan of the first table. Indicates missing indexes or suboptimal join order. |\n| Sort Merge Passes | integer | | hidden | Total number of merge passes performed during sort operations. More passes indicate larger datasets that exceed sort buffer size. |\n| Sort Range | integer | | hidden | Total number of sorts that used a range scan. |\n| Sort Rows | integer | | | Total number of rows sorted across all executions. High values indicate frequent sorting operations on large datasets. |\n| Sort Scan | integer | | hidden | Total number of sorts that required a full table scan. |\n| No Index Used | integer | | | Total number of executions where no index was used for table access. These queries are prime candidates for index optimization. |\n| No Good Index Used | integer | | hidden | Total number of executions where a non-optimal index was used. Indicates that while an index exists, a better one might improve performance. |\n| First Seen | string | | hidden | Timestamp when this query pattern was first observed. Helps identify new queries that may have been introduced by application changes. |\n| Last Seen | string | | hidden | Timestamp when this query pattern was last executed. Can help identify stale queries that are no longer in use. |\n| P95 Time | duration | milliseconds | | 95th percentile execution time. 95% of executions completed within this time. Available in MySQL 8.0+. Useful for understanding typical performance. |\n| P99 Time | duration | milliseconds | | 99th percentile execution time. 99% of executions completed within this time. Available in MySQL 8.0+. Helps identify outlier slow executions. |\n| P99.9 Time | duration | milliseconds | hidden | 99.9th percentile execution time. Available in MySQL 8.0+. Identifies extreme outliers in query performance. |\n| Sample Query | string | | hidden | Example of an actual query execution with literal values preserved. Available in MySQL 8.0+. Helpful for understanding the exact queries being executed. |\n| Sample Seen | string | | hidden | Timestamp when the sample query was captured. Available in MySQL 8.0+. |\n| Sample Time | duration | milliseconds | hidden | Execution time of the captured sample query. Available in MySQL 8.0+. |\n| CPU Time | duration | milliseconds | | Total CPU time consumed across all executions. Available in MySQL 8.0.28+. Helps identify CPU-intensive queries. |\n| Max Controlled Memory | integer | | | Maximum memory controlled by the query executor for this query pattern. Available in MySQL 8.0.31+. Helps identify memory-intensive operations. |\n| Max Total Memory | integer | | | Maximum total memory used by this query pattern including both controlled and uncontrolled allocations. Available in MySQL 8.0.31+. |\n\n### Deadlock Info\n\nRetrieves the latest detected InnoDB deadlock from `SHOW ENGINE INNODB STATUS`.\n\nThe output is parsed to attribute the deadlock to the participating transactions and their query text, lock mode, lock status, and wait resource.\n\nUse cases:\n- Identify which query was chosen as the deadlock victim\n- Inspect the waiting lock resource and lock mode\n- Correlate deadlocks with application changes or deployment events\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Mysql:deadlock-info` |\n| Require Cloud | yes |\n| Performance | Executes `SHOW ENGINE INNODB STATUS` on demand:<br/>\u2022 Not part of regular collection<br/>\u2022 Query cost depends on server load and the size of the InnoDB status output |\n| Security | Query text and wait resource strings may include unmasked literal values including sensitive data (PII/secrets):<br/>\u2022 SQL literals such as emails, IDs, or tokens<br/>\u2022 Schema and table names that may be sensitive in some environments<br/>\u2022 Restrict dashboard access to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to MySQL<br/>\u2022 `deadlock_info_function_enabled` is true<br/>\u2022 The account can run `SHOW ENGINE INNODB STATUS` (PROCESS privilege)<br/>\u2022 Returns HTTP 200 with empty data when no deadlock is found<br/>\u2022 Returns HTTP 403 when PROCESS privilege is missing<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out<br/>\u2022 Returns HTTP 561 when the deadlock section cannot be parsed<br/>\u2022 Returns HTTP 503 if the collector is still initializing or the function is disabled |\n\n#### Prerequisites\n\n##### Enable deadlock-info function in Netdata\n\nSet `deadlock_info_function_enabled: true` in the `go.d/mysql.conf` job.\n\n\n##### Grant PROCESS privilege\n\nThe monitoring user must have PROCESS privilege to run `SHOW ENGINE INNODB STATUS`.\n\n\n\n#### Parameters\n\nThis function has no parameters.\n\n#### Returns\n\nParsed deadlock participants from the latest detected deadlock. Each row represents one transaction involved in the deadlock.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Row ID | string | | hidden | Unique row identifier composed of deadlock ID and process ID. |\n| Deadlock ID | string | | | Identifier for the deadlock event, used to group participating transactions. |\n| Timestamp | timestamp | | | Timestamp of the deadlock event. Parsed from the deadlock section when available; otherwise the function execution time. |\n| Process ID | string | | | MySQL thread id of the transaction involved in the deadlock. |\n| Connection ID | integer | | | Numeric connection identifier when the process id is numeric. |\n| ECID | integer | | | Execution context id (engine-specific). This is typically null for MySQL and reserved for cross-engine consistency. |\n| Victim | string | | | \"true\" when the transaction was chosen as the deadlock victim and rolled back; otherwise \"false\". |\n| Query | string | | | SQL query text for the transaction involved in the deadlock. Truncated to 4096 characters. |\n| Lock Mode | string | | | Lock mode reported for the waiting lock (for example X or S). |\n| Lock Status | string | | | Lock status for the transaction. WAITING indicates the transaction was waiting on a lock. |\n| Wait Resource | string | | | Lock resource line from InnoDB status showing what the transaction was waiting on. |\n| Database | string | | | Database name when it can be inferred. This may be empty or null depending on the deadlock output. |\n\n### Error Info\n\nRetrieves recent SQL errors from Performance Schema statement history tables.\n\nThis function reads `performance_schema.events_statements_history_long` when enabled,\notherwise falls back to `performance_schema.events_statements_history`. It reports the\nmost recent error per query digest, including error number, SQLSTATE, and message.\n\nUse cases:\n- Identify recent query errors and their messages\n- Correlate errors to query patterns (digest)\n- Validate error rates seen in top-queries\n\nError messages are truncated by Performance Schema (usually 128 characters).\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Mysql:error-info` |\n| Require Cloud | yes |\n| Performance | Reads Performance Schema statement history tables on demand:<br/>\u2022 Not part of regular collection<br/>\u2022 Query cost depends on history table size and server load |\n| Security | Error messages and query text may include unmasked literals (PII/secrets).<br/>\u2022 Restrict dashboard access to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to MySQL<br/>\u2022 `error_info_function_enabled` is true<br/>\u2022 Performance Schema statement history consumers are enabled (history and/or history_long)<br/>\u2022 Returns HTTP 200 with empty data when no errors are found<br/>\u2022 Returns HTTP 503 when required consumers are not enabled or function disabled<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Enable error-info function in Netdata\n\nSet `error_info_function_enabled: true` in the `go.d/mysql.conf` job.\n\n\n##### Enable statement history consumers\n\nEnsure `events_statements_history` and/or `events_statements_history_long` consumers are enabled.\n\n\n##### Grant SELECT on Performance Schema\n\nThe monitoring user must have SELECT on `performance_schema.*` to read statement history tables.\n\n\n\n#### Parameters\n\nThis function has no parameters.\n\n#### Returns\n\nMost recent error per query digest from Performance Schema history tables.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Digest | string | | hidden | Unique hash identifier for the normalized query pattern. |\n| Query | string | | | Normalized query text when available (digest text or SQL text). |\n| Schema | string | | | Database schema name when available. |\n| Error Number | integer | | | MySQL error number for the most recent error of this digest. |\n| SQL State | string | | | SQLSTATE code for the most recent error. |\n| Error Message | string | | | Error message for the most recent error. |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per MariaDB instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit | MySQL | MariaDB | Percona |\n|:------|:----------|:----|:---:|:---:|:---:|\n| mysql.net | in, out | kilobits/s | \u2022 | \u2022 | \u2022 |\n| mysql.queries | queries, questions, slow_queries | queries/s | \u2022 | \u2022 | \u2022 |\n| mysql.queries_type | select, delete, update, insert, replace | queries/s | \u2022 | \u2022 | \u2022 |\n| mysql.handlers | commit, delete, prepare, read_first, read_key, read_next, read_prev, read_rnd, read_rnd_next, rollback, savepoint, savepointrollback, update, write | handlers/s | \u2022 | \u2022 | \u2022 |\n| mysql.table_open_cache_overflows | open_cache | overflows/s | \u2022 | \u2022 | \u2022 |\n| mysql.table_locks | immediate, waited | locks/s | \u2022 | \u2022 | \u2022 |\n| mysql.join_issues | full_join, full_range_join, range, range_check, scan | joins/s | \u2022 | \u2022 | \u2022 |\n| mysql.sort_issues | merge_passes, range, scan | issues/s | \u2022 | \u2022 | \u2022 |\n| mysql.tmp | disk_tables, files, tables | events/s | \u2022 | \u2022 | \u2022 |\n| mysql.connections | all, aborted | connections/s | \u2022 | \u2022 | \u2022 |\n| mysql.connections_active | active, limit, max_active | connections | \u2022 | \u2022 | \u2022 |\n| mysql.threads | connected, cached, running | threads | \u2022 | \u2022 | \u2022 |\n| mysql.threads_created | created | threads/s | \u2022 | \u2022 | \u2022 |\n| mysql.thread_cache_misses | misses | misses | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_io | read, write | KiB/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_io_ops | reads, writes, fsyncs | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_io_pending_ops | reads, writes, fsyncs | operations | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_log | waits, write_requests, writes | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_redo_log_activity | redo_written, checkpointed | B/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_redo_log_occupancy | occupancy | percentage | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_redo_log_checkpoint_age | age | B | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_cur_row_lock | current waits | operations | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_rows | inserted, read, updated, deleted | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_pages | data, dirty, free, misc, total | pages | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_pages_flushed | flush_pages | requests/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_bytes | data, dirty | MiB | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_read_ahead | all, evicted | pages/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_read_ahead_rnd | read-ahead | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_ops | disk_reads, wait_free | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_os_log | fsyncs, writes | operations | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_os_log_fsync_writes | fsyncs | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_os_log_io | write | KiB/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_deadlocks | deadlocks | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.files | files | files | \u2022 | \u2022 | \u2022 |\n| mysql.files_rate | files | files/s | \u2022 | \u2022 | \u2022 |\n| mysql.connection_errors | accept, internal, max, peer_addr, select, tcpwrap | errors/s | \u2022 | \u2022 | \u2022 |\n| mysql.opened_tables | tables | tables/s | \u2022 | \u2022 | \u2022 |\n| mysql.open_tables | cache, tables | tables | \u2022 | \u2022 | \u2022 |\n| mysql.process_list_fetch_query_duration | duration | milliseconds | \u2022 | \u2022 | \u2022 |\n| mysql.process_list_queries_count | system, user | queries | \u2022 | \u2022 | \u2022 |\n| mysql.process_list_longest_query_duration | duration | seconds | \u2022 | \u2022 | \u2022 |\n| mysql.qcache_ops | hits, lowmem_prunes, inserts, not_cached | queries/s | \u2022 | \u2022 | \u2022 |\n| mysql.qcache | queries | queries | \u2022 | \u2022 | \u2022 |\n| mysql.qcache_freemem | free | MiB | \u2022 | \u2022 | \u2022 |\n| mysql.qcache_memblocks | free, total | blocks | \u2022 | \u2022 | \u2022 |\n| mysql.galera_writesets | rx, tx | writesets/s | \u2022 | \u2022 | \u2022 |\n| mysql.galera_bytes | rx, tx | KiB/s | \u2022 | \u2022 | \u2022 |\n| mysql.galera_queue | rx, tx | writesets | \u2022 | \u2022 | \u2022 |\n| mysql.galera_conflicts | bf_aborts, cert_fails | transactions | \u2022 | \u2022 | \u2022 |\n| mysql.galera_flow_control | paused | ms | \u2022 | \u2022 | \u2022 |\n| mysql.galera_cluster_status | primary, non_primary, disconnected | status | \u2022 | \u2022 | \u2022 |\n| mysql.galera_cluster_state | undefined, joining, donor, joined, synced, error | state | \u2022 | \u2022 | \u2022 |\n| mysql.galera_cluster_size | nodes | nodes | \u2022 | \u2022 | \u2022 |\n| mysql.galera_cluster_weight | weight | weight | \u2022 | \u2022 | \u2022 |\n| mysql.galera_connected | connected | boolean | \u2022 | \u2022 | \u2022 |\n| mysql.galera_ready | ready | boolean | \u2022 | \u2022 | \u2022 |\n| mysql.galera_open_transactions | open | transactions | \u2022 | \u2022 | \u2022 |\n| mysql.galera_thread_count | threads | threads | \u2022 | \u2022 | \u2022 |\n| mysql.key_blocks | unused, used, not_flushed | blocks | \u2022 | \u2022 | \u2022 |\n| mysql.key_requests | reads, writes | requests/s | \u2022 | \u2022 | \u2022 |\n| mysql.key_disk_ops | reads, writes | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.binlog_cache | disk, all | transactions/s | \u2022 | \u2022 | \u2022 |\n| mysql.binlog_stmt_cache | disk, all | statements/s | \u2022 | \u2022 | \u2022 |\n\n### Per connection\n\nThese metrics refer to the replication connection.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit | MySQL | MariaDB | Percona |\n|:------|:----------|:----|:---:|:---:|:---:|\n| mysql.slave_behind | seconds | seconds | \u2022 | \u2022 | \u2022 |\n| mysql.slave_status | sql_running, io_running | boolean | \u2022 | \u2022 | \u2022 |\n\n### Per user\n\nThese metrics refer to the MySQL user.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| user | username |\n\nMetrics:\n\n| Metric | Dimensions | Unit | MySQL | MariaDB | Percona |\n|:------|:----------|:----|:---:|:---:|:---:|\n| mysql.userstats_cpu | used | percentage | | \u2022 | \u2022 |\n| mysql.userstats_rows | read, sent, updated, inserted, deleted | operations/s | | \u2022 | \u2022 |\n| mysql.userstats_commands | select, update, other | commands/s | | \u2022 | \u2022 |\n| mysql.userstats_denied_commands | denied | commands/s | | \u2022 | \u2022 |\n| mysql.userstats_created_transactions | commit, rollback | transactions/s | | \u2022 | \u2022 |\n| mysql.userstats_binlog_written | written | B/s | | \u2022 | \u2022 |\n| mysql.userstats_empty_queries | empty | queries/s | | \u2022 | \u2022 |\n| mysql.userstats_connections | created | connections/s | | \u2022 | \u2022 |\n| mysql.userstats_lost_connections | lost | connections/s | | \u2022 | \u2022 |\n| mysql.userstats_denied_connections | denied | connections/s | | \u2022 | \u2022 |\n\n",integration_type:"collector",id:"go.d.plugin-mysql-MySQL",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/mysql/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-percona_mysql",plugin_name:"go.d.plugin",module_name:"mysql",monitored_instance:{name:"Percona MySQL",link:"https://www.percona.com/software/mysql-database/percona-server",icon_filename:"percona.svg",categories:["data-collection.databases"]},related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},info_provided_to_referring_integrations:{description:""},keywords:["db","database","mysql","maria","mariadb","sql"]},overview:'# Percona MySQL\n\nPlugin: go.d.plugin\nModule: mysql\n\n## Overview\n\nThis collector monitors the health and performance of MySQL servers and collects general statistics, replication and user metrics.\n\n\nIt connects to the MySQL instance via a TCP or UNIX socket and executes the following commands:\n\nExecuted queries:\n\n- `SELECT VERSION();`\n- `SHOW GLOBAL STATUS;`\n- `SHOW ENGINE INNODB STATUS;`\n- `SHOW GLOBAL VARIABLES;`\n- `SHOW SLAVE STATUS;` or `SHOW ALL SLAVES STATUS;` (MariaDBv10.2+) or `SHOW REPLICA STATUS;` (MySQL 8.0.22+)\n- `SHOW USER_STATISTICS;` (MariaDBv10.1.1+)\n- `SELECT TIME,USER FROM INFORMATION_SCHEMA.PROCESSLIST;`\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nPercona MySQL can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on localhost by trying to connect as root and netdata using known MySQL TCP sockets:\n\n- 127.0.0.1:3306\n- "[::1]:3306"\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:"## Setup\n\n\nYou can configure the **mysql** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **mysql**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/mysql.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create netdata user\n\nA user account should have the following [permissions](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html):\n\n- [`USAGE`](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_usage)\n- [`REPLICATION CLIENT`](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_replication-client)\n- [`PROCESS`](https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_process)\n\nTo create the `netdata` user with these permissions, execute the following in the MySQL shell:\n\n- **MySQL and MariaDB < 10.5.9**\n\n ```mysql\n CREATE USER 'netdata'@'localhost';\n GRANT USAGE, REPLICATION CLIENT, PROCESS ON *.* TO 'netdata'@'localhost';\n FLUSH PRIVILEGES;\n ```\n\n- **MariaDB >= 10.5.9**\n\n For MariaDB 10.5.9 and later, use the `SLAVE MONITOR` privilege instead of `REPLICATION CLIENT`:\n\n ```mysql\n CREATE USER 'netdata'@'localhost';\n GRANT USAGE, SLAVE MONITOR, PROCESS ON *.* TO 'netdata'@'localhost';\n FLUSH PRIVILEGES;\n ```\n\nThe `netdata` user will have the ability to connect to the MySQL server on localhost without a password.\nIt will only be able to gather statistics without being able to alter or affect operations in any way.\n\n\n#### Enable User Statistics (optional)\n\nTo collect per-user statistics, the [User Statistics](https://mariadb.com/docs/server/ha-and-performance/optimization-and-tuning/query-optimizations/statistics-for-optimizing-queries/user-statistics) plugin must be enabled.\nThis is available for **MariaDB** and **Percona**, not for MySQL.\n\nBy default, statistics are not collected. To enable the plugin, set the `userstat` system variable.\n\n- **In a configuration file** (persistent, requires restart):\n\n ```ini\n [mariadb]\n userstat = 1\n ```\n\n- **Dynamically** (takes effect immediately, does not persist across restarts):\n\n ```mysql\n SET GLOBAL userstat=1;\n ```\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary=\"Config options\" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | dsn | MySQL server DSN (Data Source Name). See [DSN syntax](https://github.com/go-sql-driver/mysql#dsn-data-source-name). | root@tcp(localhost:3306)/ | yes |\n| | my.cnf | Path to a `my.cnf` file to read connection settings from the `[client]` section. | | no |\n| | timeout | Query timeout (seconds). | 1 | no |\n| **Functions** | functions.top_queries.disabled | Disable the [top-queries](#top-queries) function. | no | no |\n| | functions.top_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.top_queries.limit | Maximum number of queries to return. | 500 | no |\n| | functions.deadlock_info.disabled | Disable the [deadlock-info](#deadlock-info) function. | no | no |\n| | functions.deadlock_info.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.error_info.disabled | Disable the [error-info](#error-info) function. | no | no |\n| | functions.error_info.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **mysql** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the mysql data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _mysql_ (or scroll the list) to locate the **mysql** collector.\n5. Click the **+** next to the **mysql** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/mysql.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/mysql.conf\n```\n\n##### Examples\n\n###### TCP socket\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n dsn: netdata@tcp(127.0.0.1:3306)/\n\n```\n{% /details %}\n###### Unix socket\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n dsn: netdata@unix(/var/lib/mysql/mysql.sock)/\n\n```\n{% /details %}\n###### Connection with password\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n dsn: netconfig:password@tcp(127.0.0.1:3306)/\n\n```\n{% /details %}\n###### my.cnf\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n my.cnf: '/etc/my.cnf'\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n dsn: netdata@tcp(127.0.0.1:3306)/\n\n - name: remote\n dsn: netconfig:password@tcp(203.0.113.0:3306)/\n\n```\n{% /details %}\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `mysql` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m mysql\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m mysql -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `mysql` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep mysql\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep mysql /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep mysql\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ mysql_10s_slow_queries ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.queries | number of slow queries in the last 10 seconds |\n| [ mysql_10s_table_locks_immediate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.table_locks | number of table immediate locks in the last 10 seconds |\n| [ mysql_10s_table_locks_waited ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.table_locks | number of table waited locks in the last 10 seconds |\n| [ mysql_10s_waited_locks_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.table_locks | ratio of waited table locks over the last 10 seconds |\n| [ mysql_connections ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.connections_active | client connections utilization |\n| [ mysql_replication ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.slave_status | replication status (0: stopped, 1: working) |\n| [ mysql_replication_lag ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.slave_behind | difference between the timestamp of the latest transaction processed by the SQL thread and the timestamp of the same transaction when it was processed on the master |\n| [ mysql_galera_cluster_size_max_2m ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.galera_cluster_size | maximum galera cluster size in the last 2 minutes starting one minute ago |\n| [ mysql_galera_cluster_size ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.galera_cluster_size | current galera cluster size, compared to the maximum size in the last 2 minutes |\n| [ mysql_galera_cluster_state_warn ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.galera_cluster_state | galera node state is either Donor/Desynced or Joined |\n| [ mysql_galera_cluster_state_crit ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.galera_cluster_state | galera node state is either Undefined or Joining or Error |\n| [ mysql_galera_cluster_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mysql.conf) | mysql.galera_cluster_status | galera node is part of a nonoperational component. This occurs in cases of multiple membership changes that result in a loss of Quorum or in cases of split-brain situations. |\n",functions:"## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Top Queries\n\nRetrieves aggregated SQL query performance metrics from MySQL [performance_schema.events_statements_summary_by_digest](https://dev.mysql.com/doc/refman/8.4/en/performance-schema-statement-summary-tables.html) table.\n\nThis function queries the `events_statements_summary_by_digest` table which contains aggregated statistics for SQL statements grouped by their digest (normalized query pattern). The function dynamically detects available columns based on your MySQL/MariaDB version.\n\nUse cases:\n- Identify slow queries that consume the most execution time\n- Find frequently executed queries that may benefit from optimization\n- Detect queries with high lock time, errors, or table scans\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Mysql:top-queries` |\n| Require Cloud | yes |\n| Performance | Queries the `events_statements_summary_by_digest` table:<br/>\u2022 On busy servers with high query throughput, the digest table can grow large<br/>\u2022 Default limit of 500 rows balances usefulness with performance |\n| Security | Query text may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Personal information in WHERE clauses or INSERT values<br/>\u2022 Business data and internal identifiers<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to MySQL<br/>\u2022 Performance Schema is enabled with statement digest collection<br/>\u2022 Returns HTTP 503 if collector is still initializing<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Enable performance_schema statement digest collection\n\nPerformance Schema must be enabled and statement instrumentation must be configured to collect digest statistics.\n\n1. Check if Performance Schema is enabled:\n ```sql\n SELECT @@performance_schema;\n ```\n\n2. Check statement instrumentation configuration:\n ```sql\n SELECT * FROM performance_schema.setup_consumers\n WHERE NAME LIKE '%statement%';\n ```\n\n3. The following consumer should be enabled:\n - `events_statements_summary_by_digest`\n\n4. Enable statement consumers if needed:\n ```sql\n UPDATE performance_schema.setup_consumers\n SET ENABLED = 'YES'\n WHERE NAME LIKE 'events_statements%';\n ```\n\n :::info\n\n - Changes to `setup_consumers` take effect immediately without requiring a server restart.\n - MariaDB also supports the `events_statements_summary_by_digest` table. Exact consumer names may vary by MariaDB version, so checking `setup_consumers` first as shown above is recommended.\n\n :::\n\n5. Verify digest table contains data:\n ```sql\n SELECT COUNT(*) FROM performance_schema.events_statements_summary_by_digest;\n ```\n\n Note: Statement digest data is accumulated since server startup or since the table was last truncated. To reset statistics:\n ```sql\n TRUNCATE TABLE performance_schema.events_statements_summary_by_digest;\n ```\n\n Ensure that statement instruments are enabled in the Performance Schema so that statement digest statistics are collected. Refer to your MySQL or MariaDB version documentation for the appropriate configuration options.\n\n\n##### Grant SELECT permission on Performance Schema tables\n\nThe netdata user must have SELECT permission on Performance Schema tables. The standard collector permissions\n(USAGE, REPLICATION CLIENT, PROCESS) do not automatically include Performance Schema access.\n\n1. Grant the required permission:\n ```sql\n GRANT SELECT ON performance_schema.* TO 'netdata'@'localhost';\n FLUSH PRIVILEGES;\n ```\n\n :::info\n\n The host part (`'localhost'`) should match how the netdata user connects. If connecting via TCP/IP, you may need `'netdata'@'%'` or a specific IP address instead.\n\n :::\n\n2. Verify access:\n ```sql\n -- As the netdata user:\n SELECT COUNT(*) FROM performance_schema.events_statements_summary_by_digest;\n ```\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. The available options depend on your MySQL/MariaDB version and include metrics like total execution time, number of calls, lock time, errors, rows examined, and more. Defaults to total execution time. | yes | totalTime | |\n\n#### Returns\n\nAggregated statement statistics from Performance Schema, grouped by query digest. Each row represents a unique query pattern with cumulative metrics across all executions.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Digest | string | | hidden | Unique hash identifier for the normalized query pattern. Queries with the same structure (different literal values) share the same digest. |\n| Query | string | | | Normalized SQL query text with literals replaced by placeholders (e.g., '?' for values). Truncated to 4096 characters. |\n| Schema | string | | | Database schema name where the query was executed. Empty string for queries without a schema context. |\n| Calls | integer | | | Total number of times this query pattern has been executed since server startup or since the digest table was last truncated. |\n| Total Time | duration | milliseconds | | Cumulative execution time across all executions. High values indicate queries that consume significant server resources. |\n| Min Time | duration | milliseconds | hidden | Minimum execution time observed for a single execution. Helps identify variability in query performance. |\n| Avg Time | duration | milliseconds | | Average execution time (total time divided by calls). Use this to compare performance across different query patterns. |\n| Max Time | duration | milliseconds | hidden | Maximum execution time observed for a single execution. Large gaps between min and max may indicate performance instability. |\n| Lock Time | duration | milliseconds | | Total time spent waiting for table locks across all executions. High lock time may indicate contention from concurrent transactions. |\n| Errors | integer | | | Total number of times this query pattern resulted in an error. Non-zero values require investigation into the underlying issue. |\n| Warnings | integer | | | Total number of times this query pattern generated warnings. Warnings may indicate data type conversions, NULL handling issues, or other non-critical problems. |\n| Error Attribution | string | | | Status of error detail attribution for this query. Values: enabled (error details available), no_data (no recent error for this digest), not_enabled (statement history consumers disabled), not_supported (required columns unavailable). |\n| Error Number | integer | | | Most recent error number observed for this query digest (when error attribution is enabled). |\n| SQL State | string | | hidden | SQLSTATE code for the most recent error (when error attribution is enabled). |\n| Error Message | string | | | Most recent error message for this query digest (when error attribution is enabled). |\n| Rows Affected | integer | | | Total number of rows modified by INSERT, UPDATE, DELETE, or REPLACE statements. Useful for tracking write workloads. |\n| Rows Sent | integer | | | Total number of rows returned to the client by SELECT statements. High values may indicate result sets that are too large. |\n| Rows Examined | integer | | | Total number of rows read during query execution. A high ratio of rows examined to rows sent suggests missing or inefficient indexes. |\n| Temp Disk Tables | integer | | | Total number of temporary tables created on disk across all executions. Disk-based temporary tables are significantly slower than in-memory tables and may indicate memory pressure or complex operations requiring sorting/grouping. |\n| Temp Tables | integer | | | Total number of temporary tables created (both in-memory and on-disk). High values suggest frequent sorting, grouping, or DISTINCT operations. |\n| Full Joins | integer | | | Total number of joins that performed a full table scan without using an index. These are typically very expensive operations that should be optimized. |\n| Full Range Joins | integer | | hidden | Total number of joins that used a range scan on the first table. Less efficient than indexed joins but better than full scans. |\n| Select Range | integer | | hidden | Total number of joins that used a range on the first table for row selection. |\n| Select Range Check | integer | | hidden | Total number of joins that checked each row after scanning for key ranges. Very inefficient operation. |\n| Select Scan | integer | | | Total number of joins that performed a full scan of the first table. Indicates missing indexes or suboptimal join order. |\n| Sort Merge Passes | integer | | hidden | Total number of merge passes performed during sort operations. More passes indicate larger datasets that exceed sort buffer size. |\n| Sort Range | integer | | hidden | Total number of sorts that used a range scan. |\n| Sort Rows | integer | | | Total number of rows sorted across all executions. High values indicate frequent sorting operations on large datasets. |\n| Sort Scan | integer | | hidden | Total number of sorts that required a full table scan. |\n| No Index Used | integer | | | Total number of executions where no index was used for table access. These queries are prime candidates for index optimization. |\n| No Good Index Used | integer | | hidden | Total number of executions where a non-optimal index was used. Indicates that while an index exists, a better one might improve performance. |\n| First Seen | string | | hidden | Timestamp when this query pattern was first observed. Helps identify new queries that may have been introduced by application changes. |\n| Last Seen | string | | hidden | Timestamp when this query pattern was last executed. Can help identify stale queries that are no longer in use. |\n| P95 Time | duration | milliseconds | | 95th percentile execution time. 95% of executions completed within this time. Available in MySQL 8.0+. Useful for understanding typical performance. |\n| P99 Time | duration | milliseconds | | 99th percentile execution time. 99% of executions completed within this time. Available in MySQL 8.0+. Helps identify outlier slow executions. |\n| P99.9 Time | duration | milliseconds | hidden | 99.9th percentile execution time. Available in MySQL 8.0+. Identifies extreme outliers in query performance. |\n| Sample Query | string | | hidden | Example of an actual query execution with literal values preserved. Available in MySQL 8.0+. Helpful for understanding the exact queries being executed. |\n| Sample Seen | string | | hidden | Timestamp when the sample query was captured. Available in MySQL 8.0+. |\n| Sample Time | duration | milliseconds | hidden | Execution time of the captured sample query. Available in MySQL 8.0+. |\n| CPU Time | duration | milliseconds | | Total CPU time consumed across all executions. Available in MySQL 8.0.28+. Helps identify CPU-intensive queries. |\n| Max Controlled Memory | integer | | | Maximum memory controlled by the query executor for this query pattern. Available in MySQL 8.0.31+. Helps identify memory-intensive operations. |\n| Max Total Memory | integer | | | Maximum total memory used by this query pattern including both controlled and uncontrolled allocations. Available in MySQL 8.0.31+. |\n\n### Deadlock Info\n\nRetrieves the latest detected InnoDB deadlock from `SHOW ENGINE INNODB STATUS`.\n\nThe output is parsed to attribute the deadlock to the participating transactions and their query text, lock mode, lock status, and wait resource.\n\nUse cases:\n- Identify which query was chosen as the deadlock victim\n- Inspect the waiting lock resource and lock mode\n- Correlate deadlocks with application changes or deployment events\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Mysql:deadlock-info` |\n| Require Cloud | yes |\n| Performance | Executes `SHOW ENGINE INNODB STATUS` on demand:<br/>\u2022 Not part of regular collection<br/>\u2022 Query cost depends on server load and the size of the InnoDB status output |\n| Security | Query text and wait resource strings may include unmasked literal values including sensitive data (PII/secrets):<br/>\u2022 SQL literals such as emails, IDs, or tokens<br/>\u2022 Schema and table names that may be sensitive in some environments<br/>\u2022 Restrict dashboard access to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to MySQL<br/>\u2022 `deadlock_info_function_enabled` is true<br/>\u2022 The account can run `SHOW ENGINE INNODB STATUS` (PROCESS privilege)<br/>\u2022 Returns HTTP 200 with empty data when no deadlock is found<br/>\u2022 Returns HTTP 403 when PROCESS privilege is missing<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out<br/>\u2022 Returns HTTP 561 when the deadlock section cannot be parsed<br/>\u2022 Returns HTTP 503 if the collector is still initializing or the function is disabled |\n\n#### Prerequisites\n\n##### Enable deadlock-info function in Netdata\n\nSet `deadlock_info_function_enabled: true` in the `go.d/mysql.conf` job.\n\n\n##### Grant PROCESS privilege\n\nThe monitoring user must have PROCESS privilege to run `SHOW ENGINE INNODB STATUS`.\n\n\n\n#### Parameters\n\nThis function has no parameters.\n\n#### Returns\n\nParsed deadlock participants from the latest detected deadlock. Each row represents one transaction involved in the deadlock.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Row ID | string | | hidden | Unique row identifier composed of deadlock ID and process ID. |\n| Deadlock ID | string | | | Identifier for the deadlock event, used to group participating transactions. |\n| Timestamp | timestamp | | | Timestamp of the deadlock event. Parsed from the deadlock section when available; otherwise the function execution time. |\n| Process ID | string | | | MySQL thread id of the transaction involved in the deadlock. |\n| Connection ID | integer | | | Numeric connection identifier when the process id is numeric. |\n| ECID | integer | | | Execution context id (engine-specific). This is typically null for MySQL and reserved for cross-engine consistency. |\n| Victim | string | | | \"true\" when the transaction was chosen as the deadlock victim and rolled back; otherwise \"false\". |\n| Query | string | | | SQL query text for the transaction involved in the deadlock. Truncated to 4096 characters. |\n| Lock Mode | string | | | Lock mode reported for the waiting lock (for example X or S). |\n| Lock Status | string | | | Lock status for the transaction. WAITING indicates the transaction was waiting on a lock. |\n| Wait Resource | string | | | Lock resource line from InnoDB status showing what the transaction was waiting on. |\n| Database | string | | | Database name when it can be inferred. This may be empty or null depending on the deadlock output. |\n\n### Error Info\n\nRetrieves recent SQL errors from Performance Schema statement history tables.\n\nThis function reads `performance_schema.events_statements_history_long` when enabled,\notherwise falls back to `performance_schema.events_statements_history`. It reports the\nmost recent error per query digest, including error number, SQLSTATE, and message.\n\nUse cases:\n- Identify recent query errors and their messages\n- Correlate errors to query patterns (digest)\n- Validate error rates seen in top-queries\n\nError messages are truncated by Performance Schema (usually 128 characters).\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Mysql:error-info` |\n| Require Cloud | yes |\n| Performance | Reads Performance Schema statement history tables on demand:<br/>\u2022 Not part of regular collection<br/>\u2022 Query cost depends on history table size and server load |\n| Security | Error messages and query text may include unmasked literals (PII/secrets).<br/>\u2022 Restrict dashboard access to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to MySQL<br/>\u2022 `error_info_function_enabled` is true<br/>\u2022 Performance Schema statement history consumers are enabled (history and/or history_long)<br/>\u2022 Returns HTTP 200 with empty data when no errors are found<br/>\u2022 Returns HTTP 503 when required consumers are not enabled or function disabled<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Enable error-info function in Netdata\n\nSet `error_info_function_enabled: true` in the `go.d/mysql.conf` job.\n\n\n##### Enable statement history consumers\n\nEnsure `events_statements_history` and/or `events_statements_history_long` consumers are enabled.\n\n\n##### Grant SELECT on Performance Schema\n\nThe monitoring user must have SELECT on `performance_schema.*` to read statement history tables.\n\n\n\n#### Parameters\n\nThis function has no parameters.\n\n#### Returns\n\nMost recent error per query digest from Performance Schema history tables.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Digest | string | | hidden | Unique hash identifier for the normalized query pattern. |\n| Query | string | | | Normalized query text when available (digest text or SQL text). |\n| Schema | string | | | Database schema name when available. |\n| Error Number | integer | | | MySQL error number for the most recent error of this digest. |\n| SQL State | string | | | SQLSTATE code for the most recent error. |\n| Error Message | string | | | Error message for the most recent error. |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per MariaDB instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit | MySQL | MariaDB | Percona |\n|:------|:----------|:----|:---:|:---:|:---:|\n| mysql.net | in, out | kilobits/s | \u2022 | \u2022 | \u2022 |\n| mysql.queries | queries, questions, slow_queries | queries/s | \u2022 | \u2022 | \u2022 |\n| mysql.queries_type | select, delete, update, insert, replace | queries/s | \u2022 | \u2022 | \u2022 |\n| mysql.handlers | commit, delete, prepare, read_first, read_key, read_next, read_prev, read_rnd, read_rnd_next, rollback, savepoint, savepointrollback, update, write | handlers/s | \u2022 | \u2022 | \u2022 |\n| mysql.table_open_cache_overflows | open_cache | overflows/s | \u2022 | \u2022 | \u2022 |\n| mysql.table_locks | immediate, waited | locks/s | \u2022 | \u2022 | \u2022 |\n| mysql.join_issues | full_join, full_range_join, range, range_check, scan | joins/s | \u2022 | \u2022 | \u2022 |\n| mysql.sort_issues | merge_passes, range, scan | issues/s | \u2022 | \u2022 | \u2022 |\n| mysql.tmp | disk_tables, files, tables | events/s | \u2022 | \u2022 | \u2022 |\n| mysql.connections | all, aborted | connections/s | \u2022 | \u2022 | \u2022 |\n| mysql.connections_active | active, limit, max_active | connections | \u2022 | \u2022 | \u2022 |\n| mysql.threads | connected, cached, running | threads | \u2022 | \u2022 | \u2022 |\n| mysql.threads_created | created | threads/s | \u2022 | \u2022 | \u2022 |\n| mysql.thread_cache_misses | misses | misses | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_io | read, write | KiB/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_io_ops | reads, writes, fsyncs | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_io_pending_ops | reads, writes, fsyncs | operations | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_log | waits, write_requests, writes | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_redo_log_activity | redo_written, checkpointed | B/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_redo_log_occupancy | occupancy | percentage | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_redo_log_checkpoint_age | age | B | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_cur_row_lock | current waits | operations | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_rows | inserted, read, updated, deleted | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_pages | data, dirty, free, misc, total | pages | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_pages_flushed | flush_pages | requests/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_bytes | data, dirty | MiB | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_read_ahead | all, evicted | pages/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_read_ahead_rnd | read-ahead | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_buffer_pool_ops | disk_reads, wait_free | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_os_log | fsyncs, writes | operations | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_os_log_fsync_writes | fsyncs | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_os_log_io | write | KiB/s | \u2022 | \u2022 | \u2022 |\n| mysql.innodb_deadlocks | deadlocks | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.files | files | files | \u2022 | \u2022 | \u2022 |\n| mysql.files_rate | files | files/s | \u2022 | \u2022 | \u2022 |\n| mysql.connection_errors | accept, internal, max, peer_addr, select, tcpwrap | errors/s | \u2022 | \u2022 | \u2022 |\n| mysql.opened_tables | tables | tables/s | \u2022 | \u2022 | \u2022 |\n| mysql.open_tables | cache, tables | tables | \u2022 | \u2022 | \u2022 |\n| mysql.process_list_fetch_query_duration | duration | milliseconds | \u2022 | \u2022 | \u2022 |\n| mysql.process_list_queries_count | system, user | queries | \u2022 | \u2022 | \u2022 |\n| mysql.process_list_longest_query_duration | duration | seconds | \u2022 | \u2022 | \u2022 |\n| mysql.qcache_ops | hits, lowmem_prunes, inserts, not_cached | queries/s | \u2022 | \u2022 | \u2022 |\n| mysql.qcache | queries | queries | \u2022 | \u2022 | \u2022 |\n| mysql.qcache_freemem | free | MiB | \u2022 | \u2022 | \u2022 |\n| mysql.qcache_memblocks | free, total | blocks | \u2022 | \u2022 | \u2022 |\n| mysql.galera_writesets | rx, tx | writesets/s | \u2022 | \u2022 | \u2022 |\n| mysql.galera_bytes | rx, tx | KiB/s | \u2022 | \u2022 | \u2022 |\n| mysql.galera_queue | rx, tx | writesets | \u2022 | \u2022 | \u2022 |\n| mysql.galera_conflicts | bf_aborts, cert_fails | transactions | \u2022 | \u2022 | \u2022 |\n| mysql.galera_flow_control | paused | ms | \u2022 | \u2022 | \u2022 |\n| mysql.galera_cluster_status | primary, non_primary, disconnected | status | \u2022 | \u2022 | \u2022 |\n| mysql.galera_cluster_state | undefined, joining, donor, joined, synced, error | state | \u2022 | \u2022 | \u2022 |\n| mysql.galera_cluster_size | nodes | nodes | \u2022 | \u2022 | \u2022 |\n| mysql.galera_cluster_weight | weight | weight | \u2022 | \u2022 | \u2022 |\n| mysql.galera_connected | connected | boolean | \u2022 | \u2022 | \u2022 |\n| mysql.galera_ready | ready | boolean | \u2022 | \u2022 | \u2022 |\n| mysql.galera_open_transactions | open | transactions | \u2022 | \u2022 | \u2022 |\n| mysql.galera_thread_count | threads | threads | \u2022 | \u2022 | \u2022 |\n| mysql.key_blocks | unused, used, not_flushed | blocks | \u2022 | \u2022 | \u2022 |\n| mysql.key_requests | reads, writes | requests/s | \u2022 | \u2022 | \u2022 |\n| mysql.key_disk_ops | reads, writes | operations/s | \u2022 | \u2022 | \u2022 |\n| mysql.binlog_cache | disk, all | transactions/s | \u2022 | \u2022 | \u2022 |\n| mysql.binlog_stmt_cache | disk, all | statements/s | \u2022 | \u2022 | \u2022 |\n\n### Per connection\n\nThese metrics refer to the replication connection.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit | MySQL | MariaDB | Percona |\n|:------|:----------|:----|:---:|:---:|:---:|\n| mysql.slave_behind | seconds | seconds | \u2022 | \u2022 | \u2022 |\n| mysql.slave_status | sql_running, io_running | boolean | \u2022 | \u2022 | \u2022 |\n\n### Per user\n\nThese metrics refer to the MySQL user.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| user | username |\n\nMetrics:\n\n| Metric | Dimensions | Unit | MySQL | MariaDB | Percona |\n|:------|:----------|:----|:---:|:---:|:---:|\n| mysql.userstats_cpu | used | percentage | | \u2022 | \u2022 |\n| mysql.userstats_rows | read, sent, updated, inserted, deleted | operations/s | | \u2022 | \u2022 |\n| mysql.userstats_commands | select, update, other | commands/s | | \u2022 | \u2022 |\n| mysql.userstats_denied_commands | denied | commands/s | | \u2022 | \u2022 |\n| mysql.userstats_created_transactions | commit, rollback | transactions/s | | \u2022 | \u2022 |\n| mysql.userstats_binlog_written | written | B/s | | \u2022 | \u2022 |\n| mysql.userstats_empty_queries | empty | queries/s | | \u2022 | \u2022 |\n| mysql.userstats_connections | created | connections/s | | \u2022 | \u2022 |\n| mysql.userstats_lost_connections | lost | connections/s | | \u2022 | \u2022 |\n| mysql.userstats_denied_connections | denied | connections/s | | \u2022 | \u2022 |\n\n",integration_type:"collector",id:"go.d.plugin-mysql-Percona_MySQL",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/mysql/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-nats",plugin_name:"go.d.plugin",module_name:"nats",monitored_instance:{name:"NATS",link:"https://nats.io/",categories:["data-collection.databases"],icon_filename:"nats.svg"},related_resources:{integrations:{list:[]}},alternative_monitored_instances:[],info_provided_to_referring_integrations:{description:""},keywords:["nats","messaging","broker"]},overview:"# NATS\n\nPlugin: go.d.plugin\nModule: nats\n\n## Overview\n\nThis collector monitors the activity and performance of NATS servers.\n\n\nIt sends HTTP requests to the NATS HTTP server's dedicated [monitoring port](https://docs.nats.io/running-a-nats-service/nats_admin/monitoring#monitoring-nats).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector can automatically detect NATS instances running on:\n\n- localhost that are listening on port 8222\n- within Docker containers\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **nats** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **nats**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/nats.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable NATS monitoring\n\nSee [Enable monitoring](https://docs.nats.io/running-a-nats-service/nats_admin/monitoring#enabling-monitoring).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8222 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **Validation** | healthz_check | Selects the `/healthz` [endpoint mode](https://docs.nats.io/running-a-nats-service/nats_admin/monitoring#health-healthz). Options: `default` (standard check), `js-enabled-only` (error if JetStream is disabled), `js-server-only` (skip account/stream/consumer checks). | default | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **nats** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the nats data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _nats_ (or scroll the list) to locate the **nats** collector.\n5. Click the **+** next to the **nats** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/nats.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/nats.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8222\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8222\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nNATS with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8222\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8222\n\n - name: remote\n url: http://192.0.2.1:8222\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `nats` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m nats\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m nats -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `nats` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep nats\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep nats /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep nats\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per server\n\nThese metrics refer to NATS servers.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_name | The name of the NATS cluster this server belongs to. |\n| server_id | A unique identifier for a server within the NATS cluster. |\n| server_name | The configured name of the NATS server. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nats.server_traffic | received, sent | bytes/s |\n| nats.server_messages | received, sent | messages/s |\n| nats.server_connections | active | connections |\n| nats.server_connections_rate | connections | connections/s |\n| nats.server_health_probe_status | ok, error | status |\n| nats.server_cpu_usage | used | percent |\n| nats.server_mem_usage | used | bytes |\n| nats.server_uptime | uptime | seconds |\n| nats.jetstream_streams | active | streams |\n| nats.jetstream_streams_storage_bytes | used | bytes |\n| nats.jetstream_streams_storage_messages | stored | messaged |\n| nats.jetstream_consumers | active | consumers |\n| nats.jetstream_api_requests | requests | requests/s |\n| nats.jetstream_api_errors | errors | errors/s |\n| nats.jetstream_api_inflight | inflight | requests |\n| nats.jetstream_memory_used | used | bytes |\n| nats.jetstream_storage_used | used | bytes |\n\n### Per http endpoint\n\nThese metrics refer to HTTP endpoints.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_name | The name of the NATS cluster this server belongs to. |\n| server_id | A unique identifier for a server within the NATS cluster. |\n| server_name | The configured name of the NATS server. |\n| http_endpoint | HTTP endpoint path. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nats.http_endpoint_requests | requests | requests/s |\n\n### Per account\n\nThese metrics refer to [Accounts](https://docs.nats.io/running-a-nats-service/nats_admin/monitoring#account-statistics).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_name | The name of the NATS cluster this server belongs to. |\n| server_id | A unique identifier for a server within the NATS cluster. |\n| server_name | The configured name of the NATS server. |\n| account | Account name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nats.account_traffic | received, sent | bytes/s |\n| nats.account_messages | received, sent | messages/s |\n| nats.account_connections | active | connections |\n| nats.account_connections_rate | connections | connections/s |\n| nats.account_subscriptions | active | subscriptions |\n| nats.account_slow_consumers | slow | consumers/s |\n| nats.account_leaf_nodes | leafnode | servers |\n\n### Per route\n\nThese metrics refer to [Routes](https://docs.nats.io/running-a-nats-service/nats_admin/monitoring#route-information).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_name | The name of the NATS cluster this server belongs to. |\n| server_id | A unique identifier for a server within the NATS cluster. |\n| server_name | The configured name of the NATS server. |\n| route_id | A unique identifier for a route within the NATS cluster. |\n| remote_id | he unique identifier of the remote server connected via the route. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nats.route_traffic | in, out | bytes/s |\n| nats.route_messages | in, out | messages/s |\n| nats.route_subscriptions | active | subscriptions |\n\n### Per inbound gateway connection\n\nThese metrics refer to [Inbound Gateway Connections](https://docs.nats.io/running-a-nats-service/nats_admin/monitoring#gateway-information).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_name | The name of the NATS cluster this server belongs to. |\n| server_id | A unique identifier for a server within the NATS cluster. |\n| server_name | The configured name of the NATS server. |\n| gateway | The name of the local gateway. |\n| remote_gateway | The name of the remote gateway. |\n| cid | A unique identifier for the connection. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nats.inbound_gateway_conn_traffic | in, out | bytes/s |\n| nats.inbound_gateway_conn_messages | in, out | messages/s |\n| nats.inbound_gateway_conn_subscriptions | active | subscriptions |\n| nats.inbound_gateway_conn_uptime | uptime | seconds |\n\n### Per outbound gateway connection\n\nThese metrics refer to [Outbound Gateway Connections](https://docs.nats.io/running-a-nats-service/nats_admin/monitoring#gateway-information).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_name | The name of the NATS cluster this server belongs to. |\n| server_id | A unique identifier for a server within the NATS cluster. |\n| server_name | The configured name of the NATS server. |\n| gateway | The name of the local gateway. |\n| remote_gateway | The name of the remote gateway. |\n| cid | A unique identifier for the connection. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nats.outbound_gateway_conn_traffic | in, out | bytes/s |\n| nats.outbound_gateway_conn_messages | in, out | messages/s |\n| nats.outbound_gateway_conn_subscriptions | active | subscriptions |\n| nats.outbound_gateway_conn_uptime | uptime | seconds |\n\n### Per leaf node connection\n\nThese metrics refer to [Leaf Node Connections](https://docs.nats.io/running-a-nats-service/nats_admin/monitoring#leaf-node-information).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_name | The name of the NATS cluster this server belongs to. |\n| server_id | A unique identifier for a server within the NATS cluster. |\n| server_name | The configured name of the NATS server. |\n| remote_name | Unique identifier of the remote leaf node server, either its configured name or automatically assigned ID. |\n| account | Name of the associated account. |\n| ip | IP address of the remote server. |\n| port | Port used for the connection to the remote server. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nats.leaf_node_conn_traffic | in, out | bytes/s |\n| nats.leaf_node_conn_messages | in, out | messages/s |\n| nats.leaf_node_conn_subscriptions | active | subscriptions |\n| nats.leaf_node_conn_rtt | rtt | microseconds |\n\n",integration_type:"collector",id:"go.d.plugin-nats-NATS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/nats/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-nginx",plugin_name:"go.d.plugin",module_name:"nginx",monitored_instance:{name:"NGINX",link:"https://www.nginx.com/",categories:["data-collection.web-servers-and-proxies"],icon_filename:"nginx.svg"},related_resources:{integrations:{list:[{plugin_name:"go.d.plugin",module_name:"httpcheck"},{plugin_name:"go.d.plugin",module_name:"web_log"},{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},alternative_monitored_instances:[],info_provided_to_referring_integrations:{description:""},keywords:["nginx","web","webserver","http","proxy"]},overview:'# NGINX\n\nPlugin: go.d.plugin\nModule: nginx\n\n## Overview\n\nThis collector monitors the activity and performance of NGINX servers, and collects metrics such as the number of connections, their status, and client requests.\n\n\nIt sends HTTP requests to the NGINX location [stub-status](https://nginx.org/en/docs/http/ngx_http_stub_status_module.html), which is a built-in location that provides metrics about the NGINX server.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nNGINX can be monitored further using the following other integrations:\n\n- {% relatedResource id="go.d.plugin-httpcheck-HTTP_Endpoints" %}HTTP Endpoints{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-web_log-Web_server_log_files" %}Web server log files{% /relatedResource %}\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects NGINX instances running on localhost that are listening on port 80.\nOn startup, it tries to collect metrics from:\n\n- http://127.0.0.1/basic_status\n- http://localhost/stub_status\n- http://127.0.0.1/stub_status\n- http://127.0.0.1/nginx_status\n- http://127.0.0.1/status\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **nginx** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **nginx**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/nginx.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable status support\n\nConfigure [ngx_http_stub_status_module](https://nginx.org/en/docs/http/ngx_http_stub_status_module.html).\n\n1. Add a status location\n\n Create a small server/location that only listens on localhost and exposes `/stub_status`:\n\n **For local monitoring (default):**\n\n ```nginx\n # /etc/nginx/conf.d/stub_status.conf\n server {\n listen 127.0.0.1:80;\n server_name localhost 127.0.0.1;\n\n location = /stub_status {\n stub_status; # exposes NGINX counters\n access_log off; # keep logs clean\n allow 127.0.0.1; # only local access\n deny all;\n }\n }\n ```\n\n **For remote monitoring:**\n - Change `listen` to bind to an accessible interface (e.g., `listen 80;`)\n - Replace `allow 127.0.0.1;` with your Netdata collector\'s IP address\n - Keep `deny all;` to block other IPs\n\n2. Reload NGINX and restart Netdata\n\n ```bash\n nginx -t\n # if OK:\n systemctl reload nginx # or: nginx -s reload\n\n systemctl restart netdata\n ```\n\n After restart, Netdata will auto-detect the endpoint and begin collecting NGINX metrics.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1/stub_status | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **nginx** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the nginx data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _nginx_ (or scroll the list) to locate the **nginx** collector.\n5. Click the **+** next to the **nginx** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/nginx.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/nginx.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/stub_status\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/stub_status\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nNGINX with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/stub_status\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/stub_status\n\n - name: remote\n url: http://192.0.2.1/stub_status\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `nginx` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m nginx\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m nginx -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `nginx` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep nginx\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep nginx /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep nginx\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per NGINX instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nginx.connections | active | connections |\n| nginx.connections_status | reading, writing, idle | connections |\n| nginx.connections_accepted_handled | accepted, handled | connections/s |\n| nginx.requests | requests | requests/s |\n\n",integration_type:"collector",id:"go.d.plugin-nginx-NGINX",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/nginx/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-nginxplus",plugin_name:"go.d.plugin",module_name:"nginxplus",monitored_instance:{name:"NGINX Plus",link:"https://www.nginx.com/products/nginx/",icon_filename:"nginxplus.svg",categories:["data-collection.web-servers-and-proxies"]},keywords:["nginxplus","nginx","web","webserver","http","proxy"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# NGINX Plus\n\nPlugin: go.d.plugin\nModule: nginxplus\n\n## Overview\n\nThis collector monitors NGINX Plus servers.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **nginxplus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **nginxplus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/nginxplus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Config API\n\nTo configure API, see the [official documentation](https://docs.nginx.com/nginx/admin-guide/monitoring/live-activity-monitoring/#configuring-the-api).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **nginxplus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the nginxplus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _nginxplus_ (or scroll the list) to locate the **nginxplus** collector.\n5. Click the **+** next to the **nginxplus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/nginxplus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/nginxplus.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1\n\n```\n{% /details %}\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nNGINX Plus with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1\n\n - name: remote\n url: http://192.0.2.1\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `nginxplus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m nginxplus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m nginxplus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `nginxplus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep nginxplus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep nginxplus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep nginxplus\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per NGINX Plus instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nginxplus.client_connections_rate | accepted, dropped | connections/s |\n| nginxplus.client_connections_count | active, idle | connections |\n| nginxplus.ssl_handshakes_rate | successful, failed | handshakes/s |\n| nginxplus.ssl_handshakes_failures_rate | no_common_protocol, no_common_cipher, timeout, peer_rejected_cert | failures/s |\n| nginxplus.ssl_verification_errors_rate | no_cert, expired_cert, revoked_cert, hostname_mismatch, other | errors/s |\n| nginxplus.ssl_session_reuses_rate | ssl_session | reuses/s |\n| nginxplus.http_requests_rate | requests | requests/s |\n| nginxplus.http_requests_count | requests | requests |\n| nginxplus.uptime | uptime | seconds |\n\n### Per http server zone\n\nThese metrics refer to the HTTP server zone.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| http_server_zone | HTTP server zone name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nginxplus.http_server_zone_requests_rate | requests | requests/s |\n| nginxplus.http_server_zone_responses_per_code_class_rate | 1xx, 2xx, 3xx, 4xx, 5xx | responses/s |\n| nginxplus.http_server_zone_traffic_rate | received, sent | bytes/s |\n| nginxplus.http_server_zone_requests_processing_count | processing | requests |\n| nginxplus.http_server_zone_requests_discarded_rate | discarded | requests/s |\n\n### Per http location zone\n\nThese metrics refer to the HTTP location zone.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| http_location_zone | HTTP location zone name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nginxplus.http_location_zone_requests_rate | requests | requests/s |\n| nginxplus.http_location_zone_responses_per_code_class_rate | 1xx, 2xx, 3xx, 4xx, 5xx | responses/s |\n| nginxplus.http_location_zone_traffic_rate | received, sent | bytes/s |\n| nginxplus.http_location_zone_requests_discarded_rate | discarded | requests/s |\n\n### Per http upstream\n\nThese metrics refer to the HTTP upstream.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| http_upstream_name | HTTP upstream name |\n| http_upstream_zone | HTTP upstream zone name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nginxplus.http_upstream_peers_count | peers | peers |\n| nginxplus.http_upstream_zombies_count | zombie | servers |\n| nginxplus.http_upstream_keepalive_count | keepalive | connections |\n\n### Per http upstream server\n\nThese metrics refer to the HTTP upstream server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| http_upstream_name | HTTP upstream name |\n| http_upstream_zone | HTTP upstream zone name |\n| http_upstream_server_address | HTTP upstream server address (e.g. 127.0.0.1:81) |\n| http_upstream_server_name | HTTP upstream server name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nginxplus.http_upstream_server_requests_rate | requests | requests/s |\n| nginxplus.http_upstream_server_responses_per_code_class_rate | 1xx, 2xx, 3xx, 4xx, 5xx | responses/s |\n| nginxplus.http_upstream_server_response_time | response | milliseconds |\n| nginxplus.http_upstream_server_response_header_time | header | milliseconds |\n| nginxplus.http_upstream_server_traffic_rate | received, sent | bytes/s |\n| nginxplus.http_upstream_server_state | up, down, draining, unavail, checking, unhealthy | state |\n| nginxplus.http_upstream_server_connections_count | active | connections |\n| nginxplus.http_upstream_server_downtime | downtime | seconds |\n\n### Per http cache\n\nThese metrics refer to the HTTP cache.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| http_cache | HTTP cache name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nginxplus.http_cache_state | warm, cold | state |\n| nginxplus.http_cache_iops | served, written, bypass | responses/s |\n| nginxplus.http_cache_io | served, written, bypass | bytes/s |\n| nginxplus.http_cache_size | size | bytes |\n\n### Per stream server zone\n\nThese metrics refer to the Stream server zone.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| stream_server_zone | Stream server zone name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nginxplus.stream_server_zone_connections_rate | accepted | connections/s |\n| nginxplus.stream_server_zone_sessions_per_code_class_rate | 2xx, 4xx, 5xx | sessions/s |\n| nginxplus.stream_server_zone_traffic_rate | received, sent | bytes/s |\n| nginxplus.stream_server_zone_connections_processing_count | processing | connections |\n| nginxplus.stream_server_zone_connections_discarded_rate | discarded | connections/s |\n\n### Per stream upstream\n\nThese metrics refer to the Stream upstream.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| stream_upstream_name | Stream upstream name |\n| stream_upstream_zone | Stream upstream zone name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nginxplus.stream_upstream_peers_count | peers | peers |\n| nginxplus.stream_upstream_zombies_count | zombie | servers |\n\n### Per stream upstream server\n\nThese metrics refer to the Stream upstream server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| stream_upstream_name | Stream upstream name |\n| stream_upstream_zone | Stream upstream zone name |\n| stream_upstream_server_address | Stream upstream server address (e.g. 127.0.0.1:12346) |\n| stream_upstream_server_name | Stream upstream server name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nginxplus.stream_upstream_server_connections_rate | forwarded | connections/s |\n| nginxplus.stream_upstream_server_traffic_rate | received, sent | bytes/s |\n| nginxplus.stream_upstream_server_state | up, down, unavail, checking, unhealthy | state |\n| nginxplus.stream_upstream_server_downtime | downtime | seconds |\n| nginxplus.stream_upstream_server_connections_count | active | connections |\n\n### Per resolver zone\n\nThese metrics refer to the resolver zone.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| resolver_zone | resolver zone name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nginxplus.resolver_zone_requests_rate | name, srv, addr | requests/s |\n| nginxplus.resolver_zone_responses_rate | noerror, formerr, servfail, nxdomain, notimp, refused, timedout, unknown | responses/s |\n\n",integration_type:"collector",id:"go.d.plugin-nginxplus-NGINX_Plus",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/nginxplus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-nginxunit",plugin_name:"go.d.plugin",module_name:"nginxunit",monitored_instance:{name:"NGINX Unit",link:"https://unit.nginx.org/",categories:["data-collection.web-servers-and-proxies"],icon_filename:"nginx.svg"},related_resources:{integrations:{list:[]}},alternative_monitored_instances:[],info_provided_to_referring_integrations:{description:""},keywords:["nginx","unit","web","appserver","http"]},overview:"# NGINX Unit\n\nPlugin: go.d.plugin\nModule: nginxunit\n\n## Overview\n\nThis collector monitors the activity and performance of NGINX Unit servers, and collects metrics such as the number of connections, their status, and client requests.\n\n\nIt sends HTTP requests to the NGINX Unit [Status API](https://unit.nginx.org/statusapi/).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector can automatically detect NGINX Unit instances running on:\n\n- localhost that are listening on port 8000\n- within Docker containers\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **nginxunit** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **nginxunit**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/nginxunit.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable HTTP Control API\n\nSee [Control API](https://unit.nginx.org/controlapi/#configuration-api) documentation.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8000 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **nginxunit** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the nginxunit data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _nginxunit_ (or scroll the list) to locate the **nginxunit** collector.\n5. Click the **+** next to the **nginxunit** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/nginxunit.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/nginxunit.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8000\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1::8000\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nNGINX Unit with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8000\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8000\n\n - name: remote\n url: http://192.0.2.1:8000\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `nginxunit` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m nginxunit\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m nginxunit -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `nginxunit` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep nginxunit\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep nginxunit /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep nginxunit\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per NGINX Unit instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nginxunit.requests_rate | requests | requests/s |\n| nginxunit.connections_rate | accepted, closed | connections/s |\n| nginxunit.connections_current | active, idle | connections |\n\n",integration_type:"collector",id:"go.d.plugin-nginxunit-NGINX_Unit",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/nginxunit/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-nginxvts",plugin_name:"go.d.plugin",module_name:"nginxvts",monitored_instance:{name:"NGINX VTS",link:"https://www.nginx.com/",icon_filename:"nginx.svg",categories:["data-collection.web-servers-and-proxies"]},keywords:["webserver"],related_resources:{integrations:{list:[{plugin_name:"go.d.plugin",module_name:"web_log"},{plugin_name:"go.d.plugin",module_name:"httpcheck"},{plugin_name:"apps.plugin",module_name:"apps"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# NGINX VTS\n\nPlugin: go.d.plugin\nModule: nginxvts\n\n## Overview\n\nThis collector monitors NGINX servers with [virtual host traffic status module](https://github.com/vozlt/nginx-module-vts).\n\n\nIt sends HTTP requests to the NGINX VTS location [status](https://github.com/vozlt/nginx-module-vts#synopsis), \nwhich is a built-in location that provides metrics about the NGINX VTS server.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nNGINX VTS can be monitored further using the following other integrations:\n\n- {% relatedResource id="go.d.plugin-web_log-Web_server_log_files" %}Web server log files{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-httpcheck-HTTP_Endpoints" %}HTTP Endpoints{% /relatedResource %}\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects NGINX instances running on localhost.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **nginxvts** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **nginxvts**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/nginxvts.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Configure nginx-vts module\n\nTo configure nginx-vts, see the [https://github.com/vozlt/nginx-module-vts#installation).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://localhost/status/format/json | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **nginxvts** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the nginxvts data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _nginxvts_ (or scroll the list) to locate the **nginxvts** collector.\n5. Click the **+** next to the **nginxvts** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/nginxvts.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/nginxvts.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/status/format/json\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/server-status?auto\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1/status/format/json\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/status/format/json\n\n - name: remote\n url: http://192.0.2.1/status/format/json\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `nginxvts` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m nginxvts\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m nginxvts -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `nginxvts` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep nginxvts\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep nginxvts /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep nginxvts\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per NGINX VTS instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nginxvts.requests_total | requests | requests/s |\n| nginxvts.active_connections | active | connections |\n| nginxvts.connections_total | reading, writing, waiting, accepted, handled | connections/s |\n| nginxvts.uptime | uptime | seconds |\n| nginxvts.shm_usage | max, used | bytes |\n| nginxvts.shm_used_node | used | nodes |\n| nginxvts.server_requests_total | requests | requests/s |\n| nginxvts.server_responses_total | 1xx, 2xx, 3xx, 4xx, 5xx | responses/s |\n| nginxvts.server_traffic_total | in, out | bytes/s |\n| nginxvts.server_cache_total | miss, bypass, expired, stale, updating, revalidated, hit, scarce | events/s |\n\n",integration_type:"collector",id:"go.d.plugin-nginxvts-NGINX_VTS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/nginxvts/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-nsd",plugin_name:"go.d.plugin",module_name:"nsd",monitored_instance:{name:"NSD",link:"https://nsd.docs.nlnetlabs.nl/en/latest",icon_filename:"nsd.svg",categories:["data-collection.networking"]},keywords:["nsd","dns"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# NSD\n\nPlugin: go.d.plugin\nModule: nsd\n\n## Overview\n\nThis collector monitors NSD statistics like queries, zones, protocols, query types and more. It relies on the [`nsd-control`](https://nsd.docs.nlnetlabs.nl/en/latest/manpages/nsd-control.html) CLI tool but avoids directly executing the binary. Instead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment. This approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.\nExecuted commands:\n- `nsd-control stats_noreset`\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n- BSD\n- macOS\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **nsd** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **nsd**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/nsd.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| timeout | nsd-control binary execution timeout. | 2 | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **nsd** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the nsd data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _nsd_ (or scroll the list) to locate the **nsd** collector.\n5. Click the **+** next to the **nsd** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/nsd.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/nsd.conf\n```\n\n##### Examples\n\n###### Custom update_every\n\nAllows you to override the default data collection interval.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: nsd\n update_every: 5 # Collect logical volume statistics every 5 seconds\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `nsd` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m nsd\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m nsd -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `nsd` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep nsd\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep nsd /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep nsd\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per NSD instance\n\nThese metrics refer to the the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nsd.queries | queries | queries/s |\n| nsd.queries_by_type | A, NS, MD, MF, CNAME, SOA, MB, MG, MR, NULL, WKS, PTR, HINFO, MINFO, MX, TXT, RP, AFSDB, X25, ISDN, RT, NSAP, SIG, KEY, PX, AAAA, LOC, NXT, SRV, NAPTR, KX, CERT, DNAME, OPT, APL, DS, SSHFP, IPSECKEY, RRSIG, NSEC, DNSKEY, DHCID, NSEC3, NSEC3PARAM, TLSA, SMIMEA, CDS, CDNSKEY, OPENPGPKEY, CSYNC, ZONEMD, SVCB, HTTPS, SPF, NID, L32, L64, LP, EUI48, EUI64, URI, CAA, AVC, DLV, IXFR, AXFR, MAILB, MAILA, ANY | queries/s |\n| nsd.queries_by_opcode | QUERY, IQUERY, STATUS, NOTIFY, UPDATE, OTHER | queries/s |\n| nsd.queries_by_class | IN, CS, CH, HS | queries/s |\n| nsd.queries_by_protocol | udp, udp6, tcp, tcp6, tls, tls6 | queries/s |\n| nsd.answers_by_rcode | NOERROR, FORMERR, SERVFAIL, NXDOMAIN, NOTIMP, REFUSED, YXDOMAIN, YXRRSET, NXRRSET, NOTAUTH, NOTZONE, RCODE11, RCODE12, RCODE13, RCODE14, RCODE15, BADVERS | answers/s |\n| nsd.errors | query, answer | errors/s |\n| nsd.drops | query | drops/s |\n| nsd.zones | master, slave | zones |\n| nsd.zone_transfers_requests | AXFR, IXFR | requests/s |\n| nsd.zone_transfer_memory | used | bytes |\n| nsd.database_size | disk, mem | bytes |\n| nsd.uptime | uptime | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-nsd-NSD",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/nsd/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-ntpd",plugin_name:"go.d.plugin",module_name:"ntpd",monitored_instance:{name:"NTPd",link:"https://www.ntp.org/documentation/4.2.8-series/ntpd",icon_filename:"ntp.png",categories:["data-collection.networking"]},keywords:["ntpd","ntp","time"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# NTPd\n\nPlugin: go.d.plugin\nModule: ntpd\n\n## Overview\n\nThis collector monitors the system variables of the local `ntpd` daemon (optional incl. variables of the polled peers) using the NTP Control Message Protocol via UDP socket, similar to `ntpq`, the [standard NTP query program](https://doc.ntp.org/current-stable/ntpq.html).\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **ntpd** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **ntpd**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/ntpd.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | NTP server address (`IP:PORT`). | 127.0.0.1:123 | yes |\n| | timeout | Connection, read, and write timeout (seconds). | 1 | no |\n| **Metrics Selection** | collect_peers | Collect peer metrics. | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **ntpd** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the ntpd data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _ntpd_ (or scroll the list) to locate the **ntpd** collector.\n5. Click the **+** next to the **ntpd** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/ntpd.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/ntpd.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:123\n\n```\n{% /details %}\n###### With peers metrics\n\nCollect peers metrics.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:123\n collect_peers: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:123\n\n - name: remote\n address: 203.0.113.0:123\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `ntpd` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m ntpd\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m ntpd -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `ntpd` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep ntpd\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep ntpd /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep ntpd\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per NTPd instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ntpd.sys_offset | offset | milliseconds |\n| ntpd.sys_jitter | system, clock | milliseconds |\n| ntpd.sys_frequency | frequency | ppm |\n| ntpd.sys_wander | clock | ppm |\n| ntpd.sys_rootdelay | delay | milliseconds |\n| ntpd.sys_rootdisp | dispersion | milliseconds |\n| ntpd.sys_stratum | stratum | stratum |\n| ntpd.sys_tc | current, minimum | log2 |\n| ntpd.sys_precision | precision | log2 |\n\n### Per peer\n\nThese metrics refer to the NTPd peer.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| peer_address | peer's source IP address |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ntpd.peer_offset | offset | milliseconds |\n| ntpd.peer_delay | delay | milliseconds |\n| ntpd.peer_dispersion | dispersion | milliseconds |\n| ntpd.peer_jitter | jitter | milliseconds |\n| ntpd.peer_xleave | xleave | milliseconds |\n| ntpd.peer_rootdelay | rootdelay | milliseconds |\n| ntpd.peer_rootdisp | dispersion | milliseconds |\n| ntpd.peer_stratum | stratum | stratum |\n| ntpd.peer_hmode | hmode | hmode |\n| ntpd.peer_pmode | pmode | pmode |\n| ntpd.peer_hpoll | hpoll | log2 |\n| ntpd.peer_ppoll | ppoll | log2 |\n| ntpd.peer_precision | precision | log2 |\n\n",integration_type:"collector",id:"go.d.plugin-ntpd-NTPd",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/ntpd/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-nvidia_smi",plugin_name:"go.d.plugin",module_name:"nvidia_smi",monitored_instance:{name:"Nvidia GPU",link:"https://www.nvidia.com/en-us/",icon_filename:"nvidia.svg",categories:["data-collection.hardware-and-sensors"]},keywords:["nvidia","gpu","hardware"],related_resources:{integrations:{list:[{plugin_name:"go.d.plugin",module_name:"dcgm"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# Nvidia GPU\n\nPlugin: go.d.plugin\nModule: nvidia_smi\n\n## Overview\n\nThis collector monitors GPUs performance metrics using\nthe [nvidia-smi](https://developer.nvidia.com/nvidia-system-management-interface) CLI tool.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nNvidia GPU can be monitored further using the following other integrations:\n\n- {% relatedResource id="go.d.plugin-dcgm-Nvidia_Data_Center_GPU_Manager_(DCGM)" %}Nvidia Data Center GPU Manager (DCGM){% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn\'t support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **nvidia_smi** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **nvidia_smi**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/nvidia_smi.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| binary_path | Path to nvidia_smi binary. The default is "nvidia_smi" and the executable is looked for in the directories specified in the PATH environment variable. | nvidia_smi | no |\n| timeout | The maximum duration, in seconds, to wait for an `nvidia-smi` command to complete. This setting applies differently based on the collector\'s mode. **Loop Mode:** In loop mode, the timeout primarily determines how long to wait for the initial `nvidia-smi` execution. If the initial query takes longer than the timeout, the collector may report an error. For systems with multiple GPUs, the initial load time can sometimes be significant (e.g., 5-10 seconds). **Regular Mode:** If the collector is in regular mode, the timeout specifies how long to wait for each individual `nvidia-smi` execution. | 10 | no |\n| loop_mode | When enabled, `nvidia-smi` is executed continuously in a separate thread using the `-l` option. | yes | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **nvidia_smi** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the nvidia_smi data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _nvidia_smi_ (or scroll the list) to locate the **nvidia_smi** collector.\n5. Click the **+** next to the **nvidia_smi** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/nvidia_smi.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/nvidia_smi.conf\n```\n\n##### Examples\n\n###### Custom binary path\n\nThe executable is not in the directories specified in the PATH environment variable.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: nvidia_smi\n binary_path: /usr/local/sbin/nvidia_smi\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `nvidia_smi` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m nvidia_smi\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m nvidia_smi -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `nvidia_smi` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep nvidia_smi\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep nvidia_smi /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep nvidia_smi\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per gpu\n\nThese metrics refer to the GPU.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| uuid | GPU uuid (e.g. GPU-27b94a00-ed54-5c24-b1fd-1054085de32a) |\n| index | GPU index (nvidia_smi typically orders GPUs by PCI bus ID) |\n| product_name | GPU product name (e.g. NVIDIA A100-SXM4-40GB) |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nvidia_smi.gpu_pcie_bandwidth_usage | rx, tx | B/s |\n| nvidia_smi.gpu_pcie_bandwidth_utilization | rx, tx | % |\n| nvidia_smi.gpu_fan_speed_perc | fan_speed | % |\n| nvidia_smi.gpu_utilization | gpu | % |\n| nvidia_smi.gpu_memory_utilization | memory | % |\n| nvidia_smi.gpu_decoder_utilization | decoder | % |\n| nvidia_smi.gpu_encoder_utilization | encoder | % |\n| nvidia_smi.gpu_frame_buffer_memory_usage | free, used, reserved | B |\n| nvidia_smi.gpu_bar1_memory_usage | free, used | B |\n| nvidia_smi.gpu_temperature | temperature | Celsius |\n| nvidia_smi.gpu_voltage | voltage | V |\n| nvidia_smi.gpu_clock_freq | graphics, video, sm, mem | MHz |\n| nvidia_smi.gpu_power_draw | power_draw | Watts |\n| nvidia_smi.gpu_performance_state | P0-P15 | state |\n| nvidia_smi.gpu_mig_mode_current_status | enabled, disabled | status |\n| nvidia_smi.gpu_mig_devices_count | mig | devices |\n\n### Per mig\n\nThese metrics refer to the Multi-Instance GPU (MIG).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| uuid | GPU uuid (e.g. GPU-27b94a00-ed54-5c24-b1fd-1054085de32a) |\n| product_name | GPU product name (e.g. NVIDIA A100-SXM4-40GB) |\n| gpu_instance_id | GPU instance id (e.g. 1) |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nvidia_smi.gpu_mig_frame_buffer_memory_usage | free, used, reserved | B |\n| nvidia_smi.gpu_mig_bar1_memory_usage | free, used | B |\n\n",integration_type:"collector",id:"go.d.plugin-nvidia_smi-Nvidia_GPU",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/nvidia_smi/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-nvme",plugin_name:"go.d.plugin",module_name:"nvme",monitored_instance:{name:"NVMe devices",link:"",icon_filename:"nvme.svg",categories:["data-collection.storage"]},keywords:["nvme"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# NVMe devices\n\nPlugin: go.d.plugin\nModule: nvme\n\n## Overview\n\nThis collector monitors the health of NVMe devices. It relies on the [`nvme`](https://github.com/linux-nvme/nvme-cli#nvme-cli) CLI tool but avoids directly executing the binary. Instead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment. This approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n- BSD\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **nvme** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **nvme**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/nvme.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install nvme-cli\n\nSee [Distro Support](https://github.com/linux-nvme/nvme-cli#distro-support). Install `nvme-cli` using your distribution\'s package manager.\n\n\n#### For Netdata running in a Docker container: grant NVMe device access\n\nYour NVMe devices need to be accessible within the Docker container for Netdata to monitor them.\n\nInclude the following option in your `docker run` command or add the device mapping in your `docker-compose.yml` file:\n\n- `docker run`\n\n ```bash\n --device \'/dev/nvme0n1:/dev/nvme0n1\'\n ```\n\n- `docker-compose.yml`\n\n ```yaml\n services:\n netdata:\n devices:\n - "/dev/nvme0n1:/dev/nvme0n1"\n ```\n\n**Note**: Replace `/dev/nvme0n1` with your actual NVMe device name.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| autodetection_retry | Recheck interval in seconds. Zero means no recheck will be scheduled. | 0 | no |\n| timeout | nvme binary execution timeout. | 2 | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **nvme** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the nvme data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _nvme_ (or scroll the list) to locate the **nvme** collector.\n5. Click the **+** next to the **nvme** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/nvme.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/nvme.conf\n```\n\n##### Examples\n\n###### Custom update_every\n\nAllows you to override the default data collection interval.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: nvme\n update_every: 5 # Collect NVMe metrics every 5 seconds\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `nvme` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m nvme\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m nvme -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `nvme` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep nvme\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep nvme /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep nvme\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ nvme_device_critical_warnings_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/nvme.conf) | nvme.device_critical_warnings_state | NVMe device ${label:device} has critical warnings |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per device\n\nThese metrics refer to the NVME device.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device | NVMe device name |\n| model_number | NVMe device model |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nvme.device_estimated_endurance_perc | used | % |\n| nvme.device_available_spare_perc | spare | % |\n| nvme.device_composite_temperature | temperature | celsius |\n| nvme.device_io_transferred_count | read, written | bytes |\n| nvme.device_power_cycles_count | power | cycles |\n| nvme.device_power_on_time | power-on | seconds |\n| nvme.device_critical_warnings_state | available_spare, temp_threshold, nvm_subsystem_reliability, read_only, volatile_mem_backup_failed, persistent_memory_read_only | state |\n| nvme.device_unsafe_shutdowns_count | unsafe | shutdowns |\n| nvme.device_media_errors_rate | media | errors/s |\n| nvme.device_error_log_entries_rate | error_log | entries/s |\n| nvme.device_warning_composite_temperature_time | wctemp | seconds |\n| nvme.device_critical_composite_temperature_time | cctemp | seconds |\n| nvme.device_thermal_mgmt_temp1_transitions_rate | temp1 | transitions/s |\n| nvme.device_thermal_mgmt_temp2_transitions_rate | temp2 | transitions/s |\n| nvme.device_thermal_mgmt_temp1_time | temp1 | seconds |\n| nvme.device_thermal_mgmt_temp2_time | temp2 | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-nvme-NVMe_devices",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/nvme/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"openldap",monitored_instance:{name:"OpenLDAP",link:"https://www.openldap.org/",categories:["data-collection.applications"],icon_filename:"openldap.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["openldap","RBAC","Directory access"]},overview:"# OpenLDAP\n\nPlugin: go.d.plugin\nModule: openldap\n\n## Overview\n\nThis collector monitors OpenLDAP metrics about connections, operations, referrals and more.\n\n\nIt gathers the metrics using the [go-ldap](https://github.com/go-ldap/ldap) module and the [Monitor backend](https://www.openldap.org/doc/admin24/monitoringslapd.html) of OpenLDAP.\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector cannot auto-detect OpenLDAP instances, because credential configuration is required.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **openldap** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **openldap**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/openldap.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable the openLDAP Monitor Backend.\n\nFollow instructions from https://www.openldap.org/doc/admin24/monitoringslapd.html to activate monitoring interface.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | LDAP server URL. | ldap://127.0.0.1:389 | yes |\n| | timeout | Connection and communication timeout (seconds). | 2 | no |\n| **Auth** | username | Distinguished Name (DN) of the user authorized to query the monitor database. | | yes |\n| | password | Password for the DN user. | | yes |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **openldap** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the openldap data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _openldap_ (or scroll the list) to locate the **openldap** collector.\n5. Click the **+** next to the **openldap** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/openldap.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/openldap.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: ldap://localhost:389\n username: cn=netdata,dc=example,dc=com \n password: secret\n\n```\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n```yaml\njobs:\n - name: local\n url: ldap://localhost:389\n username: cn=netdata,dc=example,dc=com \n password: secret\n\n - name: remote\n url: ldap://192.0.2.1:389\n username: cn=netdata,dc=example,dc=com \n password: secret\n\n```\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `openldap` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m openldap\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m openldap -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `openldap` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep openldap\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep openldap /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep openldap\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per OpenLDAP instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| openldap.current_connections | active | connections |\n| openldap.connections | connections | connections/s |\n| openldap.traffic | sent | bytes/s |\n| openldap.entries | sent | entries/s |\n| openldap.referrals | sent | referrals/s |\n| openldap.operations | completed, initiated | operations/s |\n| openldap.operations_by_type | bind, search, unbind, add, delete, modify, compare | operations/s |\n| openldap.waiters | write, read | waiters/s |\n\n",integration_type:"collector",id:"go.d.plugin-openldap-OpenLDAP",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/openldap/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-openvpn",plugin_name:"go.d.plugin",module_name:"openvpn",monitored_instance:{name:"OpenVPN",link:"https://openvpn.net/",icon_filename:"openvpn.svg",categories:["data-collection.networking"]},keywords:["openvpn","vpn"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# OpenVPN\n\nPlugin: go.d.plugin\nModule: openvpn\n\n## Overview\n\nThis collector monitors OpenVPN servers.\n\nIt uses OpenVPN [Management Interface](https://openvpn.net/community-resources/management-interface/) to collect metrics.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **openvpn** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **openvpn**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/openvpn.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable in go.d.conf.\n\nThis collector is disabled by default. You need to explicitly enable it in [go.d.conf](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d.conf).\n\nFrom the documentation for the OpenVPN Management Interface:\n> Currently, the OpenVPN daemon can at most support a single management client any one time.\n\nIt is disabled to not break other tools which use `Management Interface`.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | OpenVPN server address (`IP:PORT`). | 127.0.0.1:7505 | yes |\n| | timeout | Connection, read, write, and name resolution timeout (seconds). | 1 | no |\n| **Filters** | per_user_stats | User selector. Defines which user metrics to collect. | | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **openvpn** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the openvpn data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _openvpn_ (or scroll the list) to locate the **openvpn** collector.\n5. Click the **+** next to the **openvpn** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/openvpn.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/openvpn.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:7505\n\n```\n{% /details %}\n###### With user metrics\n\nCollect metrics of all users.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:7505\n per_user_stats:\n includes:\n - "* *"\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:7505\n\n - name: remote\n address: 203.0.113.0:7505\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `openvpn` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m openvpn\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m openvpn -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `openvpn` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep openvpn\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep openvpn /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep openvpn\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per OpenVPN instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| openvpn.active_clients | clients | clients |\n| openvpn.total_traffic | in, out | kilobits/s |\n\n### Per user\n\nThese metrics refer to the VPN user.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| username | VPN username |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| openvpn.user_traffic | in, out | kilobits/s |\n| openvpn.user_connection_time | time | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-openvpn-OpenVPN",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/openvpn/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-openvpn_status_log",plugin_name:"go.d.plugin",module_name:"openvpn_status_log",monitored_instance:{name:"OpenVPN status log",link:"https://openvpn.net/",icon_filename:"openvpn.svg",categories:["data-collection.networking"]},keywords:["openvpn","vpn"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# OpenVPN status log\n\nPlugin: go.d.plugin\nModule: openvpn_status_log\n\n## Overview\n\nThis collector monitors OpenVPN server.\n\nIt parses server log files and provides summary and per user metrics.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **openvpn_status_log** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **openvpn_status_log**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/openvpn_status_log.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 1 | no |\n| autodetection_retry | Recheck interval in seconds. Zero means no recheck will be scheduled. | 0 | no |\n| log_path | Path to status log. | /var/log/openvpn/status.log | yes |\n| per_user_stats | User selector. Determines which user metrics will be collected. | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **openvpn_status_log** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the openvpn_status_log data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _openvpn_status_log_ (or scroll the list) to locate the **openvpn_status_log** collector.\n5. Click the **+** next to the **openvpn_status_log** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/openvpn_status_log.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/openvpn_status_log.conf\n```\n\n##### Examples\n\n###### With user metrics\n\nCollect metrics of all users.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n per_user_stats:\n includes:\n - "* *"\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `openvpn_status_log` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m openvpn_status_log\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m openvpn_status_log -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `openvpn_status_log` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep openvpn_status_log\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep openvpn_status_log /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep openvpn_status_log\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per OpenVPN status log instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| openvpn.active_clients | clients | clients |\n| openvpn.total_traffic | in, out | kilobits/s |\n\n### Per user\n\nThese metrics refer to the VPN user.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| username | VPN username |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| openvpn.user_traffic | in, out | kilobits/s |\n| openvpn.user_connection_time | time | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-openvpn_status_log-OpenVPN_status_log",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/openvpn_status_log/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-oracledb",plugin_name:"go.d.plugin",module_name:"oracledb",monitored_instance:{name:"Oracle DB",link:"https://www.oracle.com/database/",categories:["data-collection.databases"],icon_filename:"oracle.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["database","oracle","sql"]},overview:"# Oracle DB\n\nPlugin: go.d.plugin\nModule: oracledb\n\n## Overview\n\nThis collector monitors the health and performance of Oracle DB servers and collects general statistics, replication and user metrics.\n\n\nIt establishes a connection to the Oracle DB instance via a TCP or UNIX socket and extracts metrics from the following database tables:\n\n- `v$sysmetric`\n- `v$sysstat`\n- `v$waitclassmetric`\n- `v$system_wait_class`\n- `dba_data_files`\n- `dba_free_space`\n- `dba_segments`\n- `dba_temp_files`\n- `dba_tablespaces`\n- `v$temp_space_header`\n\nIt also provides `top-queries` and `running-queries` functions using `V$SQLSTATS` and `V$SESSION`.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector can automatically detect Oracle DB instances running on:\n\n- Localhost, listening on port 1521\n- Within Docker containers\n\n> **Note**: Oracle DB requires a username and password. While Netdata can automatically discover Oracle DB instances and create data collection jobs, these jobs will fail unless you provide the correct credentials.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **oracledb** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **oracledb**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/oracledb.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create a read only user for netdata\n\nFollow the official instructions for your oracle RDBMS to create a read-only user for netdata. The operation may follow this approach\n\nConnect to your Oracle database with an administrative user and execute:\n\n```bash\nCREATE USER netdata IDENTIFIED BY <PASSWORD>;\n\nGRANT CONNECT TO netdata;\nGRANT SELECT_CATALOG_ROLE TO netdata;\n```\n\nThe `top-queries` and `running-queries` functions require access to `V$SQLSTATS` and `V$SESSION`.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | dsn | Oracle server DSN (Data Source Name). Format: `oracle://username:password@host:port/service?param1=value1&...¶mN=valueN`. | | yes |\n| | timeout | Query timeout (seconds). | 1 | no |\n| **Functions** | functions.top_queries.disabled | Disable the [top-queries](#top-queries) function. | no | no |\n| | functions.top_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.top_queries.limit | Maximum number of queries to return. | 500 | no |\n| | functions.running_queries.disabled | Disable the [running-queries](#running-queries) function. | no | no |\n| | functions.running_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.running_queries.limit | Maximum number of queries to return. | 500 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **oracledb** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the oracledb data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _oracledb_ (or scroll the list) to locate the **oracledb** collector.\n5. Click the **+** next to the **oracledb** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/oracledb.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/oracledb.conf\n```\n\n##### Examples\n\n###### TCP socket\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n dsn: oracle://netdata:secret@127.0.0.1:1521/XE\n\n```\n{% /details %}\n###### TLS connection (TCPS)\n\nAn example configuration for TLS connection.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n dsn: \'oracle://netdata:secret@127.0.0.1:1521/XE?ssl=true&ssl verify=true\'\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n dsn: oracle://netdata:secret@127.0.0.1:1521/XE\n\n - name: remote\n dsn: oracle://netdata:secret@203.0.113.0:1521/XE\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `oracledb` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m oracledb\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m oracledb -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `oracledb` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep oracledb\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep oracledb /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep oracledb\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",functions:"## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Top Queries\n\nRetrieves aggregated SQL statement performance metrics from Oracle [V$SQLSTATS](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/V-SQLSTATS.html) view.\n\nThis function queries `V$SQLSTATS` which provides SQL execution statistics aggregated across all cursors for each SQL statement. Statistics include execution counts, timing metrics, I/O operations, and resource consumption.\n\nUse cases:\n- Identify slow queries consuming the most total execution time\n- Find queries with high buffer gets or disk reads for I/O optimization\n- Analyze CPU-intensive queries for resource tuning\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Oracledb:top-queries` |\n| Require Cloud | yes |\n| Performance | Queries `V$SQLSTATS` which is a lightweight view optimized for statistics retrieval:<br/>\u2022 On busy databases with many SQL statements, the query may take longer<br/>\u2022 Default limit of 500 rows balances usefulness with performance |\n| Security | Query text may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Personal information in WHERE clauses or INSERT values<br/>\u2022 Business data and internal identifiers<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to Oracle DB<br/>\u2022 The user has SELECT privilege on `V$SQLSTATS`<br/>\u2022 Returns HTTP 503 if the connection cannot be established<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Grant access to V$SQLSTATS\n\nThe monitoring user must have SELECT privilege on `V$SQLSTATS` and related views.\n\n1. Grant the required privileges:\n\n ```sql\n -- Note: Use V_$ (with underscore) for GRANT - this is the base fixed view\n -- Queries use the V$ public synonym\n GRANT SELECT ON V_$SQLSTATS TO netdata;\n -- Or grant the broader role:\n GRANT SELECT_CATALOG_ROLE TO netdata;\n ```\n\n2. Verify access:\n\n ```sql\n SELECT COUNT(*) FROM V$SQLSTATS WHERE ROWNUM <= 1;\n ```\n\n:::info\n\n- `V$SQLSTATS` is available in Oracle 10g and later\n- The view aggregates statistics across all child cursors for each SQL statement\n- Some columns like `MODULE` and `ACTION` require applications to set them via `DBMS_APPLICATION_INFO`\n\n:::\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. Options include total time, CPU time, executions, buffer gets, disk reads, and more. Defaults to total time to focus on most resource-intensive queries. | yes | totalTime | |\n\n#### Returns\n\nAggregated SQL statistics from `V$SQLSTATS`. Each row represents a unique SQL statement with cumulative metrics across all executions.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| SQL ID | string | | hidden | Unique identifier for the SQL statement in the shared pool. Can be used to find execution plans in `V$SQL_PLAN`. |\n| Query | string | | | SQL statement text. Truncated to 4096 characters for display purposes. |\n| Schema | string | | | Schema under which the SQL was parsed. Useful for identifying which application or user generated the query. |\n| Executions | integer | | | Total number of times this SQL statement has been executed. High values indicate frequently run queries. |\n| Total Time | duration | milliseconds | | Cumulative elapsed time across all executions. High values indicate queries consuming significant database resources. |\n| Avg Time | duration | milliseconds | | Average elapsed time per execution. Use this to compare typical performance across different SQL statements. |\n| CPU Time | duration | milliseconds | | Cumulative CPU time consumed across all executions. Compare with total time to identify I/O-bound vs CPU-bound queries. |\n| Buffer Gets | integer | | | Total number of logical reads from the buffer cache. High values relative to rows processed may indicate inefficient queries. |\n| Disk Reads | integer | | | Total number of physical reads from disk. High values indicate queries that cannot be satisfied from the buffer cache. |\n| Rows Processed | integer | | | Total number of rows processed across all executions. Compare with buffer gets to assess query efficiency. |\n| Parse Calls | integer | | hidden | Number of times the SQL was parsed (hard + soft parses). High values may indicate lack of bind variables. |\n| Module | string | | hidden | Application module name set via `DBMS_APPLICATION_INFO`. Useful for identifying which application component generated the query. |\n| Action | string | | hidden | Application action name set via `DBMS_APPLICATION_INFO`. Provides finer-grained identification within a module. |\n| Last Active | string | | hidden | Timestamp when this SQL statement was last executed. Helps identify recently active vs historical queries. |\n\n### Running Queries\n\nRetrieves currently executing SQL statements from Oracle [V$SESSION](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/V-SESSION.html) view.\n\nThis function queries `V$SESSION` joined with `V$SQL` to provide a real-time snapshot of all active user sessions currently executing SQL statements. It shows session details, elapsed time, and the SQL being executed.\n\nUse cases:\n- Identify long-running queries that may be blocking other sessions\n- Monitor active workload and session distribution\n- Debug stuck or slow queries in real-time\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Oracledb:running-queries` |\n| Require Cloud | yes |\n| Performance | Queries `V$SESSION` joined with `V$SQL` for currently active sessions:<br/>\u2022 Lightweight operation as it only returns currently active user sessions<br/>\u2022 Default limit of 500 rows (rarely reached for running queries) |\n| Security | Query text may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Personal information in WHERE clauses or INSERT values<br/>\u2022 Business data and credentials in query parameters<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to Oracle DB<br/>\u2022 The user has SELECT privilege on `V$SESSION` and `V$SQL`<br/>\u2022 Returns HTTP 503 if the connection cannot be established<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Grant access to V$SESSION\n\nThe monitoring user must have SELECT privilege on `V$SESSION` and `V$SQL`.\n\n1. Grant the required privileges:\n\n ```sql\n -- Note: Use V_$ (with underscore) for GRANT - this is the base fixed view\n -- Queries use the V$ public synonym\n GRANT SELECT ON V_$SESSION TO netdata;\n GRANT SELECT ON V_$SQL TO netdata;\n -- Or grant the broader role:\n GRANT SELECT_CATALOG_ROLE TO netdata;\n ```\n\n2. Verify access:\n\n ```sql\n SELECT COUNT(*) FROM V$SESSION WHERE ROWNUM <= 1;\n ```\n\n:::info\n\n- Only USER sessions with ACTIVE status and a current SQL ID are returned\n- The elapsed time is based on `LAST_CALL_ET` which resets when a new SQL starts\n- BACKGROUND sessions (Oracle internal processes) are filtered out\n\n:::\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. Defaults to elapsed time to show longest-running queries first. | yes | lastCallMs | |\n\n#### Returns\n\nReal-time snapshot of currently executing SQL statements. Each row represents an active user session with its current SQL.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Session | string | | | Session identifier in format `SID,SERIAL#`. Can be used with `ALTER SYSTEM KILL SESSION` if needed. |\n| User | string | | | Oracle username of the session. Useful for identifying workload by user. |\n| Status | string | | | Session status (ACTIVE for currently executing). Only active sessions with SQL are shown. |\n| Type | string | | hidden | Session type (USER or BACKGROUND). This function filters to USER sessions only. |\n| SQL ID | string | | hidden | Identifier of the currently executing SQL. Can be used to find the statement in `V$SQL`. |\n| Query | string | | | SQL statement text currently being executed. Truncated to 4096 characters. |\n| Elapsed | duration | milliseconds | | Time elapsed since the session's last call started. High values indicate long-running operations that may need investigation. |\n| SQL Exec Start | string | | hidden | Timestamp when the current SQL execution started. |\n| Module | string | | hidden | Application module name set via `DBMS_APPLICATION_INFO`. Identifies which application is running the query. |\n| Action | string | | hidden | Application action name set via `DBMS_APPLICATION_INFO`. |\n| Program | string | | hidden | Client program name that established the session (e.g., sqlplus, JDBC Thin Client). |\n| Machine | string | | hidden | Client machine name or IP address. Useful for identifying query sources. |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Oracle DB instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| oracledb.sessions | session | sessions |\n| oracledb.average_active_sessions | active | sessions |\n| oracledb.sessions_utilization | session_limit | percent |\n| oracledb.current_logons | logons | logons |\n| oracledb.logons | logons | logons/s |\n| oracledb.database_wait_time_ratio | db_wait_time | percent |\n| oracledb.sql_service_response_time | sql_resp_time | seconds |\n| oracledb.enqueue_timeouts | enqueue | timeouts/s |\n| oracledb.disk_io | read, written | bytes/s |\n| oracledb.disk_iops | read, write | operations/s |\n| oracledb.sorts | memory, disk | sorts/s |\n| oracledb.table_scans | short_table, long_table | scans/s |\n| oracledb.cache_hit_ratio | buffer, cursor, library, row | percent |\n| oracledb.global_cache_blocks | corrupted, lost | blocks/s |\n| oracledb.activity | parse, execute, user_commits, user_rollbacks | events/s |\n\n### Per tablespace\n\nThese metrics refer to the Tablespace.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| tablespace | Tablespace name. |\n| autoextend_status | Autoextend status (enabled, disabled, mixed). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| oracledb.tablespace_utilization | utilization | percent |\n| oracledb.tablespace_usage | avail, used | bytes |\n\n### Per wait class\n\nThese metrics refer to the [Wait Class](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/classes-of-wait-events.html).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| wait_class | [Wait Class name](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/classes-of-wait-events.html). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| oracledb.wait_class_wait_time | wait_time | milliseconds |\n\n",integration_type:"collector",id:"go.d.plugin-oracledb-Oracle_DB",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/oracledb/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-panos",plugin_name:"go.d.plugin",module_name:"panos",monitored_instance:{name:"Palo Alto Networks PAN-OS",link:"https://www.paloaltonetworks.com/network-security",categories:["network-performance-monitoring.device-metrics"],icon_filename:"paloalto.svg"},related_resources:{integrations:{list:[]}},alternative_monitored_instances:[],info_provided_to_referring_integrations:{description:""},keywords:["palo alto","pan-os","panos","firewall","bgp","ha","ipsec","licenses"]},overview:"# Palo Alto Networks PAN-OS\n\nPlugin: go.d.plugin\nModule: panos\n\n## Overview\n\nThis collector monitors Palo Alto Networks PAN-OS firewalls.\nIt collects read-only XML API telemetry for BGP, system status, HA, environment sensors, licenses, and IPsec SAs.\n\n\nIt gathers metrics by periodically running PAN-OS XML API operational commands through the pango SDK.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe configured PAN-OS account must be allowed to use the XML API and run read-only operational requests for the collected telemetry.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis collector does not auto-detect PAN-OS firewalls. A job must be configured with the firewall management URL and credentials.\n\n\n#### Limits\n\nThe default collection interval is 60 seconds to keep polling load conservative on the PAN-OS management plane.\n\n\n#### Performance Impact\n\nEach collection runs PAN-OS XML API operational requests. The collector uses serial requests and caps the SDK transport to 2 connections per firewall job. Multiple jobs targeting the same firewall multiply that per-job connection budget, so configure one job per firewall management interface unless you intentionally need separate scopes.\n\n",setup:'## Setup\n\n\nYou can configure the **panos** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **panos**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/panos.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### PAN-OS XML API access\n\nEnable XML API access and provide either an API key or username/password credentials that can generate one.\nThe account needs permission to run operational commands.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | PAN-OS management interface URL. The path must be empty, `/`, or `/api`. | https://127.0.0.1 | yes |\n| | timeout | PAN-OS XML API request timeout (seconds). | 3 | no |\n| | vsys | Optional PAN-OS virtual system scope for operational commands. | | no |\n| **Auth** | api_key | PAN-OS XML API key. Takes priority over username/password key generation. | | no |\n| | username | PAN-OS username used for API key generation. | | no |\n| | password | PAN-OS password used for API key generation. | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification. | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate. | | no |\n| | tls_key | Path to client TLS private key. | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. Include proxy credentials in the URL if needed. | | no |\n| **Headers** | headers | Additional HTTP headers. | | no |\n| **Virtual Node** | vnode | Associates this data collection job with a Virtual Node. | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **panos** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the panos data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _panos_ (or scroll the list) to locate the **panos** collector.\n5. Click the **+** next to the **panos** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/panos.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/panos.conf\n```\n\n##### Examples\n\n###### API key\n\nCollecting PAN-OS metrics with an existing XML API key.\n\n```yaml\njobs:\n - name: firewall\n url: https://192.0.2.1\n api_key: YOUR_PANOS_XML_API_KEY\n update_every: 60\n timeout: 3\n\n```\n###### Username/password key generation\n\nLetting the collector generate and reuse an API key through PAN-OS.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: firewall\n url: https://192.0.2.1\n username: netdata\n password: YOUR_PASSWORD\n update_every: 60\n timeout: 3\n\n```\n{% /details %}\n',troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `panos` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m panos\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m panos -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `panos` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep panos\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep panos /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep panos\n```\n\n### No BGP charts are created\n\nVerify that BGP is configured and that the account can run PAN-OS XML API operational requests.\nThe collector logs when no legacy or Advanced Routing Engine BGP peer command returns peers.\nAdvanced Routing Engine parsing is best-effort until validated with sanitized real PAN-OS ARE XML output.\n\n\n### Panorama proxy collection is unsupported\n\nConfigure one job per firewall management interface. This collector does not support using Panorama as a target proxy for managed firewalls in v1.\n\n\n### A metricset fails but other charts work\n\nThe collector keeps successful metricsets running and logs the failing metricset name and XML command context.\n\n\n### PAN-OS accepted a command but no telemetry appears\n\nA "success response has no recognized telemetry payload" error means PAN-OS accepted the operational command, but the XML result did not contain the expected section for that metricset.\nVerify the account permissions and platform support for the metricset, or provide a sanitized XML sample so the parser can be updated.\n\n\n### A PAN-OS value cannot be parsed\n\nThe collector reports missing or invalid integer, decimal, duration, status, license expiration, and IPsec tunnel-count values with the metricset, field, entity name, and raw value when present.\nIt does not silently convert missing or malformed values to zero, report fake valid status, or treat unrecognized license dates as never-expiring licenses.\n\n\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ panos_bgp_peer_not_established ](https://github.com/netdata/netdata/blob/master/src/health/health.d/panos.conf) | panos.bgp.peer.state | Critical when a BGP peer has not been established for 5 minutes. |\n| [ panos_device_certificate_invalid ](https://github.com/netdata/netdata/blob/master/src/health/health.d/panos.conf) | panos.system.device_certificate_status | Critical when PAN-OS reports the device certificate as invalid. |\n| [ panos_ha_peer_connection_down ](https://github.com/netdata/netdata/blob/master/src/health/health.d/panos.conf) | panos.ha.peer.connection_status | Critical when the HA peer connection has not been up for 5 minutes. |\n| [ panos_environment_sensor_alarm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/panos.conf) | panos.environment.sensor_alarm_status | Critical when PAN-OS reports an environment sensor alarm. |\n| [ panos_license_expired ](https://github.com/netdata/netdata/blob/master/src/health/health.d/panos.conf) | panos.license.status | Critical when PAN-OS reports a license as expired. |\n| [ panos_license_expires_soon ](https://github.com/netdata/netdata/blob/master/src/health/health.d/panos.conf) | panos.license.time_until_expiration | Warning under 30 days before expiration, critical under 7 days. Expired licenses trigger panos_license_expired instead. |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per System\n\nThese metrics refer to the PAN-OS device.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| hostname | PAN-OS hostname. |\n| model | PAN-OS model. |\n| serial | Device serial number. |\n| sw_version | PAN-OS software version. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| panos.system.uptime | uptime | seconds |\n| panos.system.device_certificate_status | valid, invalid | status |\n| panos.system.operational_mode | normal, other | mode |\n\n### Per High availability\n\nThese metrics refer to the PAN-OS HA pair state reported by the local firewall.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| panos.ha.status | enabled, disabled | status |\n| panos.ha.local.state | active, passive, non_functional, suspended, unknown | state |\n| panos.ha.peer.state | active, passive, non_functional, suspended, unknown | state |\n| panos.ha.peer.connection_status | up, down, unknown | status |\n| panos.ha.state_sync_status | synchronized, not_synchronized, unknown | status |\n\n### Per High availability link\n\nThese metrics refer to a single PAN-OS HA link.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| link | HA link name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| panos.ha.link_status | up, down, unknown | status |\n\n### Per Environment sensor\n\nThese metrics refer to a single PAN-OS environment sensor.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| slot | Hardware slot. |\n| sensor | Sensor description. |\n| sensor_type | Sensor type. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| panos.environment.temperature | temperature | Celsius |\n| panos.environment.fan_speed | speed | RPM |\n| panos.environment.voltage | voltage | Volts |\n| panos.environment.sensor_alarm_status | clear, alarm | status |\n| panos.environment.power_supply_presence_status | present, absent | status |\n| panos.environment.power_supply_alarm_status | clear, alarm | status |\n\n### Per License summary\n\nThese metrics summarize PAN-OS licenses.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| panos.license.count | total, expired | licenses |\n\n### Per License\n\nThese metrics refer to one PAN-OS license.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| feature | License feature name. |\n| description | License description. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| panos.license.status | valid, expired | status |\n| panos.license.time_until_expiration | time_until_expiration | days |\n\n### Per IPsec summary\n\nThese metrics summarize active PAN-OS IPsec security associations.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| panos.ipsec.tunnels | active | tunnels |\n\n### Per IPsec tunnel\n\nThese metrics refer to one active PAN-OS IPsec security association.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| tunnel | Tunnel name. |\n| gateway | Gateway name. |\n| remote | Remote peer. |\n| tunnel_id | PAN-OS tunnel identifier. |\n| protocol | Tunnel protocol. |\n| encryption | Encryption algorithm. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| panos.ipsec.tunnel.sa_lifetime | remaining_lifetime | seconds |\n\n### Per BGP peer\n\nThese metrics refer to a single BGP peer on a PAN-OS virtual router or logical router.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| vr | PAN-OS virtual router or logical router. |\n| peer_address | BGP peer address. |\n| local_address | Local BGP address. |\n| remote_as | Remote autonomous system. |\n| peer_group | PAN-OS peer group. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| panos.bgp.peer.state | idle, connect, active, opensent, openconfirm, established, unknown | state |\n| panos.bgp.peer.uptime | uptime | seconds |\n| panos.bgp.peer.messages | in, out | messages/s |\n| panos.bgp.peer.updates | in, out | messages/s |\n| panos.bgp.peer.flaps | flaps | flaps/s |\n| panos.bgp.peer.established_transitions | established | transitions/s |\n\n### Per BGP peer address family\n\nThese metrics refer to one AFI/SAFI family for a BGP peer.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| vr | PAN-OS virtual router or logical router. |\n| peer_address | BGP peer address. |\n| local_address | Local BGP address. |\n| remote_as | Remote autonomous system. |\n| peer_group | PAN-OS peer group. |\n| afi | Address family. |\n| safi | Subsequent address family. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| panos.bgp.peer.prefixes_received | total, accepted, rejected | prefixes |\n| panos.bgp.peer.prefixes_advertised | advertised | prefixes |\n\n### Per BGP virtual router\n\nThese metrics refer to one PAN-OS virtual router or logical router.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| vr | PAN-OS virtual router or logical router. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| panos.bgp.vr.peers_by_state | idle, connect, active, opensent, openconfirm, established, unknown | peers |\n| panos.bgp.vr.peers_total | configured, established | peers |\n\n",integration_type:"collector",id:"go.d.plugin-panos-Palo_Alto_Networks_PAN-OS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/panos/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-pgbouncer",plugin_name:"go.d.plugin",module_name:"pgbouncer",monitored_instance:{name:"PgBouncer",link:"https://www.pgbouncer.org/",icon_filename:"postgres.svg",categories:["data-collection.databases"]},keywords:["pgbouncer"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# PgBouncer\n\nPlugin: go.d.plugin\nModule: pgbouncer\n\n## Overview\n\nThis collector monitors PgBouncer servers.\n\nExecuted queries:\n\n- `SHOW VERSION;`\n- `SHOW CONFIG;`\n- `SHOW DATABASES;`\n- `SHOW STATS;`\n- `SHOW POOLS;`\n\nInformation about the queries can be found in the [PgBouncer Documentation](https://www.pgbouncer.org/usage.html).\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **pgbouncer** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **pgbouncer**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/pgbouncer.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create netdata user\n\nCreate a user with `stats_users` permissions to query your PgBouncer instance.\n\nTo create the `netdata` user:\n\n- Add `netdata` user to the `pgbouncer.ini` file:\n\n ```text\n stats_users = netdata\n ```\n\n- Add a password for the `netdata` user to the `userlist.txt` file:\n\n ```text\n "netdata" "<PASSWORD>"\n ```\n\n- To verify the credentials, run the following command\n\n ```bash\n psql -h localhost -U netdata -p 6432 pgbouncer -c "SHOW VERSION;" >/dev/null 2>&1 && echo OK || echo FAIL\n ```\n\n When it prompts for a password, enter the password you added to `userlist.txt`.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | dsn | PgBouncer server DSN (Data Source Name). See [DSN syntax](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING). | postgres://postgres:postgres@127.0.0.1:6432/pgbouncer | yes |\n| | timeout | Query timeout (seconds). | 1 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **pgbouncer** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the pgbouncer data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _pgbouncer_ (or scroll the list) to locate the **pgbouncer** collector.\n5. Click the **+** next to the **pgbouncer** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/pgbouncer.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/pgbouncer.conf\n```\n\n##### Examples\n\n###### TCP socket\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n dsn: \'postgres://postgres:postgres@127.0.0.1:6432/pgbouncer\'\n\n```\n{% /details %}\n###### Unix socket\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n dsn: \'host=/tmp dbname=pgbouncer user=postgres port=6432\'\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n dsn: \'postgres://postgres:postgres@127.0.0.1:6432/pgbouncer\'\n\n - name: remote\n dsn: \'postgres://postgres:postgres@203.0.113.10:6432/pgbouncer\'\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `pgbouncer` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m pgbouncer\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m pgbouncer -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `pgbouncer` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep pgbouncer\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep pgbouncer /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep pgbouncer\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per PgBouncer instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| pgbouncer.client_connections_utilization | used | percentage |\n\n### Per database\n\nThese metrics refer to the database.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| database | database name |\n| postgres_database | Postgres database name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| pgbouncer.db_client_connections | active, waiting, cancel_req | connections |\n| pgbouncer.db_server_connections | active, idle, used, tested, login | connections |\n| pgbouncer.db_server_connections_utilization | used | percentage |\n| pgbouncer.db_clients_wait_time | time | seconds |\n| pgbouncer.db_client_max_wait_time | time | seconds |\n| pgbouncer.db_transactions | transactions | transactions/s |\n| pgbouncer.db_transactions_time | time | seconds |\n| pgbouncer.db_transaction_avg_time | time | seconds |\n| pgbouncer.db_queries | queries | queries/s |\n| pgbouncer.db_queries_time | time | seconds |\n| pgbouncer.db_query_avg_time | time | seconds |\n| pgbouncer.db_network_io | received, sent | B/s |\n\n",integration_type:"collector",id:"go.d.plugin-pgbouncer-PgBouncer",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/pgbouncer/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-phpdaemon",plugin_name:"go.d.plugin",module_name:"phpdaemon",monitored_instance:{name:"phpDaemon",link:"https://github.com/kakserpom/phpdaemon",icon_filename:"php.svg",categories:["data-collection.applications"]},keywords:["phpdaemon","php"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# phpDaemon\n\nPlugin: go.d.plugin\nModule: phpdaemon\n\n## Overview\n\nThis collector monitors phpDaemon instances.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **phpdaemon** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **phpdaemon**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/phpdaemon.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable phpDaemon's HTTP server\n\nStatistics expected to be in JSON format.\n\n<details>\n<summary>phpDaemon configuration</summary>\n\nInstruction from [@METAJIJI](https://github.com/METAJIJI).\n\nTo enable `phpd` statistics on http, you must enable the http server and write an application.\nApplication is important, because standalone application [ServerStatus.php](https://github.com/kakserpom/phpdaemon/blob/master/PHPDaemon/Applications/ServerStatus.php) provides statistics in html format and unusable for `netdata`.\n\n```php\n// /opt/phpdaemon/conf/phpd.conf\n\npath /opt/phpdaemon/conf/AppResolver.php;\nPool:HTTPServer {\n privileged;\n listen '127.0.0.1';\n port 8509;\n}\n```\n\n```php\n// /opt/phpdaemon/conf/AppResolver.php\n\n<?php\n\nclass MyAppResolver extends \\PHPDaemon\\Core\\AppResolver {\n public function getRequestRoute($req, $upstream) {\n if (preg_match('~^/(ServerStatus|FullStatus)/~', $req->attrs->server['DOCUMENT_URI'], $m)) {\n return $m[1];\n }\n }\n}\n\nreturn new MyAppResolver;\n```\n\n```php\n/opt/phpdaemon/conf/PHPDaemon/Applications/FullStatus.php\n\n<?php\nnamespace PHPDaemon\\Applications;\n\nclass FullStatus extends \\PHPDaemon\\Core\\AppInstance {\n public function beginRequest($req, $upstream) {\n return new FullStatusRequest($this, $upstream, $req);\n }\n}\n```\n\n```php\n// /opt/phpdaemon/conf/PHPDaemon/Applications/FullStatusRequest.php\n\n<?php\nnamespace PHPDaemon\\Applications;\n\nuse PHPDaemon\\Core\\Daemon;\nuse PHPDaemon\\HTTPRequest\\Generic;\n\nclass FullStatusRequest extends Generic {\n public function run() {\n $stime = microtime(true);\n $this->header('Content-Type: application/javascript; charset=utf-8');\n\n $stat = Daemon::getStateOfWorkers();\n $stat['uptime'] = time() - Daemon::$startTime;\n echo json_encode($stat);\n }\n}\n```\n\n</details>\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary=\"Config options\" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8509/FullStatus | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **phpdaemon** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the phpdaemon data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _phpdaemon_ (or scroll the list) to locate the **phpdaemon** collector.\n5. Click the **+** next to the **phpdaemon** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/phpdaemon.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/phpdaemon.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8509/FullStatus\n\n```\n{% /details %}\n###### HTTP authentication\n\nHTTP authentication.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8509/FullStatus\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nHTTPS with self-signed certificate.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8509/FullStatus\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8509/FullStatus\n\n - name: remote\n url: http://192.0.2.1:8509/FullStatus\n\n```\n{% /details %}\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `phpdaemon` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m phpdaemon\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m phpdaemon -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `phpdaemon` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep phpdaemon\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep phpdaemon /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep phpdaemon\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per phpDaemon instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| phpdaemon.workers | alive, shutdown | workers |\n| phpdaemon.alive_workers | idle, busy, reloading | workers |\n| phpdaemon.idle_workers | preinit, init, initialized | workers |\n| phpdaemon.uptime | time | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-phpdaemon-phpDaemon",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/phpdaemon/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-phpfpm",plugin_name:"go.d.plugin",module_name:"phpfpm",monitored_instance:{name:"PHP-FPM",link:"https://php-fpm.org/",icon_filename:"php.svg",categories:["data-collection.web-servers-and-proxies"]},keywords:["phpfpm","php"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# PHP-FPM\n\nPlugin: go.d.plugin\nModule: phpfpm\n\n## Overview\n\nThis collector monitors PHP-FPM instances.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **phpfpm** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **phpfpm**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/phpfpm.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable status page\n\nUncomment the `pm.status_path = /status` variable in the `php-fpm` config file.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | PHP-FPM URL. | http://127.0.0.1/server-status?auto | yes |\n| | address | PHP-FPM TCP listening address in IP:PORT format. Preferred over `url` if set. | | no |\n| | socket | PHP-FPM Unix socket. Preferred over both `url` and `address` if set. | | no |\n| | fcgi_path | URI path to the [FPM status page](https://www.php.net/manual/en/fpm.status.php). | /status | no |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **phpfpm** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the phpfpm data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _phpfpm_ (or scroll the list) to locate the **phpfpm** collector.\n5. Click the **+** next to the **phpfpm** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/phpfpm.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/phpfpm.conf\n```\n\n##### Examples\n\n###### HTTP\n\nCollecting data from a local instance over HTTP.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://localhost/status?full&json\n\n```\n{% /details %}\n###### Unix socket\n\nCollecting data from a local instance over Unix socket.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n socket: \'/tmp/php-fpm.sock\'\n\n```\n{% /details %}\n###### TCP socket\n\nCollecting data from a local instance over TCP socket.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:9000\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://localhost/status?full&json\n\n - name: remote\n url: http://203.0.113.10/status?full&json\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `phpfpm` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m phpfpm\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m phpfpm -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `phpfpm` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep phpfpm\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep phpfpm /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep phpfpm\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per PHP-FPM instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| phpfpm.connections | active, max_active, idle | connections |\n| phpfpm.requests | requests | requests/s |\n| phpfpm.performance | max_children_reached, slow_requests | status |\n| phpfpm.request_duration | min, max, avg | milliseconds |\n| phpfpm.request_cpu | min, max, avg | percentage |\n| phpfpm.request_mem | min, max, avg | KB |\n\n",integration_type:"collector",id:"go.d.plugin-phpfpm-PHP-FPM",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/phpfpm/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-pihole",plugin_name:"go.d.plugin",module_name:"pihole",monitored_instance:{name:"Pi-hole",link:"https://pi-hole.net",icon_filename:"pihole.png",categories:["data-collection.networking"]},keywords:["pihole"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Pi-hole\n\nPlugin: go.d.plugin\nModule: pihole\n\n## Overview\n\nThis collector monitors Pi-hole instances using [Pi-hole API 6.0](https://ftl.pi-hole.net/master/docs/).\n\nIt collects DNS query statistics including total queries, blocked domains, query types, resolution status, and client information.\n\n**Note**: This collector is not compatible with Pi-hole versions earlier than v6.0.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Pi-hole instances running on:\n\n- localhost that are listening on port 80\n- within Docker containers\n\n> **Note that the Pi-hole API 6.0 requires a password**. \n> While Netdata can automatically detect Pi-hole instances and create data collection jobs, these jobs will fail unless you provide the necessary credentials.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **pihole** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **pihole**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/pihole.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Pi-hole v6.0 or newer\n\nThis collector requires Pi-hole v6.0 or newer as it uses the [Pi-hole API 6.0](https://ftl.pi-hole.net/master/docs/).\n\n\n#### Authentication credentials\n\nPi-hole administrator password is required for API authentication. Make sure to configure this in the collector settings even when using auto-detection.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | yes |\n| | password | Password for Basic HTTP authentication. | | yes |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **pihole** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the pihole data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _pihole_ (or scroll the list) to locate the **pihole** collector.\n5. Click the **+** next to the **pihole** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/pihole.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/pihole.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1\n password: Gv7#pQm9Xy\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nRemote instance with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://203.0.113.11\n tls_skip_verify: yes\n password: bT4@zK1wVr\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1\n password: Gv7#pQm9Xy\n\n - name: remote\n url: http://203.0.113.10\n password: bT4@zK1wVr\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `pihole` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m pihole\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m pihole -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `pihole` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep pihole\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep pihole /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep pihole\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ pihole_gravity_list_last_update ](https://github.com/netdata/netdata/blob/master/src/health/health.d/pihole.conf) | pihole.gravity_list_last_update_time_ago | gravity.list (blocklist) file last update time |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Pi-hole instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| pihole.dns_queries_total | queries | queries/s |\n| pihole.dns_queries_blocked_percent | blocked | percent |\n| pihole.dns_queries_by_destination | cached, blocked, forwarded | queries/s |\n| pihole.dns_queries_by_type | A, AAA, ANY, SRV, SOA, PTR, TXT, NAPTR, MX, DS, RRSIG, DNSKEY, NS, SVCB, HTTPS, OTHER | queries/s |\n| pihole.dns_queries_by_status | UNKNOWN, GRAVITY, FORWARDED, CACHE, REGEX, DENYLIST, EXTERNAL_BLOCKED_IP, EXTERNAL_BLOCKED_NULL, EXTERNAL_BLOCKED_NXRA, GRAVITY_CNAME, REGEX_CNAME, DENYLIST_CNAME, RETRIED, RETRIED_DNSSEC, IN_PROGRESS, DBBUSY, SPECIAL_DOMAIN, CACHE_STALE, EXTERNAL_BLOCKED_EDE15 | queries/s |\n| pihole.dns_replies_by_status | UNKNOWN, NODATA, NXDOMAIN, CNAME, IP, DOMAIN, RRNAME, SERVFAIL, REFUSED, NOTIMP, DNSSEC, NONE, OTHER | replies/s |\n| pihole.active_clients | active | clients |\n| pihole.gravity_list_blocked_domains | blocked | domains |\n| pihole.gravity_list_last_update_time_ago | last_update_ago | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-pihole-Pi-hole",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/pihole/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-pika",plugin_name:"go.d.plugin",module_name:"pika",monitored_instance:{name:"Pika",link:"https://github.com/OpenAtomFoundation/pika",icon_filename:"pika.svg",categories:["data-collection.databases"]},keywords:["pika","databases"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Pika\n\nPlugin: go.d.plugin\nModule: pika\n\n## Overview\n\nThis collector monitors Pika servers.\n\nIt collects information and statistics about the server executing the following commands:\n\n- [`INFO ALL`](https://github.com/OpenAtomFoundation/pika/wiki/pika-info%E4%BF%A1%E6%81%AF%E8%AF%B4%E6%98%8E)\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **pika** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **pika**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/pika.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary=\"Config options\" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection frequency (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | Pika server address. | redis://@localhost:9221 | yes |\n| | timeout | Dial (establishing new connections), read (socket reads), and write (socket writes) timeout (seconds). | 1 | no |\n| **Auth** | username | Username for authentication. | | no |\n| | password | Password for authentication. | | no |\n| **TLS** | tls_skip_verify | Server certificate chain and hostname validation policy. Controls whether the client performs this check. | no | no |\n| | tls_ca | Certification authority that the client uses when verifying the server\u2019s certificates. | | no |\n| | tls_cert | Client TLS certificate. | | no |\n| | tls_key | Client TLS key. | | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **pika** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the pika data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _pika_ (or scroll the list) to locate the **pika** collector.\n5. Click the **+** next to the **pika** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/pika.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/pika.conf\n```\n\n##### Examples\n\n###### TCP socket\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n address: 'redis://@localhost:9221'\n\n```\n{% /details %}\n###### TCP socket with password\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n address: 'redis://:password@127.0.0.1:9221'\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n address: 'redis://:password@127.0.0.1:9221'\n\n - name: remote\n address: 'redis://user:password@203.0.113.0:9221'\n\n```\n{% /details %}\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `pika` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m pika\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m pika -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `pika` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep pika\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep pika /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep pika\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Pika instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| pika.connections | accepted | connections |\n| pika.clients | connected | clients |\n| pika.memory | used | bytes |\n| pika.connected_replicas | connected | replicas |\n| pika.commands | processed | commands/s |\n| pika.commands_calls | a dimension per command | calls/s |\n| pika.database_strings_keys | a dimension per database | keys |\n| pika.database_strings_expires_keys | a dimension per database | keys |\n| pika.database_strings_invalid_keys | a dimension per database | keys |\n| pika.database_hashes_keys | a dimension per database | keys |\n| pika.database_hashes_expires_keys | a dimension per database | keys |\n| pika.database_hashes_invalid_keys | a dimension per database | keys |\n| pika.database_lists_keys | a dimension per database | keys |\n| pika.database_lists_expires_keys | a dimension per database | keys |\n| pika.database_lists_invalid_keys | a dimension per database | keys |\n| pika.database_zsets_keys | a dimension per database | keys |\n| pika.database_zsets_expires_keys | a dimension per database | keys |\n| pika.database_zsets_invalid_keys | a dimension per database | keys |\n| pika.database_sets_keys | a dimension per database | keys |\n| pika.database_sets_expires_keys | a dimension per database | keys |\n| pika.database_sets_invalid_keys | a dimension per database | keys |\n| pika.uptime | uptime | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-pika-Pika",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/pika/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-ping",plugin_name:"go.d.plugin",module_name:"ping",monitored_instance:{name:"Ping",link:"",icon_filename:"globe.svg",categories:["data-collection.synthetic-testing"]},keywords:["ping"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:'# Ping\n\nPlugin: go.d.plugin\nModule: ping\n\n## Overview\n\nThis module measures round-trip time and packet loss by sending ping messages to network hosts.\n\nThere are two operational modes:\n\n- **Privileged** (send raw ICMP ping, default). Requires the necessary permissions ([CAP_NET_RAW](https://man7.org/linux/man-pages/man7/capabilities.7.html) on Linux, `setuid` bit on other systems).\n\n These permissions are **automatically** set during Netdata installation. However, if you need to set them manually:\n - set `CAP_NET_RAW` (Linux only).\n ```bash\n sudo setcap CAP_NET_RAW=eip <INSTALL_PREFIX>/usr/libexec/netdata/plugins.d/go.d.plugin\n ```\n - set `setuid` bit (Other OS).\n ```bash\n sudo chmod 4750 <INSTALL_PREFIX>/usr/libexec/netdata/plugins.d/go.d.plugin\n ```\n\n- **Unprivileged** (send UDP ping, Linux only). Requires configuring [ping_group_range](https://www.man7.org/linux/man-pages/man7/icmp.7.html):\n\n This configuration is **not set automatically** and requires manual configuration.\n\n ```bash\n sudo sysctl -w net.ipv4.ping_group_range="0 2147483647"\n ```\n\n To persist the change add `net.ipv4.ping_group_range=0 2147483647` to `/etc/sysctl.conf` and execute `sudo sysctl -p`.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn\'t support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **ping** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **ping**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/ping.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | hosts | List of hosts to ping. | [] | yes |\n| **Ping Settings** | network | DNS resolution mode. Options: `ip` (IPv4 or IPv6), `ip4` (IPv4 only), `ip6` (IPv6 only). | ip | no |\n| | interface | Network interface to use for ICMP echo requests (e.g., `eth0`, `wlan0`). | | no |\n| | privileged | Ping packet type. `yes` = raw ICMP ping, `no` = unprivileged UDP ping. | yes | yes |\n| | packets | Number of ping packets to send per iteration. | 5 | no |\n| | interval | Interval between sending ping packets. | 100ms | no |\n| **Jitter Settings** | jitter_ewma_samples | EWMA smoothing factor for jitter calculation. Higher values = smoother, slower response. | 16 | no |\n| | jitter_sma_window | Number of iterations for SMA jitter calculation. | 10 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **ping** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the ping data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _ping_ (or scroll the list) to locate the **ping** collector.\n5. Click the **+** next to the **ping** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/ping.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/ping.conf\n```\n\n##### Examples\n\n###### IPv4 hosts\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: example\n hosts:\n - 192.0.2.0\n - 192.0.2.1\n\n```\n{% /details %}\n###### Unprivileged mode\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: example\n privileged: no\n hosts:\n - 192.0.2.0\n - 192.0.2.1\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nMultiple instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: example1\n hosts:\n - 192.0.2.0\n - 192.0.2.1\n\n - name: example2\n packets: 10\n hosts:\n - 192.0.2.3\n - 192.0.2.4\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `ping` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m ping\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m ping -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `ping` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep ping\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep ping /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep ping\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ ping_host_reachable ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ping.conf) | ping.host_packet_loss | network host ${label:host} reachability status |\n| [ ping_packet_loss ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ping.conf) | ping.host_packet_loss | packet loss percentage to the network host ${label:host} over the last 10 minutes |\n| [ ping_host_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ping.conf) | ping.host_rtt | average latency to the network host ${label:host} over the last 10 seconds |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per host\n\nThese metrics refer to the remote host.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| host | remote host |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ping.host_rtt | min, max, avg | milliseconds |\n| ping.host_std_dev_rtt | std_dev | milliseconds |\n| ping.host_jitter | mean, ewma, sma | milliseconds |\n| ping.host_rtt_variance | variance | ms\xb2 |\n| ping.host_packet_loss | loss | percentage |\n| ping.host_packets | received, sent | packets |\n\n",integration_type:"collector",id:"go.d.plugin-ping-Ping",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/ping/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-portcheck",plugin_name:"go.d.plugin",module_name:"portcheck",monitored_instance:{name:"TCP/UDP Endpoints",link:"",icon_filename:"globe.svg",categories:["data-collection.synthetic-testing"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# TCP/UDP Endpoints\n\nPlugin: go.d.plugin\nModule: portcheck\n\n## Overview\n\nCollector for monitoring service availability and response time. It can be used to check if specific ports are open or reachable on a target system.\n\nIt supports both TCP and UDP protocols over IPv4 and IPv6 networks.\n\n| Protocol | Check Description |\n|----------|-----------------------------------------------------------------------------------------------------------------------------|\n| TCP | Attempts to establish a TCP connection to the specified ports on the target system. |\n| UDP | Sends a 0-byte UDP packet to the specified ports on the target system and analyzes ICMP responses to determine port status. |\n\nPossible TCP statuses:\n\n| TCP Status | Description |\n|------------|-------------------------------------------------------------|\n| success | Connection established successfully. |\n| timeout | Connection timed out after waiting for configured duration. |\n| failed | An error occurred during the connection attempt. |\n\nPossible UDP statuses:\n\n| UDP Status | Description |\n|---------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| open/filtered | No response received within the configured timeout. This status indicates the port is either open or filtered, but the exact state cannot be determined definitively. |\n| closed | Received an ICMP Destination Unreachable message, indicating the port is closed. |\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **portcheck** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **portcheck**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/portcheck.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection frequency (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | host | Remote host address (IPv4, IPv6, or DNS name). | | yes |\n| | ports | List of TCP ports to check (numeric format). | [] | no |\n| | udp_ports | List of UDP ports to check (numeric format). | [] | no |\n| | timeout | Port check timeout (seconds). | 2 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **portcheck** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the portcheck data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _portcheck_ (or scroll the list) to locate the **portcheck** collector.\n5. Click the **+** next to the **portcheck** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/portcheck.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/portcheck.conf\n```\n\n##### Examples\n\n###### Check TCP ports (IPv4)\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n host: 127.0.0.1\n ports:\n - 22\n - 23\n\n```\n{% /details %}\n###### Check TCP ports (IPv6)\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n host: "[2001:DB8::1]"\n ports:\n - 80\n - 8080\n\n```\n{% /details %}\n###### Check UDP ports (IPv4)\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n host: 127.0.0.1\n udp_ports:\n - 3120\n - 3121\n\n```\n{% /details %}\n###### Check UDP ports (IPv6)\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n host: [::1]\n udp_ports:\n - 3120\n - 3121\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nMultiple instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: server1\n host: 127.0.0.1\n ports:\n - 22\n - 23\n\n - name: server2\n host: 203.0.113.10\n ports:\n - 22\n - 23\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `portcheck` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m portcheck\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m portcheck -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `portcheck` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep portcheck\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep portcheck /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep portcheck\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ portcheck_service_reachable ](https://github.com/netdata/netdata/blob/master/src/health/health.d/portcheck.conf) | portcheck.status | TCP host ${label:host} port ${label:port} liveness status |\n| [ portcheck_connection_timeouts ](https://github.com/netdata/netdata/blob/master/src/health/health.d/portcheck.conf) | portcheck.status | percentage of timed-out TCP connections to host ${label:host} port ${label:port} in the last 5 minutes |\n| [ portcheck_connection_fails ](https://github.com/netdata/netdata/blob/master/src/health/health.d/portcheck.conf) | portcheck.status | percentage of failed TCP connections to host ${label:host} port ${label:port} in the last 5 minutes |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per TCP endpoint\n\nThese metrics refer to the TCP endpoint.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| host | The hostname or IP address of the target system, as specified in the configuration. |\n| port | The TCP port being monitored, as defined in the 'ports' configuration parameter. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| portcheck.status | success, failed, timeout | boolean |\n| portcheck.state_duration | time | seconds |\n| portcheck.latency | time | ms |\n\n### Per UDP endpoint\n\nThese metrics refer to the UDP endpoint.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| host | The hostname or IP address of the target system, as specified in the configuration. |\n| port | The UDP port being monitored, as defined in the 'udp_ports' configuration parameter. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| portcheck.udp_port_status | open/filtered, closed | status |\n| portcheck.udp_port_status_duration | time | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-portcheck-TCP/UDP_Endpoints",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/portcheck/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"postfix",monitored_instance:{name:"Postfix",link:"https://www.postfix.org/",categories:["data-collection.applications"],icon_filename:"postfix.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["postfix","mail","mail server"]},overview:"# Postfix\n\nPlugin: go.d.plugin\nModule: postfix\n\n## Overview\n\nThis collector retrieves statistics about the Postfix mail queue using the [postqueue](https://www.postfix.org/postqueue.1.html) command-line tool.\n\n\nIt periodically executes the `postqueue -p` command. The collection interval is set to 10 seconds by default, but this can be configurable.\n\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\nPostfix has internal access controls for the mail queue. By default, all users can view the queue. If your system has stricter controls, grant the `netdata` user access by adding it to `authorized_mailq_users` in the `/etc/postfix/main.cf `file. For more details, refer to the `authorized_mailq_users` setting in the [Postfix documentation](https://www.postfix.org/postconf.5.html).\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector executes `postqueue -p` to get Postfix queue statistics.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **postfix** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **postfix**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/postfix.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| binary_path | Path to the `postqueue` binary. If an absolute path is provided, the collector will use it directly; otherwise, it will search for the binary in directories specified in the PATH environment variable. | /usr/sbin/postqueue | yes |\n| timeout | Timeout for executing the binary, specified in seconds. | 2 | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **postfix** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the postfix data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _postfix_ (or scroll the list) to locate the **postfix** collector.\n5. Click the **+** next to the **postfix** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/postfix.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/postfix.conf\n```\n\n##### Examples\n\n###### Custom binary path\n\nThe executable is not in the directories specified in the PATH environment variable.\n\n{% details open=true summary="" %}\n```yaml\njobs:\n - name: custom_path\n binary_path: /usr/local/sbin/postqueue\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `postfix` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m postfix\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m postfix -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `postfix` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep postfix\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep postfix /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep postfix\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Postfix instance\n\nThese metrics refer to the entire monitored application.\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| postfix.qemails | emails | emails |\n| postfix.qsize | size | KiB |\n\n",integration_type:"collector",id:"go.d.plugin-postfix-Postfix",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/postfix/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-postgres",plugin_name:"go.d.plugin",module_name:"postgres",monitored_instance:{name:"PostgreSQL",link:"https://www.postgresql.org/",categories:["data-collection.databases"],icon_filename:"postgres.svg"},related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},alternative_monitored_instances:[],info_provided_to_referring_integrations:{description:""},keywords:["db","database","postgres","postgresql","sql"]},overview:'# PostgreSQL\n\nPlugin: go.d.plugin\nModule: postgres\n\n## Overview\n\nThis collector monitors the activity and performance of Postgres servers, collects replication statistics, metrics for each database, table and index, and more.\n\n\nIt establishes a connection to the Postgres instance via a TCP or UNIX socket.\nTo collect metrics for database tables and indexes, it establishes an additional connection for each discovered database.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nPostgreSQL can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on localhost by trying to connect as root and netdata using known PostgreSQL TCP and UNIX sockets:\n\n- 127.0.0.1:5432\n- /var/run/postgresql/\n\n\n#### Limits\n\nTable and index metrics are not collected for databases with more than 50 tables or 250 indexes.\nThese limits can be changed in the configuration file.\n\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **postgres** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **postgres**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/postgres.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create netdata user\n\nCreate a user with granted `pg_monitor`\nor `pg_read_all_stat` [built-in role](https://www.postgresql.org/docs/current/predefined-roles.html).\n\nTo create the `netdata` user with these permissions, execute the following in the psql session, as a user with CREATEROLE privileges:\n\n```postgresql\nCREATE USER netdata;\nGRANT pg_monitor TO netdata;\n```\n\nAfter creating the new user, restart the Netdata Agent with `sudo systemctl restart netdata`, or\nthe [appropriate method](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/start-stop-restart.md) for your\nsystem.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | dsn | Postgres connection string (DSN). See [DSN syntax](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING). | postgres://postgres:postgres@127.0.0.1:5432/postgres | yes |\n| **Cloud Auth** | cloud_auth.provider | Cloud auth provider (`none` or `azure_ad`). | none | no |\n| **Cloud Auth/Azure** | cloud_auth.azure_ad.mode | Azure AD credential mode (`service_principal`, `managed_identity`, or `default`). Required when `cloud_auth.provider` is `azure_ad`. | | yes |\n| | cloud_auth.azure_ad.mode_service_principal.tenant_id | Azure tenant ID. Required for `service_principal` mode. | | no |\n| | cloud_auth.azure_ad.mode_service_principal.client_id | Azure client ID. Required for `service_principal` mode. | | no |\n| | cloud_auth.azure_ad.mode_service_principal.client_secret | Azure client secret for `service_principal` mode. | | no |\n| | cloud_auth.azure_ad.mode_managed_identity.client_id | Optional client ID of a user-assigned managed identity (`managed_identity` mode). | | no |\n| **Target** | timeout | Query timeout (seconds). | 2 | no |\n| **Filters** | collect_databases_matching | Database selector. Controls which databases are included. Uses [simple patterns](https://github.com/netdata/netdata/tree/master/src/go/pkg/matcher#simple-patterns-matcher). | | no |\n| **Limits** | max_db_tables | Maximum number of tables per database to collect metrics for (0 = no limit). | 50 | no |\n| | max_db_indexes | Maximum number of indexes per database to collect metrics for (0 = no limit). | 250 | no |\n| **Functions** | functions.top_queries.disabled | Disable the [top-queries](#top-queries) function. | no | no |\n| | functions.top_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.top_queries.limit | Maximum number of queries to return. | 500 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **postgres** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the postgres data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _postgres_ (or scroll the list) to locate the **postgres** collector.\n5. Click the **+** next to the **postgres** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/postgres.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/postgres.conf\n```\n\n##### Examples\n\n###### TCP socket\n\nAn example configuration.\n\n```yaml\njobs:\n - name: local\n dsn: \'postgresql://netdata@127.0.0.1:5432/postgres\'\n\n```\n###### Unix socket\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n dsn: \'host=/var/run/postgresql dbname=postgres user=netdata\'\n\n```\n{% /details %}\n###### Unix socket (custom port)\n\nConnect to PostgreSQL using a Unix socket with a non-default port (5433).\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n dsn: \'host=/var/run/postgresql port=5433 dbname=postgres user=netdata\'\n\n```\n{% /details %}\n###### Azure Database for PostgreSQL with service principal\n\nUse Microsoft Entra service principal authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: azure_postgres_sp\n dsn: \'postgresql://netdata@myserver.postgres.database.azure.com:5432/postgres?sslmode=require\'\n cloud_auth:\n provider: azure_ad\n azure_ad:\n mode: service_principal\n mode_service_principal:\n tenant_id: "00000000-0000-0000-0000-000000000000"\n client_id: "11111111-1111-1111-1111-111111111111"\n client_secret: "super-secret-value"\n\n```\n{% /details %}\n###### Azure Database for PostgreSQL with managed identity\n\nUse managed identity authentication (system-assigned by default).\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: azure_postgres_mi\n dsn: \'postgresql://netdata@myserver.postgres.database.azure.com:5432/postgres?sslmode=require\'\n cloud_auth:\n provider: azure_ad\n azure_ad:\n mode: managed_identity\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n dsn: \'postgresql://netdata@127.0.0.1:5432/postgres\'\n\n - name: remote\n dsn: \'postgresql://netdata@203.0.113.0:5432/postgres\'\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `postgres` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m postgres\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m postgres -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `postgres` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep postgres\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep postgres /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep postgres\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ postgres_total_connection_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/postgres.conf) | postgres.connections_utilization | average total connection utilization over the last minute |\n| [ postgres_acquired_locks_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/postgres.conf) | postgres.locks_utilization | average acquired locks utilization over the last minute |\n| [ postgres_txid_exhaustion_perc ](https://github.com/netdata/netdata/blob/master/src/health/health.d/postgres.conf) | postgres.txid_exhaustion_perc | percent towards TXID wraparound |\n| [ postgres_db_cache_io_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/postgres.conf) | postgres.db_cache_io_ratio | average cache hit ratio in db ${label:database} over the last minute |\n| [ postgres_db_transactions_rollback_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/postgres.conf) | postgres.db_cache_io_ratio | average aborted transactions percentage in db ${label:database} over the last five minutes |\n| [ postgres_db_deadlocks_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/postgres.conf) | postgres.db_deadlocks_rate | number of deadlocks detected in db ${label:database} in the last minute |\n| [ postgres_table_cache_io_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/postgres.conf) | postgres.table_cache_io_ratio | average cache hit ratio in db ${label:database} table ${label:table} over the last minute |\n| [ postgres_table_index_cache_io_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/postgres.conf) | postgres.table_index_cache_io_ratio | average index cache hit ratio in db ${label:database} table ${label:table} over the last minute |\n| [ postgres_table_toast_cache_io_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/postgres.conf) | postgres.table_toast_cache_io_ratio | average TOAST hit ratio in db ${label:database} table ${label:table} over the last minute |\n| [ postgres_table_toast_index_cache_io_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/postgres.conf) | postgres.table_toast_index_cache_io_ratio | average index TOAST hit ratio in db ${label:database} table ${label:table} over the last minute |\n| [ postgres_table_bloat_size_perc ](https://github.com/netdata/netdata/blob/master/src/health/health.d/postgres.conf) | postgres.table_bloat_size_perc | bloat size percentage in db ${label:database} table ${label:table} |\n| [ postgres_table_last_autovacuum_time ](https://github.com/netdata/netdata/blob/master/src/health/health.d/postgres.conf) | postgres.table_autovacuum_since_time | time elapsed since db ${label:database} table ${label:table} was vacuumed by the autovacuum daemon |\n| [ postgres_table_last_autoanalyze_time ](https://github.com/netdata/netdata/blob/master/src/health/health.d/postgres.conf) | postgres.table_autoanalyze_since_time | time elapsed since db ${label:database} table ${label:table} was analyzed by the autovacuum daemon |\n| [ postgres_index_bloat_size_perc ](https://github.com/netdata/netdata/blob/master/src/health/health.d/postgres.conf) | postgres.index_bloat_size_perc | bloat size percentage in db ${label:database} table ${label:table} index ${label:index} |\n",functions:"## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Top Queries\n\nRetrieves aggregated SQL query performance metrics from PostgreSQL using either [pg_stat_monitor](https://docs.percona.com/pg-stat-monitor/) (preferred) or [pg_stat_statements](https://www.postgresql.org/docs/current/pgstatstatements.html).\n\nThe collector automatically detects which extension is available:\n- **pg_stat_monitor** (Percona): Enhanced statistics with additional columns like application name, client IP, CPU time, error info, and query classification\n- **pg_stat_statements** (standard): Core execution statistics available in all PostgreSQL installations\n\nStatistics include execution counts, timing metrics, I/O operations, and resource consumption. Columns are dynamically detected based on your PostgreSQL version and available extension.\n\nUse cases:\n- Identify slow queries consuming the most total execution time\n- Find queries with high shared block reads for I/O optimization\n- Analyze temp block usage to detect queries needing memory tuning\n- With pg_stat_monitor: Track queries by application, identify error patterns\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Postgres:top-queries` |\n| Require Cloud | yes |\n| Performance | Queries `pg_stat_statements` or `pg_stat_monitor` which maintain statistics in shared memory:<br/>\u2022 On busy servers with many unique queries, the extension may consume significant memory<br/>\u2022 Default limit of 500 rows balances usefulness with performance<br/>\u2022 pg_stat_monitor uses time-based buckets which may have different memory characteristics |\n| Security | Query text may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Personal information in WHERE clauses or INSERT values<br/>\u2022 Business data and internal identifiers<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 Either `pg_stat_statements` or `pg_stat_monitor` extension is installed<br/>\u2022 The collector has successfully connected to PostgreSQL<br/>\u2022 Returns HTTP 503 if no query statistics extension is installed<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Enable pg_stat_statements or pg_stat_monitor\n\nEither `pg_stat_statements` (standard) or `pg_stat_monitor` (Percona) must be installed. The collector auto-detects which is available, preferring pg_stat_monitor when both are present.\n\n**Option 1: pg_stat_statements (standard PostgreSQL)**\n\n1. Add to `postgresql.conf`:\n\n ```ini\n shared_preload_libraries = 'pg_stat_statements'\n ```\n\n2. Restart PostgreSQL, then create the extension:\n\n ```sql\n CREATE EXTENSION pg_stat_statements;\n ```\n\n**Option 2: pg_stat_monitor (Percona - recommended)**\n\nProvides additional columns: application name, client IP, CPU time, error tracking, and query classification.\n\n1. Install pg_stat_monitor (available in Percona distribution or as separate package)\n\n2. Add to `postgresql.conf`:\n\n ```ini\n shared_preload_libraries = 'pg_stat_monitor'\n ```\n\n3. Restart PostgreSQL, then create the extension:\n\n ```sql\n CREATE EXTENSION pg_stat_monitor;\n ```\n\n:::info\n\n- Both extensions require a server restart to load the shared library\n- Statistics can be reset with `SELECT pg_stat_statements_reset()` or `SELECT pg_stat_monitor_reset()`\n- Enable `track_io_timing` for block read/write timing metrics\n\n:::\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. Options include total time, mean time, calls, rows, shared blocks hit/read, and temp blocks written. Defaults to total time to focus on most resource-intensive queries. | yes | totalTime | |\n\n#### Returns\n\nAggregated query statistics from `pg_stat_statements` or `pg_stat_monitor`. Each row represents a unique query pattern with cumulative metrics across all executions.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Query ID | string | | hidden | Internal hash identifier for the normalized query. Can be used to track queries across statistics resets. |\n| Query | string | | | Normalized SQL query text with literals replaced by parameter placeholders. Truncated to 4096 characters. |\n| Database | string | | | Database name where the query was executed. |\n| User | string | | | PostgreSQL user who executed the query. |\n| Calls | integer | | | Total number of times this query pattern has been executed. High values indicate frequently run queries. |\n| Total Time | duration | milliseconds | | Cumulative execution time across all executions. High values indicate queries consuming significant database resources. |\n| Mean Time | duration | milliseconds | | Average execution time per call. Use this to compare typical performance across different query patterns. |\n| Min Time | duration | milliseconds | hidden | Minimum execution time observed for a single execution. |\n| Max Time | duration | milliseconds | hidden | Maximum execution time observed for a single execution. Large gaps between min and max may indicate performance variability. |\n| Stddev Time | duration | milliseconds | hidden | Standard deviation of execution time. High values indicate inconsistent query performance. |\n| Plans | integer | | hidden | Number of times the query was planned. Available in PostgreSQL 13+. |\n| Total Plan Time | duration | milliseconds | hidden | Cumulative time spent planning the query. Available in PostgreSQL 13+. |\n| Mean Plan Time | duration | milliseconds | hidden | Average time spent planning per execution. Available in PostgreSQL 13+. |\n| Min Plan Time | duration | milliseconds | hidden | Minimum planning time observed. Available in PostgreSQL 13+. |\n| Max Plan Time | duration | milliseconds | hidden | Maximum planning time observed. Available in PostgreSQL 13+. |\n| Stddev Plan Time | duration | milliseconds | hidden | Standard deviation of planning time. Available in PostgreSQL 13+. |\n| Rows | integer | | | Total number of rows retrieved or affected across all executions. |\n| Shared Blocks Hit | integer | | | Total shared buffer cache hits. High values indicate good cache utilization. |\n| Shared Blocks Read | integer | | | Total shared blocks read from disk. High values indicate queries that bypass the cache and may benefit from more `shared_buffers`. |\n| Shared Blocks Dirtied | integer | | hidden | Total shared blocks dirtied by the query. |\n| Shared Blocks Written | integer | | hidden | Total shared blocks written by the query. |\n| Local Blocks Hit | integer | | hidden | Total local buffer cache hits (temporary tables). |\n| Local Blocks Read | integer | | hidden | Total local blocks read from disk. |\n| Local Blocks Dirtied | integer | | hidden | Total local blocks dirtied. |\n| Local Blocks Written | integer | | hidden | Total local blocks written. |\n| Temp Blocks Read | integer | | | Total temp blocks read. Non-zero values indicate queries spilling to disk due to insufficient `work_mem`. |\n| Temp Blocks Written | integer | | | Total temp blocks written. High values suggest increasing `work_mem` may improve performance. |\n| Block Read Time | duration | milliseconds | | Time spent reading blocks from disk. Requires `track_io_timing` to be enabled. |\n| Block Write Time | duration | milliseconds | | Time spent writing blocks to disk. Requires `track_io_timing` to be enabled. |\n| WAL Records | integer | | hidden | Total number of WAL records generated. Available in PostgreSQL 13+. |\n| WAL Full Page Images | integer | | hidden | Total number of WAL full page images generated. Available in PostgreSQL 13+. |\n| WAL Bytes | integer | | hidden | Total bytes of WAL generated. Available in PostgreSQL 13+. |\n| JIT Functions | integer | | hidden | Total number of functions JIT-compiled. Available in PostgreSQL 15+. |\n| JIT Generation Time | duration | milliseconds | hidden | Time spent generating JIT code. Available in PostgreSQL 15+. |\n| JIT Inlining Count | integer | | hidden | Number of times JIT inlining was performed. Available in PostgreSQL 15+. |\n| JIT Inlining Time | duration | milliseconds | hidden | Time spent on JIT inlining. Available in PostgreSQL 15+. |\n| JIT Optimization Count | integer | | hidden | Number of times JIT optimization was performed. Available in PostgreSQL 15+. |\n| JIT Optimization Time | duration | milliseconds | hidden | Time spent on JIT optimization. Available in PostgreSQL 15+. |\n| JIT Emission Count | integer | | hidden | Number of times JIT code was emitted. Available in PostgreSQL 15+. |\n| JIT Emission Time | duration | milliseconds | hidden | Time spent emitting JIT code. Available in PostgreSQL 15+. |\n| Temp Block Read Time | duration | milliseconds | hidden | Time spent reading temp blocks. Available in PostgreSQL 15+. Requires `track_io_timing`. |\n| Temp Block Write Time | duration | milliseconds | hidden | Time spent writing temp blocks. Available in PostgreSQL 15+. Requires `track_io_timing`. |\n| Application Name | string | | | Name of the application that executed the query. Available with pg_stat_monitor only. |\n| Client IP | string | | hidden | IP address of the client that executed the query. Available with pg_stat_monitor only. |\n| Command Type | string | | | Type of SQL command (SELECT, INSERT, UPDATE, DELETE, etc.). Available with pg_stat_monitor only. |\n| Comments | string | | hidden | SQL comments extracted from the query. Available with pg_stat_monitor only. |\n| Relations | string | | hidden | Tables/relations involved in the query. Available with pg_stat_monitor only. |\n| CPU User Time | duration | milliseconds | hidden | CPU time spent in user mode. Available with pg_stat_monitor only. |\n| CPU System Time | duration | milliseconds | hidden | CPU time spent in system/kernel mode. Available with pg_stat_monitor only. |\n| Error Level | integer | | hidden | PostgreSQL error level if query produced an error. Available with pg_stat_monitor only. |\n| SQL Code | string | | hidden | PostgreSQL SQLSTATE error code if query produced an error. Available with pg_stat_monitor only. |\n| Error Message | string | | hidden | Error message if query produced an error. Available with pg_stat_monitor only. |\n| Top Level | string | | hidden | Whether this is a top-level statement (true) or nested (false). Available with pg_stat_monitor only. |\n| Bucket Start Time | string | | hidden | Start time of the statistics bucket. Available with pg_stat_monitor only. |\n\n### Running Queries\n\nRetrieves currently executing queries from PostgreSQL [pg_stat_activity](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW) system view.\n\nThis function queries `pg_stat_activity` which shows real-time information about each server process including the SQL query being executed, wait events, and session state. Unlike Top Queries which shows aggregated historical statistics, Running Queries shows live snapshots of active queries.\n\nUse cases:\n- Identify long-running queries that may be blocking other operations\n- Debug stuck transactions or hanging connections\n- Monitor active workload during performance issues\n- Investigate wait events and lock contention in real-time\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Postgres:running-queries` |\n| Require Cloud | yes |\n| Performance | Queries `pg_stat_activity` which is a live system view:<br/>\u2022 Very lightweight query, no impact on database performance<br/>\u2022 Returns only active queries by default (state = 'active')<br/>\u2022 Limited to 500 rows |\n| Security | Query text contains actual SQL being executed, which may include:<br/>\u2022 Personal information in WHERE clauses or INSERT values<br/>\u2022 Business data and internal identifiers<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to PostgreSQL<br/>\u2022 Returns HTTP 503 if collector is still initializing<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Database user permissions\n\nThe monitoring user needs `pg_monitor` role to view all sessions:\n\n```sql\nGRANT pg_monitor TO netdata;\n```\n\nWithout this role, the user can only see their own sessions.\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Sort By | select | Select the sort column. Defaults to query duration (longest running first). | yes | durationMs | |\n\n#### Returns\n\nLive query data from `pg_stat_activity`. Each row represents a currently active backend process.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Duration | duration | milliseconds | | Query duration in milliseconds (since query_start). High values indicate long-running queries. |\n| Query | string | | | Query text of the currently executing or most recent query. May be truncated at track_activity_query_size. |\n| Database | string | | | Name of the database this backend is connected to. |\n| User | string | | | Name of the user logged into this backend. |\n| Application Name | string | | | Name of the application connected to this backend. |\n| Client Address | string | | | IP address of the client (NULL for Unix socket or internal process). |\n| Wait Event | string | | | Specific wait event name if backend is currently waiting. |\n| PID | integer | | | Process ID of this backend. Use with pg_terminate_backend() to kill a query. |\n| Wait Event Type | string | | hidden | Type of event the backend is waiting for (Activity, BufferPin, Client, Extension, IO, IPC, Lock, LWLock, Timeout). |\n| State | string | | hidden | Current state: active, idle, idle in transaction, idle in transaction (aborted), fastpath function call, disabled. |\n| Backend Type | string | | hidden | Type of backend: client backend, autovacuum worker, parallel worker, walsender, walreceiver, etc. Available in PostgreSQL 10+. |\n| Query Start | timestamp | | hidden | Time when the currently active query was started. |\n| Transaction Start | timestamp | | hidden | Time when current transaction started (NULL if no transaction). |\n| Backend Start | timestamp | | hidden | Time when this process/connection started. |\n| State Change | timestamp | | hidden | Time when state was last changed. |\n| Query ID | string | | hidden | Query identifier (requires compute_query_id or extension). Available in PostgreSQL 14+. |\n| Leader PID | integer | | hidden | Process ID of parallel group leader (NULL if this is leader or not parallel). Available in PostgreSQL 13+. |\n| Database ID | integer | | hidden | OID of the database this backend is connected to. |\n| User ID | integer | | hidden | OID of the user logged into this backend. |\n| Client Hostname | string | | hidden | Hostname of the client via reverse DNS (only if log_hostname enabled). |\n| Client Port | integer | | hidden | TCP port of client (-1 for Unix socket, NULL for internal process). |\n| Backend Xid | string | | hidden | Top-level transaction identifier of this backend. |\n| Backend Xmin | string | | hidden | Backend's xmin horizon. |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per PostgreSQL instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| postgres.connections_utilization | used | percentage |\n| postgres.connections_usage | available, used | connections |\n| postgres.connections_state_count | active, idle, idle_in_transaction, idle_in_transaction_aborted, disabled | connections |\n| postgres.transactions_duration | a dimension per bucket | transactions/s |\n| postgres.queries_duration | a dimension per bucket | queries/s |\n| postgres.locks_utilization | used | percentage |\n| postgres.checkpoints_rate | scheduled, requested | checkpoints/s |\n| postgres.checkpoints_time | write, sync | milliseconds |\n| postgres.bgwriter_halts_rate | maxwritten | events/s |\n| postgres.buffers_io_rate | checkpoint, backend, bgwriter | B/s |\n| postgres.buffers_backend_fsync_rate | fsync | calls/s |\n| postgres.buffers_allocated_rate | allocated | B/s |\n| postgres.wal_io_rate | write | B/s |\n| postgres.wal_files_count | written, recycled | files |\n| postgres.wal_archiving_files_count | ready, done | files/s |\n| postgres.autovacuum_workers_count | analyze, vacuum_analyze, vacuum, vacuum_freeze, brin_summarize | workers |\n| postgres.txid_exhaustion_towards_autovacuum_perc | emergency_autovacuum | percentage |\n| postgres.txid_exhaustion_perc | txid_exhaustion | percentage |\n| postgres.txid_exhaustion_oldest_txid_num | xid | xid |\n| postgres.catalog_relations_count | ordinary_table, index, sequence, toast_table, view, materialized_view, composite_type, foreign_table, partitioned_table, partitioned_index | relations |\n| postgres.catalog_relations_size | ordinary_table, index, sequence, toast_table, view, materialized_view, composite_type, foreign_table, partitioned_table, partitioned_index | B |\n| postgres.uptime | uptime | seconds |\n| postgres.databases_count | databases | databases |\n\n### Per repl application\n\nThese metrics refer to the replication application.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| application | application name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| postgres.replication_app_wal_lag_size | sent_lag, write_lag, flush_lag, replay_lag | B |\n| postgres.replication_app_wal_lag_time | write_lag, flush_lag, replay_lag | seconds |\n\n### Per repl slot\n\nThese metrics refer to the replication slot.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| slot | replication slot name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| postgres.replication_slot_files_count | wal_keep, pg_replslot_files | files |\n\n### Per database\n\nThese metrics refer to the database.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| database | database name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| postgres.db_transactions_ratio | committed, rollback | percentage |\n| postgres.db_transactions_rate | committed, rollback | transactions/s |\n| postgres.db_connections_utilization | used | percentage |\n| postgres.db_connections_count | connections | connections |\n| postgres.db_cache_io_ratio | miss | percentage |\n| postgres.db_io_rate | memory, disk | B/s |\n| postgres.db_ops_fetched_rows_ratio | fetched | percentage |\n| postgres.db_ops_read_rows_rate | returned, fetched | rows/s |\n| postgres.db_ops_write_rows_rate | inserted, deleted, updated | rows/s |\n| postgres.db_conflicts_rate | conflicts | queries/s |\n| postgres.db_conflicts_reason_rate | tablespace, lock, snapshot, bufferpin, deadlock | queries/s |\n| postgres.db_deadlocks_rate | deadlocks | deadlocks/s |\n| postgres.db_locks_held_count | access_share, row_share, row_exclusive, share_update, share, share_row_exclusive, exclusive, access_exclusive | locks |\n| postgres.db_locks_awaited_count | access_share, row_share, row_exclusive, share_update, share, share_row_exclusive, exclusive, access_exclusive | locks |\n| postgres.db_temp_files_created_rate | created | files/s |\n| postgres.db_temp_files_io_rate | written | B/s |\n| postgres.db_size | size | B |\n\n### Per table\n\nThese metrics refer to the database table.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| database | database name |\n| schema | schema name |\n| table | table name |\n| parent_table | parent table name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| postgres.table_rows_dead_ratio | dead | percentage |\n| postgres.table_rows_count | live, dead | rows |\n| postgres.table_ops_rows_rate | inserted, deleted, updated | rows/s |\n| postgres.table_ops_rows_hot_ratio | hot | percentage |\n| postgres.table_ops_rows_hot_rate | hot | rows/s |\n| postgres.table_cache_io_ratio | miss | percentage |\n| postgres.table_io_rate | memory, disk | B/s |\n| postgres.table_index_cache_io_ratio | miss | percentage |\n| postgres.table_index_io_rate | memory, disk | B/s |\n| postgres.table_toast_cache_io_ratio | miss | percentage |\n| postgres.table_toast_io_rate | memory, disk | B/s |\n| postgres.table_toast_index_cache_io_ratio | miss | percentage |\n| postgres.table_toast_index_io_rate | memory, disk | B/s |\n| postgres.table_scans_rate | index, sequential | scans/s |\n| postgres.table_scans_rows_rate | index, sequential | rows/s |\n| postgres.table_autovacuum_since_time | time | seconds |\n| postgres.table_vacuum_since_time | time | seconds |\n| postgres.table_autoanalyze_since_time | time | seconds |\n| postgres.table_analyze_since_time | time | seconds |\n| postgres.table_null_columns | null | columns |\n| postgres.table_size | size | B |\n| postgres.table_bloat_size_perc | bloat | percentage |\n| postgres.table_bloat_size | bloat | B |\n\n### Per index\n\nThese metrics refer to the table index.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| database | database name |\n| schema | schema name |\n| table | table name |\n| parent_table | parent table name |\n| index | index name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| postgres.index_size | size | B |\n| postgres.index_bloat_size_perc | bloat | percentage |\n| postgres.index_bloat_size | bloat | B |\n| postgres.index_usage_status | used, unused | status |\n\n",integration_type:"collector",id:"go.d.plugin-postgres-PostgreSQL",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/postgres/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-powerdns",plugin_name:"go.d.plugin",module_name:"powerdns",monitored_instance:{name:"PowerDNS Authoritative Server",link:"https://doc.powerdns.com/authoritative/",icon_filename:"powerdns.svg",categories:["data-collection.networking"]},keywords:["powerdns","dns"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# PowerDNS Authoritative Server\n\nPlugin: go.d.plugin\nModule: powerdns\n\n## Overview\n\nThis collector monitors PowerDNS Authoritative Server instances.\nIt collects metrics from [the internal webserver](https://doc.powerdns.com/authoritative/http-api/index.html#webserver).\n\nUsed endpoints:\n\n- [`/api/v1/servers/localhost/statistics`](https://doc.powerdns.com/authoritative/http-api/statistics.html)\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **powerdns** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **powerdns**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/powerdns.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable webserver\n\nFollow [webserver](https://doc.powerdns.com/authoritative/http-api/index.html#webserver) documentation.\n\n\n#### Enable HTTP API\n\nFollow [HTTP API](https://doc.powerdns.com/authoritative/http-api/index.html#enabling-the-api) documentation.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8081 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **powerdns** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the powerdns data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _powerdns_ (or scroll the list) to locate the **powerdns** collector.\n5. Click the **+** next to the **powerdns** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/powerdns.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/powerdns.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8081\n\n```\n{% /details %}\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8081\n username: admin\n password: password\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8081\n\n - name: remote\n url: http://203.0.113.0:8081\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `powerdns` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m powerdns\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m powerdns -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `powerdns` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep powerdns\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep powerdns /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep powerdns\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per PowerDNS Authoritative Server instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powerdns.questions_in | udp, tcp | questions/s |\n| powerdns.questions_out | udp, tcp | questions/s |\n| powerdns.cache_usage | query-cache-hit, query-cache-miss, packetcache-hit, packetcache-miss | events/s |\n| powerdns.cache_size | query-cache, packet-cache, key-cache, meta-cache | entries |\n| powerdns.latency | latency | microseconds |\n\n",integration_type:"collector",id:"go.d.plugin-powerdns-PowerDNS_Authoritative_Server",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/powerdns/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-powerdns_recursor",plugin_name:"go.d.plugin",module_name:"powerdns_recursor",monitored_instance:{name:"PowerDNS Recursor",link:"https://doc.powerdns.com/recursor/",icon_filename:"powerdns.svg",categories:["data-collection.networking"]},keywords:["powerdns","dns"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# PowerDNS Recursor\n\nPlugin: go.d.plugin\nModule: powerdns_recursor\n\n## Overview\n\nThis collector monitors PowerDNS Recursor instances.\n\nIt collects metrics from [the internal webserver](https://doc.powerdns.com/recursor/http-api/index.html#built-in-webserver-and-http-api).\n\nUsed endpoints:\n\n- [`/api/v1/servers/localhost/statistics`](https://doc.powerdns.com/recursor/common/api/endpoint-statistics.html)\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **powerdns_recursor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **powerdns_recursor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/powerdns_recursor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable webserver\n\nFollow [webserver](https://doc.powerdns.com/recursor/http-api/index.html#webserver) documentation.\n\n\n#### Enable HTTP API\n\nFollow [HTTP API](https://doc.powerdns.com/recursor/http-api/index.html#enabling-the-api) documentation.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8081 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **powerdns_recursor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the powerdns_recursor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _powerdns_recursor_ (or scroll the list) to locate the **powerdns_recursor** collector.\n5. Click the **+** next to the **powerdns_recursor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/powerdns_recursor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/powerdns_recursor.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8081\n\n```\n{% /details %}\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8081\n username: admin\n password: password\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8081\n\n - name: remote\n url: http://203.0.113.0:8081\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `powerdns_recursor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m powerdns_recursor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m powerdns_recursor -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `powerdns_recursor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep powerdns_recursor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep powerdns_recursor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep powerdns_recursor\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per PowerDNS Recursor instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powerdns_recursor.questions_in | total, tcp, ipv6 | questions/s |\n| powerdns_recursor.questions_out | udp, tcp, ipv6, throttled | questions/s |\n| powerdns_recursor.answer_time | 0-1ms, 1-10ms, 10-100ms, 100-1000ms, slow | queries/s |\n| powerdns_recursor.timeouts | total, ipv4, ipv6 | timeouts/s |\n| powerdns_recursor.drops | over-capacity-drops, query-pipe-full-drops, too-old-drops, truncated-drops, empty-queries | drops/s |\n| powerdns_recursor.cache_usage | cache-hits, cache-misses, packet-cache-hits, packet-cache-misses | events/s |\n| powerdns_recursor.cache_size | cache, packet-cache, negative-cache | entries |\n\n",integration_type:"collector",id:"go.d.plugin-powerdns_recursor-PowerDNS_Recursor",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/powerdns_recursor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-powerstore",plugin_name:"go.d.plugin",module_name:"powerstore",monitored_instance:{name:"Dell PowerStore",link:"https://www.dell.com/en-us/dt/storage/powerstore-storage-appliance.htm",icon_filename:"dell.svg",categories:["data-collection.storage"]},keywords:["powerstore","dell","storage","san","nas","block","file"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Dell PowerStore\n\nPlugin: go.d.plugin\nModule: powerstore\n\n## Overview\n\nThis collector monitors Dell PowerStore storage arrays via the PowerStore REST API.\n\nIt collects metrics for the following components:\n\n- **Cluster Capacity** \u2014 physical and logical space usage, efficiency ratios (data reduction, snapshot savings, thin provisioning)\n- **Appliance Performance** \u2014 IOPS, bandwidth, latency, CPU utilization, and space usage per appliance\n- **Volume Performance** \u2014 IOPS, bandwidth, latency, provisioned/used space, and thin savings per volume\n- **Node Performance** \u2014 IOPS, bandwidth, latency, and current login count per node\n- **FC Port Performance** \u2014 IOPS, bandwidth, latency, and link status per Fibre Channel port\n- **Ethernet Port Performance** \u2014 bytes/packets rate, error rates, and link status per Ethernet port\n- **File System Performance** \u2014 IOPS, bandwidth, and latency per file system\n- **Hardware Health** \u2014 component-level status counts (fans, PSUs, drives, batteries, nodes) by health state (OK, degraded, failed, unknown)\n- **Active Alerts** \u2014 count of currently active alerts by severity (critical, major, minor, info)\n- **Drive Wear** \u2014 SSD endurance remaining percentage per drive\n- **NAS Server Status** \u2014 operational status counts (started, stopped, degraded, unknown)\n- **Replication** \u2014 data remaining, data transferred, and transfer rate across appliances\n\n\nThe collector uses the PowerStore REST API (`/api/rest/*` endpoints) to fetch data.\nAuthentication uses HTTP Basic Auth \u2014 the collector calls `/api/rest/login_session` to obtain\na session cookie and a `DELL-EMC-TOKEN` CSRF token, which are reused for subsequent requests.\nSessions are automatically refreshed on HTTP 403 (token expiry).\n\nDiscovery runs on startup and then every 5 collection cycles to refresh the hardware inventory,\nappliances, volumes, nodes, ports, file systems, and NAS servers.\n\nPerformance and space metrics are collected via the `/api/rest/metrics/generate` endpoint using\nthe PowerStore metrics generation API. The collector requests `Five_Mins` interval data for\nperformance metrics and `One_Day` for cluster space metrics, taking the most recent data point.\n\nDiscovery API calls use pagination (2000 items per page, HTTP 206 for partial results).\nPerformance metrics for different entities are collected concurrently (up to 10 parallel API calls).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nA user account on the PowerStore array is required. Any role with API read access\nis sufficient (e.g., the built-in `Operator` role). The account does not need write permissions.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector does not auto-detect PowerStore arrays. You must configure the management IP address,\nusername, and password explicitly.\n\n\n#### Limits\n\nThe collector makes multiple API calls per collection cycle: discovery calls (once every 5 cycles)\nplus per-entity metrics calls (appliances, volumes, nodes, ports, file systems, drives, and\nreplication \u2014 one API call per entity). With many volumes or ports, the number of API calls\nscales linearly. The default 30-second collection interval provides ample headroom.\n\n\n#### Performance Impact\n\nThe PowerStore REST API is lightweight and read-only. The collector uses the metrics generation\nAPI which returns pre-aggregated data, imposing minimal load on the array. Session tokens and\nCSRF tokens are cached across collection cycles.\n\n",setup:'## Setup\n\n\nYou can configure the **powerstore** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **powerstore**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/powerstore.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### PowerStore API access\n\n1. A user account on the PowerStore array with at least read-only access.\n The built-in `Operator` role is sufficient.\n2. Network connectivity from the Netdata Agent to the PowerStore management IP (HTTPS, port 443).\n3. The PowerStore management REST API must be accessible (enabled by default).\n\n\n#### TLS certificate\n\nPowerStore arrays typically use self-signed TLS certificates. You will likely need to set\n`tls_skip_verify: yes` in the configuration, or provide the array\'s CA certificate via `tls_ca`.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 30 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | PowerStore management URL. | https://127.0.0.1 | yes |\n| | timeout | HTTP request timeout (seconds). | 30 | no |\n| **HTTP Auth** | username | Username for PowerStore API authentication. | | yes |\n| | password | Password for PowerStore API authentication. | | yes |\n| **Filtering** | volume_selector | Space-separated [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#readme) to filter which volumes to monitor. Use `*` for wildcards, `!` prefix to exclude. An empty value or `*` monitors all volumes. | * | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure, but often needed for self-signed certs on storage arrays). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **powerstore** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the powerstore data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _powerstore_ (or scroll the list) to locate the **powerstore** collector.\n5. Click the **+** next to the **powerstore** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/powerstore.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/powerstore.conf\n```\n\n##### Examples\n\n###### Basic\n\nA minimal configuration connecting to a PowerStore array with a self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: ps-lab\n url: https://10.0.0.1\n username: monitor\n password: monitor123\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### With volume filtering\n\nMonitor only production volumes, excluding temporary and test volumes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: ps-prod\n url: https://10.0.0.1\n username: monitor\n password: monitor123\n tls_skip_verify: yes\n volume_selector: "prod-* !*-temp !*-test"\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nMonitoring multiple PowerStore arrays.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: ps-site-a\n url: https://10.0.0.1\n username: monitor\n password: monitor123\n tls_skip_verify: yes\n\n - name: ps-site-b\n url: https://10.0.0.2\n username: monitor\n password: monitor456\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### With virtual node\n\nAssociate the PowerStore job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes) so its metrics appear under a separate host in Netdata Cloud.\n\nFirst, define the vnode in `/etc/netdata/vnodes/vnodes.conf`:\n\n```yaml\n- hostname: my_powerstore\n guid: <your-uuid-here>\n```\n\nThen reference that hostname in the collector job\'s `vnode` field. The `vnode` value must match the `hostname` in vnodes.conf exactly (case-sensitive).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: ps-san\n url: https://10.0.0.1\n username: monitor\n password: monitor123\n tls_skip_verify: yes\n vnode: my_powerstore\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `powerstore` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m powerstore\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m powerstore -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `powerstore` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep powerstore\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep powerstore /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep powerstore\n```\n\n### Authentication failure\n\nIf the collector fails with `login failed`:\n\n1. Verify the username and password are correct.\n2. Ensure the user account has at least `Operator` role privileges.\n3. Check that the account is not locked or expired on the array.\n\n\n### Connection refused or timeout\n\nIf the collector fails with connection errors:\n\n1. Verify the `url` points to the management IP of the PowerStore array.\n2. Ensure HTTPS port 443 is reachable from the Netdata Agent host.\n3. If using a firewall, allow outbound HTTPS to the array.\n4. Try increasing `timeout` if the array is on a high-latency link.\n\n\n### TLS certificate errors\n\nPowerStore arrays ship with self-signed certificates. If you see TLS errors:\n\n1. Set `tls_skip_verify: yes` in the configuration (most common solution).\n2. Alternatively, export the array's certificate and provide it via `tls_ca`.\n\n\n### HTTP 403 errors\n\nPowerStore returns HTTP 403 when the session/CSRF token is stale. The collector\nautomatically re-authenticates on 403, but if you see persistent 403 errors:\n\n1. Verify the user account still has API access.\n2. Check if the array's security policy has been changed to restrict API access.\n3. Ensure no IP-based access controls are blocking the Netdata Agent host.\n\n\n### Virtual node not found\n\nIf the collector reports that a vnode does not exist:\n\n1. Verify the vnode hostname is defined in `/etc/netdata/vnodes/vnodes.conf`.\n2. Ensure the `vnode` field in the collector job exactly matches the `hostname`\n in vnodes.conf \u2014 the match is case-sensitive.\n3. Confirm the vnodes.conf file uses valid YAML format with correct `guid` values\n (a valid UUID string).\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Dell PowerStore instance\n\nThese metrics refer to the entire monitored PowerStore cluster.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powerstore.cluster_space_usage | used, total | bytes |\n| powerstore.cluster_space_logical | provisioned, used, data_physical, shared | bytes |\n| powerstore.cluster_space_efficiency | efficiency, data_reduction, snapshot_savings, thin_savings | ratio |\n| powerstore.hardware_health_fan | ok, degraded, failed, unknown | fans |\n| powerstore.hardware_health_psu | ok, degraded, failed, unknown | PSUs |\n| powerstore.hardware_health_drive | ok, degraded, failed, unknown | drives |\n| powerstore.hardware_health_battery | ok, degraded, failed, unknown | batteries |\n| powerstore.hardware_health_node | ok, degraded, failed, unknown | nodes |\n| powerstore.alerts_active | critical, major, minor, info | alerts |\n| powerstore.nas_server_status | started, stopped, degraded, unknown | servers |\n| powerstore.copy_data | remaining, transferred | bytes |\n| powerstore.copy_transfer_rate | rate | bytes/s |\n\n### Per appliance\n\nThese metrics refer to individual PowerStore appliances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| appliance | Appliance name (e.g., `Appliance-WX-D8031`). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powerstore.appliance_iops | read, write | ops/s |\n| powerstore.appliance_bandwidth | read, write | bytes/s |\n| powerstore.appliance_latency | read, write, avg | microseconds |\n| powerstore.appliance_cpu | utilization | percentage |\n| powerstore.appliance_space | used, total | bytes |\n| powerstore.appliance_space_logical | provisioned, used, data_physical, shared | bytes |\n| powerstore.appliance_space_efficiency | efficiency, data_reduction, snapshot_savings, thin_savings | ratio |\n\n### Per volume\n\nThese metrics refer to individual PowerStore volumes. Volumes can be filtered using the `volume_selector` configuration option.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| volume | Volume name (e.g., `prod-db-01`). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powerstore.volume_iops | read, write | ops/s |\n| powerstore.volume_bandwidth | read, write | bytes/s |\n| powerstore.volume_latency | read, write, avg | microseconds |\n| powerstore.volume_space | provisioned, used | bytes |\n| powerstore.volume_space_savings | thin_savings | ratio |\n\n### Per node\n\nThese metrics refer to individual PowerStore nodes within an appliance.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node name (e.g., `Appliance-WX-D8031-node-A`). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powerstore.node_iops | read, write | ops/s |\n| powerstore.node_bandwidth | read, write | bytes/s |\n| powerstore.node_latency | read, write, avg | microseconds |\n| powerstore.node_logins | logins | logins |\n\n### Per fc port\n\nThese metrics refer to individual Fibre Channel ports used for host connectivity.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| fc_port | FC port name (e.g., `Appliance-WX-D8031-node-A-Port-0`). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powerstore.fc_port_iops | read, write | ops/s |\n| powerstore.fc_port_bandwidth | read, write | bytes/s |\n| powerstore.fc_port_latency | read, write, avg | microseconds |\n| powerstore.fc_port_link_status | up | status |\n\n### Per ethernet port\n\nThese metrics refer to individual Ethernet ports (management and iSCSI connectivity).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| eth_port | Ethernet port name (e.g., `Appliance-WX-D8031-node-A-Port-eth0`). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powerstore.eth_port_bytes | received, sent | bytes/s |\n| powerstore.eth_port_packets | received, sent | packets/s |\n| powerstore.eth_port_errors | rx_crc, rx_no_buffer, tx_error | errors/s |\n| powerstore.eth_port_link_status | up | status |\n\n### Per file system\n\nThese metrics refer to individual file systems (NFS/SMB shares).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| filesystem | File system name (e.g., `nfs-share-01`). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powerstore.filesystem_iops | read, write | ops/s |\n| powerstore.filesystem_bandwidth | read, write | bytes/s |\n| powerstore.filesystem_latency | read, write, avg | microseconds |\n\n### Per drive\n\nThese metrics refer to individual physical drives (SSDs).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| drive | Drive name (e.g., `Drive_0_0_25`). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powerstore.drive_endurance | remaining | percentage |\n\n",integration_type:"collector",id:"go.d.plugin-powerstore-Dell_PowerStore",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/powerstore/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-powervault",plugin_name:"go.d.plugin",module_name:"powervault",monitored_instance:{name:"Dell PowerVault ME4/ME5",link:"https://www.dell.com/en-us/shop/povw/dell-powervault-me5",icon_filename:"dell.svg",categories:["data-collection.storage"]},keywords:["powervault","dell","storage","me4","me5","san","das"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Dell PowerVault ME4/ME5\n\nPlugin: go.d.plugin\nModule: powervault\n\n## Overview\n\nThis collector monitors Dell PowerVault ME4 and ME5 storage arrays via the Management Controller Interface (MCI) REST API.\n\nIt collects metrics for the following components:\n\n- **System Health** \u2014 overall array health status\n- **Hardware Health** \u2014 component-level status counts (controllers, drives, fans, PSUs, FRUs, ports) by health state (OK, degraded, fault, unknown)\n- **Controller Performance** \u2014 IOPS, throughput, CPU load, write cache usage, forwarded commands, cumulative I/O and cache hit/miss statistics\n- **Volume Performance** \u2014 IOPS, throughput, write cache usage, cumulative I/O, cache hit/miss statistics, storage tier distribution (SSD/SAS/SATA)\n- **Port I/O** \u2014 cumulative read/write operations and data transferred per host port\n- **SAS PHY Errors** \u2014 disparity errors, lost dwords, invalid dwords aggregated per port\n- **Pool Capacity** \u2014 total and available bytes per storage pool\n- **Drive Metrics** \u2014 temperature, power-on hours, SSD life remaining per drive\n- **Sensor Readings** \u2014 temperature, voltage, current, and charge capacity per sensor\n\n\nThe collector uses the MCI REST API (`/api/show/*` and `/api/show/*-statistics` endpoints) to fetch data.\nAuthentication uses a hash-based login (SHA-256 by default, MD5 for legacy firmware) \u2014 the collector\nhashes `username_password`, calls `/api/login/<hash>`, and uses the returned session key for subsequent requests.\n\nDiscovery runs on startup and then every 10 collection cycles to refresh the hardware inventory.\nPerformance statistics (controllers, volumes, ports, PHY) are collected via concurrent API calls\neach cycle. Hardware health, drive metrics, sensor readings, pool capacity, and system health\nare computed from the cached discovery data without additional API calls.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nA user account on the PowerVault management controller is required. Any role with API read access\nis sufficient (e.g., the built-in `monitor` role). The account does not need write permissions.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector does not auto-detect PowerVault arrays. You must configure the management IP address,\nusername, and password explicitly.\n\n\n#### Limits\n\nThe collector makes approximately 14 API calls per collection cycle (10 for discovery when needed,\n4 for statistics). With the default 30-second collection interval, this is well within the MCI API's\ncapabilities. Each API call returns all entities of that type in a single response.\n\n\n#### Performance Impact\n\nThe MCI API is lightweight and read-only. The collector's impact on the storage array is negligible.\nSession keys are reused across collection cycles and automatically refreshed on expiry (HTTP 401).\n\n",setup:'## Setup\n\n\nYou can configure the **powervault** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **powervault**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/powervault.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### PowerVault API access\n\n1. A user account on the PowerVault management controller with at least read-only access.\n The built-in `monitor` role is sufficient.\n2. Network connectivity from the Netdata Agent to the PowerVault management IP (HTTPS, port 443).\n3. The management controller must have its REST API enabled (enabled by default on ME4/ME5).\n\n\n#### TLS certificate\n\nPowerVault controllers typically use self-signed TLS certificates. You will likely need to set\n`tls_skip_verify: yes` in the configuration, or provide the controller\'s CA certificate via `tls_ca`.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 30 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | PowerVault management controller URL. | https://127.0.0.1 | yes |\n| | timeout | HTTP request timeout (seconds). | 30 | no |\n| **HTTP Auth** | username | Username for MCI API authentication. | | yes |\n| | password | Password for MCI API authentication. | | yes |\n| | auth_digest | Hash algorithm for authentication. Use `sha256` (default) or `md5` (legacy ME4 firmware < G280). | sha256 | no |\n| **Filtering** | volume_selector | Space-separated [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#readme) to filter which volumes to monitor. Use `*` for wildcards, `!` prefix to exclude. An empty value monitors all volumes. | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure, but often needed for self-signed certs on storage controllers). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **powervault** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the powervault data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _powervault_ (or scroll the list) to locate the **powervault** collector.\n5. Click the **+** next to the **powervault** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/powervault.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/powervault.conf\n```\n\n##### Examples\n\n###### Basic\n\nA minimal configuration connecting to a PowerVault controller with a self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: pv-lab\n url: https://10.0.0.1\n username: monitor\n password: monitor123\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### With volume filtering\n\nMonitor only production volumes, excluding temporary and test volumes.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: pv-prod\n url: https://10.0.0.1\n username: monitor\n password: monitor123\n tls_skip_verify: yes\n volume_selector: "prod-* !*-temp !*-test"\n\n```\n{% /details %}\n###### Legacy ME4 with MD5 auth\n\nConnecting to an older ME4 controller that requires MD5 authentication (firmware before G280).\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: pv-legacy\n url: https://10.0.0.2\n username: manage\n password: manage123\n auth_digest: md5\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nMonitoring multiple PowerVault arrays.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: pv-site-a\n url: https://10.0.0.1\n username: monitor\n password: monitor123\n tls_skip_verify: yes\n\n - name: pv-site-b\n url: https://10.0.0.2\n username: monitor\n password: monitor456\n tls_skip_verify: yes\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `powervault` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m powervault\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m powervault -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `powervault` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep powervault\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep powervault /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep powervault\n```\n\n### Authentication failure\n\nIf the collector fails with `login: authentication failed`:\n\n1. Verify the username and password are correct.\n2. Check the `auth_digest` setting. ME4 firmware before G280 requires `auth_digest: md5`.\n ME5 and newer ME4 firmware use `sha256` (the default).\n3. Ensure the user account is not locked or expired on the controller.\n\n\n### Connection refused or timeout\n\nIf the collector fails with connection errors:\n\n1. Verify the `url` points to the management controller IP (not a data port).\n2. Ensure HTTPS port 443 is reachable from the Netdata Agent host.\n3. If using a firewall, allow outbound HTTPS to the controller.\n4. Try increasing `timeout` if the controller is on a high-latency link.\n\n\n### TLS certificate errors\n\nPowerVault controllers ship with self-signed certificates. If you see TLS errors:\n\n1. Set `tls_skip_verify: yes` in the configuration (most common solution).\n2. Alternatively, export the controller's certificate and provide it via `tls_ca`.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Dell PowerVault ME4/ME5 instance\n\nThese metrics refer to the entire monitored PowerVault array.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powervault.system_health | health | status |\n| powervault.hw_health_controller | ok, degraded, fault, unknown | controllers |\n| powervault.hw_health_drive | ok, degraded, fault, unknown | drives |\n| powervault.hw_health_fan | ok, degraded, fault, unknown | fans |\n| powervault.hw_health_psu | ok, degraded, fault, unknown | PSUs |\n| powervault.hw_health_fru | ok, degraded, fault, unknown | FRUs |\n| powervault.hw_health_port | ok, degraded, fault, unknown | ports |\n\n### Per controller\n\nThese metrics refer to individual RAID controllers (typically controller_a and controller_b in a dual-controller configuration).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| controller | Controller durable ID (e.g., `controller_a`, `controller_b`). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powervault.controller_iops | iops | ops/s |\n| powervault.controller_throughput | throughput | bytes/s |\n| powervault.controller_cpu_load | cpu_load | percentage |\n| powervault.controller_write_cache_used | write_cache_used | percentage |\n| powervault.controller_forwarded_cmds | forwarded | commands |\n| powervault.controller_io | read, written | bytes |\n| powervault.controller_ops | read, write | ops |\n| powervault.controller_cache_hits | read_hits, read_misses, write_hits, write_misses | hits |\n\n### Per volume\n\nThese metrics refer to individual storage volumes. Volumes can be filtered using the `volume_selector` configuration option.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| volume | Volume name (e.g., `prod-db-01`). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powervault.volume_iops | iops | ops/s |\n| powervault.volume_throughput | throughput | bytes/s |\n| powervault.volume_write_cache_percent | write_cache | percentage |\n| powervault.volume_io | read, written | bytes |\n| powervault.volume_ops | read, write | ops |\n| powervault.volume_cache_hits | read_hits, read_misses, write_hits, write_misses | hits |\n| powervault.volume_tier_distribution | ssd, sas, sata | percentage |\n\n### Per port\n\nThese metrics refer to individual host ports (SAS/FC ports used for host connectivity).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| port | Port durable ID (e.g., `hostport_A0`). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powervault.port_io | read, written | bytes |\n| powervault.port_ops | read, write | ops |\n| powervault.phy_errors | disparity, lost_dwords, invalid_dwords | errors |\n\n### Per pool\n\nThese metrics refer to individual storage pools (also known as disk groups or virtual pools).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| pool | Pool name (e.g., `Pool-A`). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powervault.pool_capacity | total, available | bytes |\n\n### Per drive\n\nThese metrics refer to individual physical drives (HDDs and SSDs).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| drive | Drive location (e.g., `0.0` for enclosure 0, slot 0). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powervault.drive_temperature | temperature | Celsius |\n| powervault.drive_power_on_hours | power_on_hours | hours |\n| powervault.drive_ssd_life_left | life_left | percentage |\n\n### Per sensor\n\nThese metrics refer to individual hardware sensors. Sensor types include temperature,\nvoltage, current, and charge capacity (supercapacitor/battery backup units).\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| sensor | Sensor durable ID (e.g., `sensor_temp_ctrl_A.1`). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powervault.sensor_temperature | temperature | Celsius |\n| powervault.sensor_voltage | voltage | millivolts |\n| powervault.sensor_current | current | milliamps |\n| powervault.sensor_charge_capacity | charge_capacity | percentage |\n\n",integration_type:"collector",id:"go.d.plugin-powervault-Dell_PowerVault_ME4/ME5",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/powervault/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-4d_server",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"4D Server",link:"https://github.com/ThomasMaul/Prometheus_4D_Exporter",icon_filename:"4d_server.png",categories:["data-collection.databases"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# 4D Server\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor 4D Server performance metrics for efficient application management and optimization.\n\n\nMetrics are gathered by periodically sending HTTP requests to [4D Server exporter](https://github.com/ThomasMaul/Prometheus_4D_Exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [4D Server exporter](https://github.com/ThomasMaul/Prometheus_4D_Exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-4D_Server",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-8430ft-modem",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"8430FT modem",link:"https://github.com/dernasherbrezon/8430ft_exporter",icon_filename:"mtc.svg",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# 8430FT modem\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep track of vital metrics from the MTS 8430FT modem for streamlined network performance and diagnostics.\n\n\nMetrics are gathered by periodically sending HTTP requests to [8430FT Exporter](https://github.com/dernasherbrezon/8430ft_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [8430FT Exporter](https://github.com/dernasherbrezon/8430ft_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-8430FT_modem",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-amd_smi",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"AMD CPU & GPU",link:"https://github.com/amd/amd_smi_exporter",icon_filename:"amd.svg",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# AMD CPU & GPU\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor AMD System Management Interface performance for optimized hardware management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [AMD SMI Exporter](https://github.com/amd/amd_smi_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [AMD SMI Exporter](https://github.com/amd/amd_smi_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-AMD_CPU_&_GPU",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-apicast",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"APIcast",link:"https://github.com/3scale/apicast",icon_filename:"apicast.png",categories:["data-collection.web-servers-and-proxies"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# APIcast\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor APIcast performance metrics to optimize API gateway operations and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [APIcast](https://github.com/3scale/apicast).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [APIcast](https://github.com/3scale/apicast) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-APIcast",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-aws_ec2",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"AWS EC2 Compute instances",link:"https://github.com/O1ahmad/aws_ec2_exporter",icon_filename:"aws-ec2.png",categories:["data-collection.cloud-and-devops"]},keywords:["cloud services","cloud computing","aws services"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# AWS EC2 Compute instances\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack AWS EC2 instances key metrics for optimized performance and cost management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [AWS EC2 Exporter](https://github.com/O1ahmad/aws_ec2_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [AWS EC2 Exporter](https://github.com/O1ahmad/aws_ec2_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-AWS_EC2_Compute_instances",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-aws_quota",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"AWS Quota",link:"https://github.com/emylincon/aws_quota_exporter",icon_filename:"aws.svg",categories:["data-collection.cloud-and-devops"]},keywords:["cloud services","cloud computing","aws services"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# AWS Quota\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor AWS service quotas for effective resource usage and cost management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [aws_quota_exporter](https://github.com/emylincon/aws_quota_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [aws_quota_exporter](https://github.com/emylincon/aws_quota_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-AWS_Quota",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-aws_rds",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"AWS RDS",link:"https://github.com/percona/rds_exporter",icon_filename:"aws-rds.svg",categories:["data-collection.databases"]},keywords:["cloud services","cloud computing","aws services"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# AWS RDS\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Amazon RDS (Relational Database Service) metrics for efficient cloud database management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [rds_exporter](https://github.com/percona/rds_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [rds_exporter](https://github.com/percona/rds_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-AWS_RDS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-alamos_fe2",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Alamos FE2 server",link:"https://github.com/codemonauts/prometheus-fe2-exporter",icon_filename:"alamos_fe2.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Alamos FE2 server\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on Alamos FE2 systems for improved performance and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Alamos FE2 Exporter](https://github.com/codemonauts/prometheus-fe2-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Alamos FE2 Exporter](https://github.com/codemonauts/prometheus-fe2-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Alamos_FE2_server",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-authlog",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"AuthLog",link:"https://github.com/woblerr/authlog_exporter",icon_filename:"linux.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# AuthLog\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor authentication logs for security insights and efficient access management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [AuthLog Exporter](https://github.com/woblerr/authlog_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [AuthLog Exporter](https://github.com/woblerr/authlog_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-AuthLog",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-bosh",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"BOSH",link:"https://github.com/bosh-prometheus/bosh_exporter",icon_filename:"bosh.png",categories:["data-collection.cloud-and-devops"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# BOSH\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on BOSH deployment metrics for improved cloud orchestration and resource management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [BOSH exporter](https://github.com/bosh-prometheus/bosh_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [BOSH exporter](https://github.com/bosh-prometheus/bosh_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-BOSH",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-bird",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Bird Routing Daemon",link:"https://github.com/czerwonk/bird_exporter",icon_filename:"bird.png",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Bird Routing Daemon\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on Bird Routing Daemon metrics for optimized network routing and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Bird Routing Daemon Exporter](https://github.com/czerwonk/bird_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Bird Routing Daemon Exporter](https://github.com/czerwonk/bird_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Bird_Routing_Daemon",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-blackbox",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Blackbox",link:"https://github.com/prometheus/blackbox_exporter",icon_filename:"prometheus.svg",categories:["data-collection.synthetic-testing"]},keywords:["blackbox"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Blackbox\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack external service availability and response times with Blackbox monitoring.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Blackbox exporter](https://github.com/prometheus/blackbox_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Blackbox exporter](https://github.com/prometheus/blackbox_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Blackbox",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-bungeecord",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"BungeeCord",link:"https://github.com/weihao/bungeecord-prometheus-exporter",icon_filename:"bungee.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# BungeeCord\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack BungeeCord proxy server metrics for efficient load balancing and performance management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [BungeeCord Prometheus Exporter](https://github.com/weihao/bungeecord-prometheus-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [BungeeCord Prometheus Exporter](https://github.com/weihao/bungeecord-prometheus-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-BungeeCord",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-celery",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Celery",link:"https://github.com/ZeitOnline/celery_redis_prometheus",icon_filename:"celery.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Celery\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on Celery task queue metrics for optimized task processing and resource management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Celery Exporter](https://github.com/ZeitOnline/celery_redis_prometheus).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Celery Exporter](https://github.com/ZeitOnline/celery_redis_prometheus) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Celery",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-chia",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Chia",link:"https://github.com/chia-network/chia-exporter",icon_filename:"chia.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Chia\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Chia blockchain metrics for optimized farming and resource allocation.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Chia Exporter](https://github.com/chia-network/chia-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Chia Exporter](https://github.com/chia-network/chia-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Chia",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-clm5ip",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Christ Elektronik CLM5IP power panel",link:"https://github.com/christmann/clm5ip_exporter/",icon_filename:"christelec.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Christ Elektronik CLM5IP power panel\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Christ Elektronik CLM5IP device metrics for efficient performance and diagnostics.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Christ Elektronik CLM5IP Exporter](https://github.com/christmann/clm5ip_exporter/).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Christ Elektronik CLM5IP Exporter](https://github.com/christmann/clm5ip_exporter/) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Christ_Elektronik_CLM5IP_power_panel",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-cilium_agent",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Cilium Agent",link:"https://github.com/cilium/cilium",icon_filename:"cilium.png",categories:["data-collection.containers-and-vms"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Cilium Agent\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on Cilium Agent metrics for optimized network security and connectivity.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Cilium Agent](https://github.com/cilium/cilium).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Cilium Agent](https://github.com/cilium/cilium) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Cilium_Agent",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-cilium_operator",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Cilium Operator",link:"https://github.com/cilium/cilium",icon_filename:"cilium.png",categories:["data-collection.containers-and-vms"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Cilium Operator\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Cilium Operator metrics for efficient Kubernetes network security management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Cilium Operator](https://github.com/cilium/cilium).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Cilium Operator](https://github.com/cilium/cilium) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Cilium_Operator",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-cilium_proxy",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Cilium Proxy",link:"https://github.com/cilium/proxy",icon_filename:"cilium.png",categories:["data-collection.containers-and-vms"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Cilium Proxy\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Cilium Proxy metrics for enhanced network security and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Cilium Proxy](https://github.com/cilium/proxy).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Cilium Proxy](https://github.com/cilium/proxy) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Cilium_Proxy",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-clamd",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"ClamAV daemon",link:"https://github.com/sergeymakinen/clamav_exporter",icon_filename:"clamav.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# ClamAV daemon\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack ClamAV antivirus metrics for enhanced threat detection and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [ClamAV daemon stats exporter](https://github.com/sergeymakinen/clamav_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [ClamAV daemon stats exporter](https://github.com/sergeymakinen/clamav_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-ClamAV_daemon",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-clamscan",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Clamscan results",link:"https://github.com/FortnoxAB/clamscan-exporter",icon_filename:"clamav.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Clamscan results\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor ClamAV scanning performance metrics for efficient malware detection and analysis.\n\n\nMetrics are gathered by periodically sending HTTP requests to [clamscan-exporter](https://github.com/FortnoxAB/clamscan-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [clamscan-exporter](https://github.com/FortnoxAB/clamscan-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Clamscan_results",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-clash",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Clash",link:"https://github.com/elonzh/clash_exporter",icon_filename:"clash.png",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Clash\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on Clash proxy server metrics for optimized network performance and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Clash exporter](https://github.com/elonzh/clash_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Clash exporter](https://github.com/elonzh/clash_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Clash",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-aws_cloudwatch",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"CloudWatch",link:"https://github.com/prometheus/cloudwatch_exporter",icon_filename:"aws-cloudwatch.png",categories:["data-collection.cloud-and-devops"]},keywords:["cloud services","cloud computing","scalability"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# CloudWatch\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor AWS CloudWatch metrics for comprehensive AWS resource management and performance optimization.\n\n\nMetrics are gathered by periodically sending HTTP requests to [CloudWatch exporter](https://github.com/prometheus/cloudwatch_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [CloudWatch exporter](https://github.com/prometheus/cloudwatch_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-CloudWatch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-cloud_foundry",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Cloud Foundry",link:"https://github.com/bosh-prometheus/cf_exporter",icon_filename:"cloud-foundry.svg",categories:["data-collection.cloud-and-devops"]},keywords:["cloud services","cloud computing","scalability"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Cloud Foundry\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Cloud Foundry platform metrics for optimized application deployment and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Cloud Foundry exporter](https://github.com/bosh-prometheus/cf_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Cloud Foundry exporter](https://github.com/bosh-prometheus/cf_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Cloud_Foundry",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-cloud_foundry_firebase",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Cloud Foundry Firehose",link:"https://github.com/bosh-prometheus/firehose_exporter",icon_filename:"cloud-foundry.svg",categories:["data-collection.cloud-and-devops"]},keywords:["cloud services","cloud computing","scalability"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Cloud Foundry Firehose\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Cloud Foundry Firehose metrics for comprehensive platform diagnostics and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Cloud Foundry Firehose exporter](https://github.com/bosh-prometheus/firehose_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Cloud Foundry Firehose exporter](https://github.com/bosh-prometheus/firehose_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Cloud_Foundry_Firehose",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-cmon",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"ClusterControl CMON",link:"https://github.com/severalnines/cmon_exporter",icon_filename:"cluster-control.svg",categories:["data-collection.databases"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# ClusterControl CMON\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack CMON metrics for Severalnines Cluster Control for efficient monitoring and management of database operations.\n\n\nMetrics are gathered by periodically sending HTTP requests to [CMON Exporter](https://github.com/severalnines/cmon_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [CMON Exporter](https://github.com/severalnines/cmon_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-ClusterControl_CMON",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-collectd",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Collectd",link:"https://github.com/prometheus/collectd_exporter",icon_filename:"collectd.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Collectd\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor system and application metrics with Collectd for comprehensive performance analysis.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Collectd exporter](https://github.com/prometheus/collectd_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Collectd exporter](https://github.com/prometheus/collectd_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Collectd",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-concourse",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Concourse",link:"https://concourse-ci.org",icon_filename:"concourse.png",categories:["data-collection.cloud-and-devops"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Concourse\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Concourse CI/CD pipeline metrics for optimized workflow management and deployment.\n\n\nMetrics are gathered by periodically sending HTTP requests to the Concourse built-in Prometheus exporter.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Configure built-in Prometheus exporter\n\nTo configure the built-in Prometheus exporter, follow the [official documentation](https://concourse-ci.org/metrics.html#configuring-metrics).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Concourse",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-ftbeerpi",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"CraftBeerPi",link:"https://github.com/jo-hannes/craftbeerpi_exporter",icon_filename:"craftbeer.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# CraftBeerPi\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on CraftBeerPi homebrewing metrics for optimized brewing process management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [CraftBeerPi exporter](https://github.com/jo-hannes/craftbeerpi_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [CraftBeerPi exporter](https://github.com/jo-hannes/craftbeerpi_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-CraftBeerPi",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-crowdsec",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Crowdsec",link:"https://docs.crowdsec.net/docs/observability/prometheus",icon_filename:"crowdsec.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Crowdsec\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Crowdsec security metrics for efficient threat detection and response.\n\n\nMetrics are gathered by periodically sending HTTP requests to the Crowdsec build-in Prometheus exporter.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Configure built-in Prometheus exporter\n\nTo configure the built-in Prometheus exporter, follow the [official documentation](https://docs.crowdsec.net/docs/observability/prometheus/).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Crowdsec",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-cryptowatch",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Cryptowatch",link:"https://github.com/nbarrientos/cryptowat_exporter",icon_filename:"cryptowatch.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Cryptowatch\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on Cryptowatch market data metrics for comprehensive cryptocurrency market analysis.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Cryptowat Exporter](https://github.com/nbarrientos/cryptowat_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Cryptowat Exporter](https://github.com/nbarrientos/cryptowat_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Cryptowatch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-dmarc",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"DMARC",link:"https://github.com/jgosmann/dmarc-metrics-exporter",icon_filename:"dmarc.png",categories:["data-collection.applications"]},keywords:["email authentication","policy","reporting"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# DMARC\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack DMARC email authentication metrics for improved email security and deliverability.\n\n\nMetrics are gathered by periodically sending HTTP requests to [dmarc-metrics-exporter](https://github.com/jgosmann/dmarc-metrics-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [dmarc-metrics-exporter](https://github.com/jgosmann/dmarc-metrics-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-DMARC",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-dnsbl",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"DNSBL",link:"https://github.com/Luzilla/dnsbl_exporter/",icon_filename:"dnsbl.png",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# DNSBL\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor DNSBL metrics for efficient domain reputation and security management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [dnsbl-exporter](https://github.com/Luzilla/dnsbl_exporter/).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [dnsbl-exporter](https://github.com/Luzilla/dnsbl_exporter/) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-DNSBL",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-discourse",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Discourse",link:"https://github.com/discourse/discourse-prometheus",icon_filename:"discourse.svg",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Discourse\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Discourse forum metrics for efficient community management and engagement.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Discourse Exporter](https://github.com/discourse/discourse-prometheus).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Discourse Exporter](https://github.com/discourse/discourse-prometheus) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Discourse",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-dutch_electricity_smart_meter",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Dutch Electricity Smart Meter",link:"https://github.com/TobiasDeBruijn/prometheus-p1-exporter",icon_filename:"dutch-electricity.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Dutch Electricity Smart Meter\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on Dutch smart meter P1 port metrics for efficient energy management and monitoring.\n\n\nMetrics are gathered by periodically sending HTTP requests to [P1Exporter - Dutch Electricity Smart Meter Exporter](https://github.com/TobiasDeBruijn/prometheus-p1-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [P1Exporter - Dutch Electricity Smart Meter Exporter](https://github.com/TobiasDeBruijn/prometheus-p1-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Dutch_Electricity_Smart_Meter",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-dynatrace",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Dynatrace",link:"https://github.com/Apside-TOP/dynatrace_exporter",icon_filename:"dynatrace.svg",categories:["data-collection.cloud-and-devops"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Dynatrace\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Dynatrace APM metrics for comprehensive application performance management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Dynatrace Exporter](https://github.com/Apside-TOP/dynatrace_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Dynatrace Exporter](https://github.com/Apside-TOP/dynatrace_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Dynatrace",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-eos_web",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"EOS",link:"https://eos-web.web.cern.ch/eos-web/",icon_filename:"eos.png",categories:["data-collection.storage"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# EOS\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor CERN EOS metrics for efficient storage management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [EOS exporter](https://github.com/cern-eos/eos_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [EOS exporter](https://github.com/cern-eos/eos_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-EOS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-elgato_keylight",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Elgato Key Light devices.",link:"https://github.com/mdlayher/keylight_exporter",icon_filename:"elgato.svg",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Elgato Key Light devices.\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on Elgato Key Light metrics for optimized lighting control and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Elgato Key Light exporter](https://github.com/mdlayher/keylight_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Elgato Key Light exporter](https://github.com/mdlayher/keylight_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Elgato_Key_Light_devices.",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-energomera",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Energomera smart power meters",link:"https://github.com/peak-load/energomera_exporter",icon_filename:"energomera.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Energomera smart power meters\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Energomera electricity meter metrics for efficient energy management and monitoring.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Energomera electricity meter exporter](https://github.com/peak-load/energomera_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [energomera-exporter Energomera electricity meter exporter](https://github.com/peak-load/energomera_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Energomera_smart_power_meters",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-frrouting",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"FRRouting",link:"https://github.com/tynany/frr_exporter",icon_filename:"frrouting.png",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# FRRouting\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Free Range Routing (FRR) metrics for optimized network routing and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [FRRouting Exporter](https://github.com/tynany/frr_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [FRRouting Exporter](https://github.com/tynany/frr_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-FRRouting",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-fastd",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Fastd",link:"https://github.com/freifunk-darmstadt/fastd-exporter",icon_filename:"fastd.png",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Fastd\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Fastd VPN metrics for efficient virtual private network management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Fastd Exporter](https://github.com/freifunk-darmstadt/fastd-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Fastd Exporter](https://github.com/freifunk-darmstadt/fastd-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Fastd",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-freebsd_nfs",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"FreeBSD NFS",link:"https://github.com/Axcient/freebsd-nfs-exporter",icon_filename:"freebsd.svg",categories:["data-collection.storage"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# FreeBSD NFS\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor FreeBSD Network File System metrics for efficient file sharing management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [FreeBSD NFS Exporter](https://github.com/Axcient/freebsd-nfs-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [FreeBSD NFS Exporter](https://github.com/Axcient/freebsd-nfs-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-FreeBSD_NFS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-freebsd_rctl",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"FreeBSD RCTL-RACCT",link:"https://github.com/yo000/rctl_exporter",icon_filename:"freebsd.svg",categories:["data-collection.operating-systems"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# FreeBSD RCTL-RACCT\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on FreeBSD Resource Container metrics for optimized resource management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [FreeBSD RCTL Exporter](https://github.com/yo000/rctl_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [FreeBSD RCTL Exporter](https://github.com/yo000/rctl_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-FreeBSD_RCTL-RACCT",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-freifunk",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Freifunk network",link:"https://github.com/xperimental/freifunk-exporter",icon_filename:"freifunk.png",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Freifunk network\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on Freifunk community network metrics for optimized network performance and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Freifunk Exporter](https://github.com/xperimental/freifunk-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Freifunk Exporter](https://github.com/xperimental/freifunk-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Freifunk_network",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-gcp_gce",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"GCP GCE",link:"https://github.com/O1ahmad/gcp-gce-exporter",icon_filename:"gcp-gce.svg",categories:["data-collection.cloud-and-devops"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# GCP GCE\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on Google Cloud Platform Compute Engine metrics for efficient cloud resource management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [GCP GCE Exporter](https://github.com/O1ahmad/gcp-gce-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [GCP GCE Exporter](https://github.com/O1ahmad/gcp-gce-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-GCP_GCE",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-enclosure",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Generic storage enclosure tool",link:"https://github.com/Gandi/jbod-rs",icon_filename:"storage-enclosure.svg",categories:["data-collection.storage"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Generic storage enclosure tool\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor storage enclosure metrics for efficient storage device management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [jbod - Generic storage enclosure tool](https://github.com/Gandi/jbod-rs).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [jbod - Generic storage enclosure tool](https://github.com/Gandi/jbod-rs) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Generic_storage_enclosure_tool",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-github_ratelimit",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"GitHub API rate limit",link:"https://github.com/lunarway/github-ratelimit-exporter",icon_filename:"github.svg",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# GitHub API rate limit\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor GitHub API rate limit metrics for efficient\nAPI usage and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [GitHub API rate limit Exporter](https://github.com/lunarway/github-ratelimit-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [GitHub API rate limit Exporter](https://github.com/lunarway/github-ratelimit-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-GitHub_API_rate_limit",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-github_repo",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"GitHub repository",link:"https://github.com/githubexporter/github-exporter",icon_filename:"github.svg",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# GitHub repository\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack GitHub repository metrics for optimized project and user analytics monitoring.\n\n\nMetrics are gathered by periodically sending HTTP requests to [GitHub Exporter](https://github.com/githubexporter/github-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [GitHub Exporter](https://github.com/githubexporter/github-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-GitHub_repository",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-gitlab_runner",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"GitLab Runner",link:"https://gitlab.com/gitlab-org/gitlab-runner",icon_filename:"gitlab.png",categories:["data-collection.cloud-and-devops"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# GitLab Runner\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on GitLab CI/CD job metrics for efficient development and deployment management.\n\n\nMetrics are gathered by periodically sending HTTP requests to GitLab built-in Prometheus exporter.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Configure built-in Prometheus exporter\n\nTo configure the built-in Prometheus exporter, follow the [official documentation](https://docs.gitlab.com/runner/monitoring/#configuration-of-the-metrics-http-server).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-GitLab_Runner",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-gobetween",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Gobetween",link:"https://github.com/yyyar/gobetween",icon_filename:"gobetween.svg",categories:["data-collection.web-servers-and-proxies"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Gobetween\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Gobetween load balancer metrics for optimized network traffic management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to Gobetween built-in Prometheus exporter.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Gobetween",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-gcp",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Google Cloud Platform",link:"https://github.com/DazWilkin/gcp-exporter",icon_filename:"gcp.png",categories:["data-collection.cloud-and-devops"]},keywords:["cloud services","cloud computing","scalability"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Google Cloud Platform\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Google Cloud Platform metrics for comprehensive cloud resource management and performance optimization.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Google Cloud Platform Exporter](https://github.com/DazWilkin/gcp-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Google Cloud Platform Exporter](https://github.com/DazWilkin/gcp-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Google_Cloud_Platform",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-google_pagespeed",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Google Pagespeed",link:"https://github.com/foomo/pagespeed_exporter",icon_filename:"google.svg",categories:["data-collection.applications"]},keywords:["cloud services","cloud computing","google cloud services"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Google Pagespeed\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on Google PageSpeed Insights performance metrics for efficient web page optimization and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Pagespeed exporter](https://github.com/foomo/pagespeed_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Pagespeed exporter](https://github.com/foomo/pagespeed_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Google_Pagespeed",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-gcp_stackdriver",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Google Stackdriver",link:"https://github.com/prometheus-community/stackdriver_exporter",icon_filename:"gcp-stackdriver.svg",categories:["data-collection.cloud-and-devops"]},keywords:["cloud services","cloud computing","google cloud services"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Google Stackdriver\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Google Stackdriver monitoring metrics for optimized cloud performance and diagnostics.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Google Stackdriver exporter](https://github.com/prometheus-community/stackdriver_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Google Stackdriver exporter](https://github.com/prometheus-community/stackdriver_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Google_Stackdriver",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-grafana",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Grafana",link:"https://grafana.com/",icon_filename:"grafana.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Grafana\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on Grafana dashboard and visualization metrics for optimized monitoring and data analysis.\n\n\nMetrics are gathered by periodically sending HTTP requests to Grafana built-in Prometheus exporter.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Grafana",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-graylog",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Graylog Server",link:"https://github.com/Graylog2/graylog2-server/",icon_filename:"graylog.svg",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Graylog Server\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Graylog server metrics for efficient log management and analysis.\n\n\nMetrics are gathered by periodically sending HTTP requests to Graylog built-in Prometheus exporter.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Configure built-in Prometheus exporter\n\nTo configure the built-in Prometheus exporter, follow the [official documentation](https://go2docs.graylog.org/5-0/interacting_with_your_log_data/metrics.html#PrometheusMetricExporting).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Graylog_Server",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-hana",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"HANA",link:"https://github.com/jenningsloy318/hana_exporter",icon_filename:"sap.svg",categories:["data-collection.databases"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# HANA\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack SAP HANA database metrics for efficient data storage and query performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [HANA Exporter](https://github.com/jenningsloy318/hana_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [HANA Exporter](https://github.com/jenningsloy318/hana_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-HANA",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-halon",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Halon",link:"https://github.com/tobiasbp/halon_exporter",icon_filename:"halon.svg",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Halon\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Halon email security and delivery metrics for optimized email management and protection.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Halon exporter](https://github.com/tobiasbp/halon_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Halon exporter](https://github.com/tobiasbp/halon_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Halon",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-hitron_coda",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Hitron CODA Cable Modem",link:"https://github.com/hairyhenderson/hitron_coda_exporter",icon_filename:"hitron.svg",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Hitron CODA Cable Modem\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Hitron CODA cable modem metrics for optimized internet connectivity and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Hitron CODA Cable Modem Exporter](https://github.com/hairyhenderson/hitron_coda_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Hitron CODA Cable Modem Exporter](https://github.com/hairyhenderson/hitron_coda_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Hitron_CODA_Cable_Modem",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-homebridge",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Homebridge",link:"https://github.com/lstrojny/homebridge-prometheus-exporter",icon_filename:"homebridge.svg",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Homebridge\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Homebridge smart home metrics for efficient home automation management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Homebridge Prometheus Exporter](https://github.com/lstrojny/homebridge-prometheus-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Homebridge Prometheus Exporter](https://github.com/lstrojny/homebridge-prometheus-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Homebridge",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-homey",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Homey",link:"https://github.com/rickardp/homey-prometheus-exporter",icon_filename:"homey.svg",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Homey\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Homey smart home controller metrics for efficient home automation and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Homey Exporter](https://github.com/rickardp/homey-prometheus-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Homey Exporter](https://github.com/rickardp/homey-prometheus-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Homey",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-honeypot",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Honeypot",link:"https://github.com/Intrinsec/honeypot_exporter",icon_filename:"intrinsec.svg",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Honeypot\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor honeypot metrics for efficient threat detection and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Intrinsec honeypot_exporter](https://github.com/Intrinsec/honeypot_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Intrinsec honeypot_exporter](https://github.com/Intrinsec/honeypot_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Honeypot",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-hubble",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Hubble",link:"https://github.com/cilium/hubble",icon_filename:"hubble.png",categories:["data-collection.cloud-and-devops"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Hubble\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Hubble network observability metrics for efficient network visibility and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to Hubble built-in Prometheus exporter.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Configure built-in Prometheus exporter\n\nTo configure the built-in Prometheus exporter, follow the [official documentation](https://docs.cilium.io/en/stable/observability/metrics/#hubble-metrics).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Hubble",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-ibm_aix_njmon",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"IBM AIX systems Njmon",link:"https://github.com/crooks/njmon_exporter",icon_filename:"ibm.svg",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# IBM AIX systems Njmon\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on NJmon system performance monitoring metrics for efficient IT infrastructure management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [NJmon](https://github.com/crooks/njmon_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [NJmon](https://github.com/crooks/njmon_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-IBM_AIX_systems_Njmon",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-ibm_cex",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"IBM CryptoExpress (CEX) cards",link:"https://github.com/ibm-s390-cloud/k8s-cex-dev-plugin",icon_filename:"ibm.svg",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# IBM CryptoExpress (CEX) cards\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack IBM Z Crypto Express device metrics for optimized cryptographic performance and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [IBM Z CEX Device Plugin Prometheus Exporter](https://github.com/ibm-s390-cloud/k8s-cex-dev-plugin).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [IBM Z CEX Device Plugin Prometheus Exporter](https://github.com/ibm-s390-cloud/k8s-cex-dev-plugin) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-IBM_CryptoExpress_(CEX)_cards",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-ibm_mq",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"IBM MQ",link:"https://github.com/agebhar1/mq_exporter",icon_filename:"ibm.svg",categories:["data-collection.databases"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# IBM MQ\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on IBM MQ message queue metrics for efficient message transport and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [MQ Exporter](https://github.com/agebhar1/mq_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [MQ Exporter](https://github.com/agebhar1/mq_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-IBM_MQ",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-ibm_spectrum",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"IBM Spectrum",link:"https://github.com/topine/ibm-spectrum-exporter",icon_filename:"ibm.svg",categories:["data-collection.storage"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# IBM Spectrum\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor IBM Spectrum storage metrics for efficient data management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [IBM Spectrum Exporter](https://github.com/topine/ibm-spectrum-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [IBM Spectrum Exporter](https://github.com/topine/ibm-spectrum-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-IBM_Spectrum",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-ibm_spectrum_virtualize",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"IBM Spectrum Virtualize",link:"https://github.com/bluecmd/spectrum_virtualize_exporter",icon_filename:"ibm.svg",categories:["data-collection.storage"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# IBM Spectrum Virtualize\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor IBM Spectrum Virtualize metrics for efficient storage virtualization and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [spectrum_virtualize_exporter](https://github.com/bluecmd/spectrum_virtualize_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [spectrum_virtualize_exporter](https://github.com/bluecmd/spectrum_virtualize_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-IBM_Spectrum_Virtualize",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-ibm_zhmc",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"IBM Z Hardware Management Console",link:"https://github.com/zhmcclient/zhmc-prometheus-exporter",icon_filename:"ibm.svg",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# IBM Z Hardware Management Console\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor IBM Z Hardware Management Console metrics for efficient mainframe management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [IBM Z HMC Exporter](https://github.com/zhmcclient/zhmc-prometheus-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [IBM Z HMC Exporter](https://github.com/zhmcclient/zhmc-prometheus-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-IBM_Z_Hardware_Management_Console",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-influxdb",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"InfluxDB",link:"https://github.com/prometheus/influxdb_exporter",icon_filename:"influxdb.svg",categories:["data-collection.databases"]},keywords:["database","dbms","data storage"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# InfluxDB\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor InfluxDB time-series database metrics for efficient data storage and query performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [InfluxDB exporter](https://github.com/prometheus/influxdb_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [InfluxDB exporter](https://github.com/prometheus/influxdb_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-InfluxDB",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-jmx",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"JMX",link:"https://github.com/prometheus/jmx_exporter",icon_filename:"java.svg",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# JMX\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Java Management Extensions (JMX) metrics for efficient Java application management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [JMX Exporter](https://github.com/prometheus/jmx_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [JMX Exporter](https://github.com/prometheus/jmx_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-JMX",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-jarvis",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Jarvis Standing Desk",link:"https://github.com/hairyhenderson/jarvis_exporter/",icon_filename:"jarvis.jpg",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Jarvis Standing Desk\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Jarvis standing desk usage metrics for efficient workspace ergonomics and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Jarvis Standing Desk Exporter](https://github.com/hairyhenderson/jarvis_exporter/).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Jarvis Standing Desk Exporter](https://github.com/hairyhenderson/jarvis_exporter/) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Jarvis_Standing_Desk",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-jenkins",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Jenkins",link:"https://www.jenkins.io/",icon_filename:"jenkins.svg",categories:["data-collection.cloud-and-devops"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Jenkins\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Jenkins continuous integration server metrics for efficient development and build management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Jenkins exporter](https://github.com/simplesurance/jenkins-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Jenkins exporter](https://github.com/simplesurance/jenkins-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Jenkins",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-kafka",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Kafka",link:"https://github.com/danielqsj/kafka_exporter/",icon_filename:"kafka.svg",categories:["data-collection.databases"]},keywords:["big data","stream processing","message broker"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Kafka\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on Kafka message queue metrics for optimized data streaming and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Kafka Exporter](https://github.com/danielqsj/kafka_exporter/).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Kafka Exporter](https://github.com/danielqsj/kafka_exporter/) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Kafka",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-kafka_consumer_lag",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Kafka Consumer Lag",link:"https://github.com/omarsmak/kafka-consumer-lag-monitoring",icon_filename:"kafka.svg",categories:["data-collection.databases"]},keywords:["big data","stream processing","message broker"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Kafka Consumer Lag\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Kafka consumer lag metrics for efficient message queue management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Kafka Consumer Lag Monitoring](https://github.com/omarsmak/kafka-consumer-lag-monitoring).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Kafka Consumer Lag Monitoring](https://github.com/omarsmak/kafka-consumer-lag-monitoring) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Kafka_Consumer_Lag",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-kafka_zookeeper",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Kafka ZooKeeper",link:"https://github.com/cloudflare/kafka_zookeeper_exporter",icon_filename:"kafka.svg",categories:["data-collection.databases"]},keywords:["big data","stream processing","message broker"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Kafka ZooKeeper\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Kafka ZooKeeper metrics for optimized distributed coordination and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Kafka ZooKeeper Exporter](https://github.com/cloudflare/kafka_zookeeper_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Kafka ZooKeeper Exporter](https://github.com/cloudflare/kafka_zookeeper_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Kafka_ZooKeeper",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-kannel",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Kannel",link:"https://github.com/apostvav/kannel_exporter",icon_filename:"kannel.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Kannel\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on Kannel SMS gateway and WAP gateway metrics for efficient mobile communication and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Kannel Exporter](https://github.com/apostvav/kannel_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Kannel Exporter](https://github.com/apostvav/kannel_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Kannel",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-keepalived",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Keepalived",link:"https://github.com/gen2brain/keepalived_exporter",icon_filename:"Keepalived.png",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Keepalived\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Keepalived metrics for efficient high-availability and load balancing management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Keepalived Exporter](https://github.com/gen2brain/keepalived_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Keepalived Exporter](https://github.com/gen2brain/keepalived_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Keepalived",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-linode",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Linode",link:"https://github.com/DazWilkin/linode-exporter",icon_filename:"linode.svg",categories:["data-collection.cloud-and-devops"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Linode\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Linode cloud hosting metrics for efficient virtual server management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Linode Exporter](https://github.com/DazWilkin/linode-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Linode Exporter](https://github.com/DazWilkin/linode-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Linode",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-lustre",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Lustre metadata",link:"https://github.com/GSI-HPC/prometheus-cluster-exporter",icon_filename:"lustre.png",categories:["data-collection.storage"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Lustre metadata\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on Lustre clustered file system for efficient management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Cluster Exporter](https://github.com/GSI-HPC/prometheus-cluster-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Cluster Exporter](https://github.com/GSI-HPC/prometheus-cluster-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Lustre_metadata",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-lynis",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Lynis audit reports",link:"https://github.com/MauveSoftware/lynis_exporter",icon_filename:"lynis.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Lynis audit reports\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Lynis security auditing tool metrics for efficient system security and compliance management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [lynis_exporter](https://github.com/MauveSoftware/lynis_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [lynis_exporter](https://github.com/MauveSoftware/lynis_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Lynis_audit_reports",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-mqtt_blackbox",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"MQTT Blackbox",link:"https://github.com/inovex/mqtt_blackbox_exporter",icon_filename:"mqtt.svg",categories:["data-collection.synthetic-testing"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# MQTT Blackbox\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack MQTT message transport performance using blackbox testing methods.\n\n\nMetrics are gathered by periodically sending HTTP requests to [MQTT Blackbox Exporter](https://github.com/inovex/mqtt_blackbox_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [MQTT Blackbox Exporter](https://github.com/inovex/mqtt_blackbox_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-MQTT_Blackbox",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-meilisearch",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Meilisearch",link:"https://github.com/scottaglia/meilisearch_exporter",icon_filename:"meilisearch.svg",categories:["data-collection.databases"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Meilisearch\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Meilisearch search engine metrics for efficient search performance and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Meilisearch Exporter](https://github.com/scottaglia/meilisearch_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Meilisearch Exporter](https://github.com/scottaglia/meilisearch_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Meilisearch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-mesos",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Mesos",link:"http://github.com/mesosphere/mesos_exporter",icon_filename:"mesos.svg",categories:["data-collection.containers-and-vms"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Mesos\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Apache Mesos cluster manager metrics for efficient resource management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Mesos exporter](http://github.com/mesosphere/mesos_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Mesos exporter](http://github.com/mesosphere/mesos_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Mesos",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-minecraft",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Minecraft",link:"https://github.com/sladkoff/minecraft-prometheus-exporter",icon_filename:"minecraft.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Minecraft\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Minecraft server metrics for efficient game server management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Minecraft Exporter](https://github.com/sladkoff/minecraft-prometheus-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Minecraft Exporter](https://github.com/sladkoff/minecraft-prometheus-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Minecraft",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-modbus_rtu",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Modbus protocol",link:"https://github.com/dernasherbrezon/modbusrtu_exporter",icon_filename:"modbus.svg",categories:["data-collection.hardware-and-sensors"]},keywords:["database","dbms","data storage"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Modbus protocol\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Modbus RTU protocol metrics for efficient industrial automation and control performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [modbusrtu_exporter](https://github.com/dernasherbrezon/modbusrtu_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [modbusrtu_exporter](https://github.com/dernasherbrezon/modbusrtu_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Modbus_protocol",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-mogilefs",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"MogileFS",link:"https://github.com/KKBOX/mogilefs-exporter",icon_filename:"filesystem.svg",categories:["data-collection.storage"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# MogileFS\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor MogileFS distributed file system metrics for efficient storage management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [MogileFS Exporter](https://github.com/KKBOX/mogilefs-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [MogileFS Exporter](https://github.com/KKBOX/mogilefs-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-MogileFS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-nrpe",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"NRPE daemon",link:"https://github.com/canonical/nrpe_exporter",icon_filename:"nrpelinux.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# NRPE daemon\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Nagios Remote Plugin Executor (NRPE) metrics for efficient system and network monitoring.\n\n\nMetrics are gathered by periodically sending HTTP requests to [NRPE exporter](https://github.com/canonical/nrpe_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [NRPE exporter](https://github.com/canonical/nrpe_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-NRPE_daemon",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-nature_remo",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Nature Remo E lite devices",link:"https://github.com/kenfdev/remo-exporter",icon_filename:"nature-remo.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Nature Remo E lite devices\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Nature Remo E series smart home device metrics for efficient home automation and energy management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Nature Remo E series Exporter](https://github.com/kenfdev/remo-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Nature Remo E series Exporter](https://github.com/kenfdev/remo-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Nature_Remo_E_lite_devices",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-netapp_solidfire",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"NetApp Solidfire",link:"https://github.com/mjavier2k/solidfire-exporter",icon_filename:"netapp.svg",categories:["data-collection.storage"]},keywords:["network monitoring","network performance","traffic analysis"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# NetApp Solidfire\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack NetApp Solidfire storage system metrics for efficient data storage management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [NetApp Solidfire Exporter](https://github.com/mjavier2k/solidfire-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [NetApp Solidfire Exporter](https://github.com/mjavier2k/solidfire-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-NetApp_Solidfire",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-netapp_ontap",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Netapp ONTAP API",link:"https://github.com/sapcc/netapp-api-exporter",icon_filename:"netapp.svg",categories:["data-collection.storage"]},keywords:["network monitoring","network performance","traffic analysis"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Netapp ONTAP API\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on NetApp ONTAP storage system metrics for efficient data storage management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Netapp ONTAP API Exporter](https://github.com/sapcc/netapp-api-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Netapp ONTAP API Exporter](https://github.com/sapcc/netapp-api-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Netapp_ONTAP_API",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-netatmo",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Netatmo sensors",link:"https://github.com/xperimental/netatmo-exporter",icon_filename:"netatmo.svg",categories:["data-collection.hardware-and-sensors"]},keywords:["network monitoring","network performance","traffic analysis"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Netatmo sensors\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on Netatmo smart home device metrics for efficient home automation and energy management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Netatmo exporter](https://github.com/xperimental/netatmo-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Netatmo exporter](https://github.com/xperimental/netatmo-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Netatmo_sensors",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-nextdns",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"NextDNS",link:"https://github.com/raylas/nextdns-exporter",icon_filename:"nextdns.png",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# NextDNS\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack NextDNS DNS resolver and security platform metrics for efficient DNS management and security.\n\n\nMetrics are gathered by periodically sending HTTP requests to [nextdns-exporter](https://github.com/raylas/nextdns-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [nextdns-exporter](https://github.com/raylas/nextdns-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-NextDNS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-nextcloud",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Nextcloud servers",link:"https://github.com/xperimental/nextcloud-exporter",icon_filename:"nextcloud.png",categories:["data-collection.applications"]},keywords:["cloud services","cloud computing","scalability"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Nextcloud servers\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on Nextcloud cloud storage metrics for efficient file hosting and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Nextcloud exporter](https://github.com/xperimental/nextcloud-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Nextcloud exporter](https://github.com/xperimental/nextcloud-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Nextcloud_servers",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-obs_studio",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"OBS Studio",link:"https://github.com/lukegb/obs_studio_exporter",icon_filename:"obs-studio.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# OBS Studio\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack OBS Studio live streaming and recording software metrics for efficient video production and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [OBS Studio Exporter](https://github.com/lukegb/obs_studio_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [OBS Studio Exporter](https://github.com/lukegb/obs_studio_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-OBS_Studio",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-openrc",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"OpenRC",link:"https://git.sr.ht/~tomleb/openrc-exporter",icon_filename:"linux.png",categories:["data-collection.operating-systems"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# OpenRC\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on OpenRC init system metrics for efficient system startup and service management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [openrc-exporter](https://git.sr.ht/~tomleb/openrc-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [openrc-exporter](https://git.sr.ht/~tomleb/openrc-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-OpenRC",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-openroadm",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"OpenROADM devices",link:"https://github.com/utdal/openroadm_exporter",icon_filename:"openroadm.png",categories:["data-collection.networking"]},keywords:["network monitoring","network performance","traffic analysis"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# OpenROADM devices\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor OpenROADM optical transport network metrics using the NETCONF protocol for efficient network management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [OpenROADM NETCONF Exporter WIP](https://github.com/utdal/openroadm_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [OpenROADM NETCONF Exporter WIP](https://github.com/utdal/openroadm_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-OpenROADM_devices",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-openweathermap",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"OpenWeatherMap",link:"https://github.com/billykwooten/openweather-exporter",icon_filename:"openweather.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# OpenWeatherMap\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack OpenWeatherMap weather data and air pollution metrics for efficient environmental monitoring and analysis.\n\n\nMetrics are gathered by periodically sending HTTP requests to [OpenWeatherMap Exporter](https://github.com/billykwooten/openweather-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [OpenWeatherMap Exporter](https://github.com/billykwooten/openweather-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-OpenWeatherMap",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-openvswitch",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Open vSwitch",link:"https://github.com/digitalocean/openvswitch_exporter",icon_filename:"ovs.png",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Open vSwitch\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on Open vSwitch software-defined networking metrics for efficient network virtualization and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Open vSwitch Exporter](https://github.com/digitalocean/openvswitch_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Open vSwitch Exporter](https://github.com/digitalocean/openvswitch_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Open_vSwitch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-patroni",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Patroni",link:"https://github.com/gopaytech/patroni_exporter",icon_filename:"patroni.png",categories:["data-collection.databases"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Patroni\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on Patroni PostgreSQL high-availability metrics for efficient database management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Patroni Exporter](https://github.com/gopaytech/patroni_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Patroni Exporter](https://github.com/gopaytech/patroni_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Patroni",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-pws",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Personal Weather Station",link:"https://github.com/JohnOrthoefer/pws-exporter",icon_filename:"wunderground.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Personal Weather Station\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack personal weather station metrics for efficient weather monitoring and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Personal Weather Station Exporter](https://github.com/JohnOrthoefer/pws-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Personal Weather Station Exporter](https://github.com/JohnOrthoefer/pws-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Personal_Weather_Station",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-pgpool2",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Pgpool-II",link:"https://github.com/pgpool/pgpool2_exporter",icon_filename:"pgpool2.png",categories:["data-collection.databases"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Pgpool-II\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Pgpool-II PostgreSQL middleware metrics for efficient database connection management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Pgpool-II Exporter](https://github.com/pgpool/pgpool2_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Pgpool-II Exporter](https://github.com/pgpool/pgpool2_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Pgpool-II",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-philips_hue",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Philips Hue",link:"https://github.com/aexel90/hue_exporter",icon_filename:"hue.svg",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Philips Hue\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on Philips Hue smart lighting metrics for efficient home automation and energy management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Philips Hue Exporter](https://github.com/aexel90/hue_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Philips Hue Exporter](https://github.com/aexel90/hue_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Philips_Hue",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-pimoroni_enviro_plus",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Pimoroni Enviro+",link:"https://github.com/terradolor/prometheus-enviro-exporter",icon_filename:"pimorino.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Pimoroni Enviro+\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Pimoroni Enviro+ air quality and environmental metrics for efficient environmental monitoring and analysis.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Pimoroni Enviro+ Exporter](https://github.com/terradolor/prometheus-enviro-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Pimoroni Enviro+ Exporter](https://github.com/terradolor/prometheus-enviro-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Pimoroni_Enviro+",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-podman",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Podman",link:"https://github.com/containers/prometheus-podman-exporter",icon_filename:"podman.png",categories:["data-collection.containers-and-vms"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Podman\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on Podman container runtime metrics for efficient container management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [PODMAN exporter](https://github.com/containers/prometheus-podman-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [PODMAN exporter](https://github.com/containers/prometheus-podman-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Podman",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-powerpal",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Powerpal devices",link:"https://github.com/aashley/powerpal_exporter",icon_filename:"powerpal.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Powerpal devices\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on Powerpal smart meter metrics for efficient energy management and monitoring.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Powerpal Exporter](https://github.com/aashley/powerpal_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Powerpal Exporter](https://github.com/aashley/powerpal_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Powerpal_devices",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-proftpd",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"ProFTPD",link:"https://github.com/transnano/proftpd_exporter",icon_filename:"proftpd.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# ProFTPD\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor ProFTPD FTP server metrics for efficient file transfer and server performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [ProFTPD Exporter](https://github.com/transnano/proftpd_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [ProFTPD Exporter](https://github.com/transnano/proftpd_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-ProFTPD",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-generic",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Prometheus endpoint",link:"https://prometheus.io/",icon_filename:"prometheus.svg",categories:["data-collection.applications"]},keywords:["prometheus","openmetrics"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Prometheus endpoint\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nThis generic Prometheus collector gathers metrics from any [`Prometheus`](https://prometheus.io/) endpoints.\n\n\nIt collects metrics by periodically sending HTTP requests to the target instance.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Prometheus_endpoint",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-proxmox",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Proxmox VE",link:"https://github.com/prometheus-pve/prometheus-pve-exporter",icon_filename:"proxmox.png",categories:["data-collection.containers-and-vms"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Proxmox VE\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on Proxmox Virtual Environment metrics for efficient virtualization and container management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Proxmox VE Exporter](https://github.com/prometheus-pve/prometheus-pve-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Proxmox VE Exporter](https://github.com/prometheus-pve/prometheus-pve-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Proxmox_VE",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-radius",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"RADIUS",link:"https://github.com/devon-mar/radius-exporter",icon_filename:"radius.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# RADIUS\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on RADIUS (Remote Authentication Dial-In User Service) protocol metrics for efficient authentication and access management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [RADIUS exporter](https://github.com/devon-mar/radius-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [RADIUS exporter](https://github.com/devon-mar/radius-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-RADIUS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-ripe_atlas",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"RIPE Atlas",link:"https://github.com/czerwonk/atlas_exporter",icon_filename:"ripe.png",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# RIPE Atlas\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on RIPE Atlas Internet measurement platform metrics for efficient network monitoring and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [RIPE Atlas Exporter](https://github.com/czerwonk/atlas_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [RIPE Atlas Exporter](https://github.com/czerwonk/atlas_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-RIPE_Atlas",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-radio_thermostat",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Radio Thermostat",link:"https://github.com/andrewlow/radio-thermostat-exporter",icon_filename:"radiots.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Radio Thermostat\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Radio Thermostat smart thermostat metrics for efficient home automation and energy management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Radio Thermostat Exporter](https://github.com/andrewlow/radio-thermostat-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Radio Thermostat Exporter](https://github.com/andrewlow/radio-thermostat-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Radio_Thermostat",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-raritan_pdu",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Raritan PDU",link:"https://github.com/psyinfra/prometheus-raritan-pdu-exporter",icon_filename:"raritan.svg",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Raritan PDU\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Raritan Power Distribution Unit (PDU) metrics for efficient power management and monitoring.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Raritan PDU Exporter](https://github.com/psyinfra/prometheus-raritan-pdu-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Raritan PDU Exporter](https://github.com/psyinfra/prometheus-raritan-pdu-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Raritan_PDU",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-redis_queue",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Redis Queue",link:"https://github.com/mdawar/rq-exporter",icon_filename:"rq.png",categories:["data-collection.databases"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Redis Queue\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Python RQ (Redis Queue) job queue metrics for efficient task management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Python RQ Exporter](https://github.com/mdawar/rq-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Python RQ Exporter](https://github.com/mdawar/rq-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Redis_Queue",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-sabnzbd",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"SABnzbd",link:"https://github.com/msroest/sabnzbd_exporter",icon_filename:"sabnzbd.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# SABnzbd\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor SABnzbd Usenet client metrics for efficient file downloads and resource management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [SABnzbd Exporter](https://github.com/msroest/sabnzbd_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [SABnzbd Exporter](https://github.com/msroest/sabnzbd_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-SABnzbd",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-sma_inverter",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"SMA Inverters",link:"https://github.com/dr0ps/sma_inverter_exporter",icon_filename:"sma.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# SMA Inverters\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor SMA solar inverter metrics for efficient solar energy management and monitoring.\n\n\nMetrics are gathered by periodically sending HTTP requests to [sma-exporter](https://github.com/dr0ps/sma_inverter_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [sma-exporter](https://github.com/dr0ps/sma_inverter_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-SMA_Inverters",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-sonic",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"SONiC NOS",link:"https://github.com/kamelnetworks/sonic_exporter",icon_filename:"sonic.png",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# SONiC NOS\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on Software for Open Networking in the Cloud (SONiC) metrics for efficient network switch management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [SONiC Exporter](https://github.com/kamelnetworks/sonic_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [SONiC Exporter](https://github.com/kamelnetworks/sonic_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-SONiC_NOS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-salicru_eqx",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Salicru EQX inverter",link:"https://github.com/alejandroscf/prometheus_salicru_exporter",icon_filename:"salicru.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Salicru EQX inverter\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on Salicru EQX solar inverter metrics for efficient solar energy management and monitoring.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Salicru EQX inverter](https://github.com/alejandroscf/prometheus_salicru_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Salicru EQX inverter](https://github.com/alejandroscf/prometheus_salicru_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Salicru_EQX_inverter",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-scylladb",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"ScyllaDB",link:"https://www.scylladb.com/",icon_filename:"scylladb.svg",categories:["data-collection.databases"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# ScyllaDB\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack ScyllaDB NoSQL database metrics for efficient database management and performance with Netdata's Prometheus integration.\n\n\nMetrics are gathered by periodically sending HTTP requests to the ScyllaDB built-in Prometheus exporter.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-ScyllaDB",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-sense_energy",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Sense Energy",link:"https://github.com/ejsuncy/sense_energy_prometheus_exporter",icon_filename:"sense.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Sense Energy\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on Sense Energy smart meter metrics for efficient energy management and monitoring.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Sense Energy exporter](https://github.com/ejsuncy/sense_energy_prometheus_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Sense Energy exporter](https://github.com/ejsuncy/sense_energy_prometheus_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Sense_Energy",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-shelly",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Shelly humidity sensor",link:"https://github.com/aexel90/shelly_exporter",icon_filename:"shelly.jpg",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Shelly humidity sensor\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Shelly smart home device metrics for efficient home automation and energy management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Shelly Exporter](https://github.com/aexel90/shelly_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Shelly Exporter](https://github.com/aexel90/shelly_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Shelly_humidity_sensor",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-s7_plc",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Siemens S7 PLC",link:"https://github.com/MarcusCalidus/s7-plc-exporter",icon_filename:"siemens.svg",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Siemens S7 PLC\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Siemens S7 Programmable Logic Controller (PLC) metrics for efficient industrial automation and control.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Siemens S7 PLC exporter](https://github.com/MarcusCalidus/s7-plc-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Siemens S7 PLC exporter](https://github.com/MarcusCalidus/s7-plc-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Siemens_S7_PLC",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-site24x7",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Site 24x7",link:"https://github.com/svenstaro/site24x7_exporter",icon_filename:"site24x7.svg",categories:["data-collection.synthetic-testing"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Site 24x7\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Site24x7 website and infrastructure monitoring metrics for efficient performance tracking and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [site24x7 Exporter](https://github.com/svenstaro/site24x7_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [site24x7 Exporter](https://github.com/svenstaro/site24x7_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Site_24x7",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-slurm",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Slurm",link:"https://github.com/SckyzO/slurm_exporter",icon_filename:"slurm.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Slurm\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Slurm workload manager metrics for efficient high-performance computing (HPC) and cluster management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [slurm exporter](https://github.com/SckyzO/slurm_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [slurm exporter](https://github.com/SckyzO/slurm_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Slurm",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-sml",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Smart meters SML",link:"https://github.com/mweinelt/sml-exporter",icon_filename:"sml.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Smart meters SML\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Smart Message Language (SML) metrics for efficient smart metering and energy management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [SML Exporter](https://github.com/mweinelt/sml-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [SML Exporter](https://github.com/mweinelt/sml-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Smart_meters_SML",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-softether",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"SoftEther VPN Server",link:"https://github.com/dalance/softether_exporter",icon_filename:"softether.svg",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# SoftEther VPN Server\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor SoftEther VPN Server metrics for efficient virtual private network (VPN) management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [SoftEther Exporter](https://github.com/dalance/softether_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [SoftEther Exporter](https://github.com/dalance/softether_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-SoftEther_VPN_Server",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-lsx",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Solar logging stick",link:"https://gitlab.com/bhavin192/lsx-exporter",icon_filename:"solar.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Solar logging stick\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor solar energy metrics using a solar logging stick for efficient solar energy management and monitoring.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Solar logging stick exporter](https://gitlab.com/bhavin192/lsx-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Solar logging stick exporter](https://gitlab.com/bhavin192/lsx-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Solar_logging_stick",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-solis",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Solis Ginlong 5G inverters",link:"https://github.com/candlerb/solis_exporter",icon_filename:"solis.jpg",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Solis Ginlong 5G inverters\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Solis solar inverter metrics for efficient solar energy management and monitoring.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Solis Exporter](https://github.com/candlerb/solis_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Solis Exporter](https://github.com/candlerb/solis_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Solis_Ginlong_5G_inverters",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-spacelift",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Spacelift",link:"https://github.com/spacelift-io/prometheus-exporter",icon_filename:"spacelift.png",categories:["data-collection.cloud-and-devops"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Spacelift\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Spacelift infrastructure-as-code (IaC) platform metrics for efficient infrastructure automation and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Spacelift Exporter](https://github.com/spacelift-io/prometheus-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Spacelift Exporter](https://github.com/spacelift-io/prometheus-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Spacelift",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-sphinx",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Sphinx",link:"https://github.com/foxdalas/sphinx_exporter",icon_filename:"sphinx.png",categories:["data-collection.databases"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Sphinx\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Sphinx search engine metrics for efficient search and indexing performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Sphinx Exporter](https://github.com/foxdalas/sphinx_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Sphinx Exporter](https://github.com/foxdalas/sphinx_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Sphinx",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-starlink",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Starlink (SpaceX)",link:"https://github.com/danopstech/starlink_exporter",icon_filename:"starlink.svg",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Starlink (SpaceX)\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor SpaceX Starlink satellite internet metrics for efficient internet service management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Starlink Exporter (SpaceX)](https://github.com/danopstech/starlink_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Starlink Exporter (SpaceX)](https://github.com/danopstech/starlink_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Starlink_(SpaceX)",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-statuspage",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"StatusPage",link:"https://github.com/vladvasiliu/statuspage-exporter",icon_filename:"statuspage.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# StatusPage\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor StatusPage.io incident and status metrics for efficient incident management and communication.\n\n\nMetrics are gathered by periodically sending HTTP requests to [StatusPage Exporter](https://github.com/vladvasiliu/statuspage-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [StatusPage Exporter](https://github.com/vladvasiliu/statuspage-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-StatusPage",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-steam_a2s",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Steam",link:"https://github.com/armsnyder/a2s-exporter",icon_filename:"a2s.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Steam\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nGain insights into Steam A2S-supported game servers for performance and availability through real-time metric monitoring.\n\n\nMetrics are gathered by periodically sending HTTP requests to [A2S Exporter](https://github.com/armsnyder/a2s-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [A2S Exporter](https://github.com/armsnyder/a2s-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Steam",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-storidge",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Storidge",link:"https://github.com/Storidge/cio-user-docs/blob/master/integrations/prometheus.md",icon_filename:"storidge.png",categories:["data-collection.storage"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Storidge\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on Storidge storage metrics for efficient storage management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Storidge exporter](https://github.com/Storidge/cio-user-docs/blob/master/integrations/prometheus.md).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Storidge exporter](https://github.com/Storidge/cio-user-docs/blob/master/integrations/prometheus.md) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Storidge",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-sunspec",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Sunspec Solar Energy",link:"https://github.com/inosion/prometheus-sunspec-exporter",icon_filename:"sunspec.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Sunspec Solar Energy\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor SunSpec Alliance solar energy metrics for efficient solar energy management and monitoring.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Sunspec Solar Energy Exporter](https://github.com/inosion/prometheus-sunspec-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Sunspec Solar Energy Exporter](https://github.com/inosion/prometheus-sunspec-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Sunspec_Solar_Energy",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-suricata",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Suricata",link:"https://github.com/corelight/suricata_exporter",icon_filename:"suricata.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Suricata\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on Suricata network intrusion detection and prevention system (IDS/IPS) metrics for efficient network security and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Suricata Exporter](https://github.com/corelight/suricata_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Suricata Exporter](https://github.com/corelight/suricata_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Suricata",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-synology_activebackup",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Synology ActiveBackup",link:"https://github.com/codemonauts/activebackup-prometheus-exporter",icon_filename:"synology.png",categories:["data-collection.storage"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Synology ActiveBackup\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Synology Active Backup metrics for efficient backup and data protection management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Synology ActiveBackup Exporter](https://github.com/codemonauts/activebackup-prometheus-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Synology ActiveBackup Exporter](https://github.com/codemonauts/activebackup-prometheus-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Synology_ActiveBackup",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-sysload",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Sysload",link:"https://github.com/egmc/sysload_exporter",icon_filename:"sysload.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Sysload\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor system load metrics for efficient system performance and resource management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Sysload Exporter](https://github.com/egmc/sysload_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Sysload Exporter](https://github.com/egmc/sysload_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Sysload",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-tacas",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"TACACS",link:"https://github.com/devon-mar/tacacs-exporter",icon_filename:"tacacs.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# TACACS\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Terminal Access Controller Access-Control System (TACACS) protocol metrics for efficient network authentication and authorization management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [TACACS Exporter](https://github.com/devon-mar/tacacs-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [TACACS Exporter](https://github.com/devon-mar/tacacs-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-TACACS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-tado",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Tado smart heating solution",link:"https://github.com/eko/tado-exporter",icon_filename:"tado.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Tado smart heating solution\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Tado smart thermostat metrics for efficient home heating and cooling management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Tado\\xB0 Exporter](https://github.com/eko/tado-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Tado Exporter](https://github.com/eko/tado-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Tado_smart_heating_solution",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-tankerkoenig",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Tankerkoenig API",link:"https://github.com/lukasmalkmus/tankerkoenig_exporter",icon_filename:"tanker.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Tankerkoenig API\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Tankerknig API fuel price metrics for efficient fuel price monitoring and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Tankerknig API Exporter](https://github.com/lukasmalkmus/tankerkoenig_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Tankerknig API Exporter](https://github.com/lukasmalkmus/tankerkoenig_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Tankerkoenig_API",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-tesla_wall_connector",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Tesla Wall Connector",link:"https://github.com/benclapp/tesla_wall_connector_exporter",icon_filename:"tesla.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Tesla Wall Connector\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Tesla Wall Connector charging station metrics for efficient electric vehicle charging management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Tesla Wall Connector Exporter](https://github.com/benclapp/tesla_wall_connector_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Tesla Wall Connector Exporter](https://github.com/benclapp/tesla_wall_connector_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Tesla_Wall_Connector",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-tesla_vehicle",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Tesla vehicle",link:"https://github.com/wywywywy/tesla-prometheus-exporter",icon_filename:"tesla.png",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Tesla vehicle\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Tesla vehicle metrics for efficient electric vehicle management and monitoring.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Tesla exporter](https://github.com/wywywywy/tesla-prometheus-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Tesla exporter](https://github.com/wywywywy/tesla-prometheus-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Tesla_vehicle",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-twitch",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Twitch",link:"https://github.com/damoun/twitch_exporter",icon_filename:"twitch.svg",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Twitch\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Twitch streaming platform metrics for efficient live streaming management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Twitch exporter](https://github.com/damoun/twitch_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Twitch exporter](https://github.com/damoun/twitch_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Twitch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-ubiquity_ufiber",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Ubiquiti UFiber OLT",link:"https://github.com/swoga/ufiber-exporter",icon_filename:"ubiquiti.png",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Ubiquiti UFiber OLT\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Ubiquiti UFiber GPON (Gigabit Passive Optical Network) device metrics for efficient fiber-optic network management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [ufiber-exporter](https://github.com/swoga/ufiber-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [ufiber-exporter](https://github.com/swoga/ufiber-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Ubiquiti_UFiber_OLT",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-uptimerobot",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Uptimerobot",link:"https://github.com/wosc/prometheus-uptimerobot",icon_filename:"uptimerobot.svg",categories:["data-collection.synthetic-testing"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Uptimerobot\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor UptimeRobot website uptime monitoring metrics for efficient website availability tracking and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Uptimerobot Exporter](https://github.com/wosc/prometheus-uptimerobot).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Uptimerobot Exporter](https://github.com/wosc/prometheus-uptimerobot) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Uptimerobot",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-vscode",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"VSCode",link:"https://github.com/guicaulada/vscode-exporter",icon_filename:"vscode.svg",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# VSCode\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Visual Studio Code editor metrics for efficient development environment management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [VSCode Exporter](https://github.com/guicaulada/vscode-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [VSCode Exporter](https://github.com/guicaulada/vscode-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-VSCode",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-vault_pki",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Vault PKI",link:"https://github.com/aarnaud/vault-pki-exporter",icon_filename:"vault.svg",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Vault PKI\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor HashiCorp Vault Public Key Infrastructure (PKI) metrics for efficient certificate management and security.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Vault PKI Exporter](https://github.com/aarnaud/vault-pki-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Vault PKI Exporter](https://github.com/aarnaud/vault-pki-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Vault_PKI",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-vertica",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Vertica",link:"https://github.com/vertica/vertica-prometheus-exporter",icon_filename:"vertica.svg",categories:["data-collection.databases"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Vertica\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Vertica analytics database platform metrics for efficient database performance and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [vertica-prometheus-exporter](https://github.com/vertica/vertica-prometheus-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [vertica-prometheus-exporter](https://github.com/vertica/vertica-prometheus-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Vertica",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-warp10",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Warp10",link:"https://github.com/centreon/warp10-sensision-exporter",icon_filename:"warp10.svg",categories:["data-collection.databases"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Warp10\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Warp 10 time-series database metrics for efficient time-series data management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Warp10 Exporter](https://github.com/centreon/warp10-sensision-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Warp10 Exporter](https://github.com/centreon/warp10-sensision-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Warp10",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-xiaomi_mi_flora",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Xiaomi Mi Flora",link:"https://github.com/xperimental/flowercare-exporter",icon_filename:"xiaomi.svg",categories:["data-collection.hardware-and-sensors"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Xiaomi Mi Flora\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep tabs on MiFlora plant monitor metrics for efficient plant care and growth management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [MiFlora / Flower Care Exporter](https://github.com/xperimental/flowercare-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [MiFlora / Flower Care Exporter](https://github.com/xperimental/flowercare-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Xiaomi_Mi_Flora",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-yourls",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"YOURLS URL Shortener",link:"https://github.com/just1not2/prometheus-exporter-yourls",icon_filename:"yourls.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# YOURLS URL Shortener\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor YOURLS (Your Own URL Shortener) metrics for efficient URL shortening service management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [YOURLS exporter](https://github.com/just1not2/prometheus-exporter-yourls).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [YOURLS exporter](https://github.com/just1not2/prometheus-exporter-yourls) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-YOURLS_URL_Shortener",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-zerto",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"Zerto",link:"https://github.com/claranet/zerto-exporter",icon_filename:"zerto.png",categories:["data-collection.cloud-and-devops"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# Zerto\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor Zerto disaster recovery and data protection metrics for efficient backup and recovery management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [Zerto Exporter](https://github.com/claranet/zerto-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [Zerto Exporter](https://github.com/claranet/zerto-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-Zerto",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-etcd",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"etcd",link:"https://etcd.io/",icon_filename:"etcd.svg",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# etcd\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack etcd database metrics for optimized distributed key-value store management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to etcd built-in Prometheus exporter.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-etcd",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-gpsd",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"gpsd",link:"https://github.com/natesales/gpsd-exporter",icon_filename:"gpsd.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# gpsd\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor GPSD (GPS daemon) metrics for efficient GPS data management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [gpsd exporter](https://github.com/natesales/gpsd-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [gpsd exporter](https://github.com/natesales/gpsd-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-gpsd",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-journald",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"journald",link:"https://github.com/dead-claudia/journald-exporter",icon_filename:"linux.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# journald\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on systemd-journald metrics for efficient log management and analysis.\n\n\nMetrics are gathered by periodically sending HTTP requests to [journald-exporter](https://github.com/dead-claudia/journald-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [journald-exporter](https://github.com/dead-claudia/journald-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-journald",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-loki",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"loki",link:"https://github.com/grafana/loki",icon_filename:"loki.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# loki\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack Loki metrics.\n\n\nMetrics are gathered by periodically sending HTTP requests to [loki](https://github.com/grafana/loki).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Loki\n\nInstall [loki](https://github.com/grafana/loki) according to its documentation.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-loki",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-mosquitto",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"mosquitto",link:"https://github.com/sapcc/mosquitto-exporter",icon_filename:"mosquitto.svg",categories:["data-collection.databases"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# mosquitto\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nKeep an eye on Mosquitto MQTT broker metrics for efficient IoT message transport and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [mosquitto exporter](https://github.com/sapcc/mosquitto-exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [mosquitto exporter](https://github.com/sapcc/mosquitto-exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-mosquitto",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-mtail",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"mtail",link:"https://github.com/google/mtail",icon_filename:"mtail.png",categories:["data-collection.applications"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# mtail\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor log data metrics using mtail log data extractor and parser.\n\n\nMetrics are gathered by periodically sending HTTP requests to [mtail](https://github.com/google/mtail).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [mtail](https://github.com/google/mtail) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-mtail",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-pgbackrest",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"pgBackRest",link:"https://github.com/woblerr/pgbackrest_exporter",icon_filename:"pgbackrest.png",categories:["data-collection.databases"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# pgBackRest\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nMonitor pgBackRest PostgreSQL backup metrics for efficient database backup and management.\n\n\nMetrics are gathered by periodically sending HTTP requests to [pgBackRest Exporter](https://github.com/woblerr/pgbackrest_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [pgBackRest Exporter](https://github.com/woblerr/pgbackrest_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-pgBackRest",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-prometheus-strongswan",module_name:"prometheus",plugin_name:"go.d.plugin",monitored_instance:{name:"strongSwan",link:"https://github.com/jlti-dev/ipsec_exporter",icon_filename:"strongswan.svg",categories:["data-collection.networking"]},keywords:[],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},community:!0},overview:"# strongSwan\n\nPlugin: go.d.plugin\nModule: prometheus\n\n## Overview\n\nTrack strongSwan VPN and IPSec metrics using the vici interface for efficient virtual private network (VPN) management and performance.\n\n\nMetrics are gathered by periodically sending HTTP requests to [strongSwan/IPSec/vici Exporter](https://github.com/jlti-dev/ipsec_exporter).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on the local host by trying to connect to known ports that are [allocated to exporters](https://github.com/prometheus/prometheus/wiki/Default-port-allocations).\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **prometheus** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **prometheus**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/prometheus.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install Exporter\n\nInstall [strongSwan/IPSec/vici Exporter](https://github.com/jlti-dev/ipsec_exporter) by following the instructions mentioned in the exporter README.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 10 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 10 | no |\n| | expected_prefix | If set, the job\'s check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no |\n| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no |\n| **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no |\n| **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |\n| | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |\n| **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no |\n| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no |\n| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-filters-selector"></a>\n##### selector\n\nThis option allows you to filter out unwanted time series. Only metrics matching the selector will be collected.\n\n- Logic: (pattern1 OR pattern2) AND !(pattern3 or pattern4)\n- Pattern syntax: [selector](https://github.com/netdata/netdata/blob/master/src/go/pkg/prometheus/selector/README.md).\n- Option syntax:\n\n```yaml\nselector:\n allow:\n - pattern1\n - pattern2\n deny:\n - pattern3\n - pattern4\n```\n\n\n<a id="option-customization-fallback-type"></a>\n##### fallback_type\n\nThis option allows you to process Untyped metrics as Counter or Gauge instead of ignoring them.\n\n- Metric name pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match).\n- Option syntax:\n\n```yaml\nfallback_type:\n counter:\n - metric_name_pattern1\n - metric_name_pattern2\n gauge:\n - metric_name_pattern3\n - metric_name_pattern4\n```\n\n\n<a id="option-customization-relabeling"></a>\n##### relabeling\n\nA list of relabeling blocks. Each block applies a list of Prometheus\n`metric_relabel_configs` rules to the metrics whose name matches `match`. See the\n[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md)\nfor the full action set and more examples.\n\n- `match`: Netdata simple patterns matched against the full metric name \u2014 including\n any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact\n `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading\n `!` negates). Use `*` to target every metric. Required.\n- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`,\n `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to\n the scraped samples before charts are built.\n\nRelabeling that would corrupt a histogram or summary \u2014 splitting it, dropping a\ncomponent, mutating the `le`/`quantile` label, or merging two families \u2014 is rejected.\n\n```yaml\nrelabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n```\n\n\n<a id="option-customization-profiles"></a>\n##### profiles\n\nProfiles ship curated charts for recognized exporters. `profiles.mode` selects them:\n\n- `auto` (default): every profile whose `match` hits at least one scraped metric.\n- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).\n- `combined`: `auto` plus the profiles named in `mode_combined.entries`.\n- `none`: no profiles \u2014 generic autogen charts only (the pre-profile behavior).\n\nOnly the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts.\n\n```yaml\nprofiles:\n mode: exact\n mode_exact:\n entries:\n - name: haproxy\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **prometheus** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the prometheus data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _prometheus_ (or scroll the list) to locate the **prometheus** collector.\n5. Click the **+** next to the **prometheus** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/prometheus.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/prometheus.conf\n```\n\n##### Examples\n\n###### Basic\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nA basic example configuration.\n\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n```\n###### Read metrics from a file\n\nAn example configuration to read metrics from a file.\n\n{% details open=true summary="Config" %}\n```yaml\n# use "file://" scheme\njobs:\n - name: myapp\n url: file:///opt/metrics/myapp/metrics.txt\n\n```\n{% /details %}\n###### HTTP authentication\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nBasic HTTP authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:9090/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n> **Note**: Change the port of the monitored application on which it provides metrics.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n\n - name: remote\n url: http://192.0.2.1:9090/metrics\n\n```\n{% /details %}\n###### Metric relabeling\n\nDerive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:9090/metrics\n relabeling:\n - match: \'http_*\'\n metric_relabel_configs:\n - source_labels: [code]\n regex: \'(\\d)\\d\\d\'\n target_label: code_class\n replacement: \'${1}xx\'\n\n```\n{% /details %}\n###### Rename labels that collide with Netdata\'s reserved labels\n\nWhen these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,\n`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those\nnames, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.\nRename the colliding labels to avoid it (the use case the former `label_prefix` option served).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: coredns\n url: http://127.0.0.1:9153/metrics\n relabeling:\n - match: \'*\'\n metric_relabel_configs:\n - regex: \'(instance|family)\'\n action: labelmap\n replacement: \'coredns_$1\'\n - regex: \'(instance|family)\'\n action: labeldrop\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `prometheus` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m prometheus\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m prometheus -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `prometheus` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep prometheus\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep prometheus /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep prometheus\n```\n\n### Disappearing or sparse metrics not clearing alerts\n\nWhen a metric disappears from the Prometheus endpoint response (for example, a gauge that is only exposed when its value is greater than 0), Netdata does not require any special value to stop tracking it. The Prometheus collector automatically detects metrics that are no longer present in the scrape response. After 10 consecutive collection cycles where the metric is absent, the associated chart is automatically removed and any alerts on that chart will clear. You do not need to send a special value (such as 0, NaN, or StaleNaN) \u2014 simply omitting the metric from the response is sufficient. Note that during the 10-cycle grace period, the last known value remains and alerts may not clear immediately.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis collector has built-in grouping logic based on the [type of metrics](https://prometheus.io/docs/concepts/metric_types/).\n\n| Metric | Chart | Dimension(s) | Algorithm |\n|---------------------------|-------------------------------------------|----------------------|-------------|\n| Gauge | for each label set | one, the metric name | absolute |\n| Counter | for each label set | one, the metric name | incremental |\n| Summary (quantiles) | for each label set (excluding 'quantile') | for each quantile | absolute |\n| Summary (sum and count) | for each label set | the metric name | incremental |\n| Histogram (buckets) | for each label set (excluding 'le') | for each bucket | incremental |\n| Histogram (sum and count) | for each label set | the metric name | incremental |\n\nUntyped metrics (have no '# TYPE') processing:\n\n- As Counter or Gauge depending on pattern match when 'fallback_type' is used.\n- As Counter if it has suffix '_total'.\n- As Summary if it has 'quantile' label.\n- As Histogram if it has 'le' label.\n\n**The rest are ignored**.\n\n",integration_type:"collector",id:"go.d.plugin-prometheus-strongSwan",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-proxysql",plugin_name:"go.d.plugin",module_name:"proxysql",monitored_instance:{name:"ProxySQL",link:"https://www.proxysql.com/",icon_filename:"proxysql.png",categories:["data-collection.databases"]},keywords:["proxysql","databases","sql"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# ProxySQL\n\nPlugin: go.d.plugin\nModule: proxysql\n\n## Overview\n\nThis collector monitors ProxySQL servers.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **proxysql** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **proxysql**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/proxysql.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection frequency (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | dsn | ProxySQL server DSN (Data Source Name). See [DSN syntax](https://github.com/go-sql-driver/mysql#dsn-data-source-name). | stats:stats@tcp(127.0.0.1:6032)/ | yes |\n| | timeout | Query timeout (seconds). | 1 | no |\n| **Functions** | functions.top_queries.disabled | Disable the [top-queries](#top-queries) function. | no | no |\n| | functions.top_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.top_queries.limit | Maximum number of queries to return. | 500 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **proxysql** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the proxysql data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _proxysql_ (or scroll the list) to locate the **proxysql** collector.\n5. Click the **+** next to the **proxysql** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/proxysql.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/proxysql.conf\n```\n\n##### Examples\n\n###### TCP socket\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n dsn: stats:stats@tcp(127.0.0.1:6032)/\n\n```\n{% /details %}\n###### my.cnf\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n my.cnf: \'/etc/my.cnf\'\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n dsn: stats:stats@tcp(127.0.0.1:6032)/\n\n - name: remote\n dsn: stats:stats@tcp(203.0.113.0:6032)/\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `proxysql` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m proxysql\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m proxysql -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `proxysql` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep proxysql\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep proxysql /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep proxysql\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ proxysql_hostgroup_no_online_backends ](https://github.com/netdata/netdata/blob/master/src/health/health.d/proxysql.conf) | proxysql.hostgroup_backends_status | ProxySQL hostgroup ${label:hostgroup} has no ONLINE backends |\n| [ proxysql_backend_shunned ](https://github.com/netdata/netdata/blob/master/src/health/health.d/proxysql.conf) | proxysql.backend_status | ProxySQL backend SHUNNED (${label:host}:${label:port} hostgroup ${label:hostgroup}) |\n| [ proxysql_backend_offline_hard ](https://github.com/netdata/netdata/blob/master/src/health/health.d/proxysql.conf) | proxysql.backend_status | ProxySQL backend OFFLINE_HARD (${label:host}:${label:port} hostgroup ${label:hostgroup}) |\n",functions:"## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Top Queries\n\nRetrieves aggregated query statistics from ProxySQL's [stats_mysql_query_digest](https://proxysql.com/documentation/stats-statistics/#stats_mysql_query_digest) table.\n\nThis function queries the `stats_mysql_query_digest` table which stores runtime statistics for all queries proxied through ProxySQL, aggregated by query digest (normalized query pattern). It provides timing metrics, execution counts, and error statistics for each unique query pattern.\n\nUse cases:\n- Identify slow queries consuming excessive total execution time\n- Find high-frequency queries that may benefit from caching\n- Monitor query error rates across backends\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Proxysql:top-queries` |\n| Require Cloud | yes |\n| Performance | Queries ProxySQL admin interface for digest statistics:<br/>\u2022 Reads from in-memory `stats_mysql_query_digest` table<br/>\u2022 Default limit of 500 rows balances completeness with performance<br/>\u2022 Data is aggregated in-memory by ProxySQL from active connections |\n| Security | Query text may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Personal information in WHERE clauses or INSERT values<br/>\u2022 Business data embedded in queries<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to ProxySQL admin interface<br/>\u2022 Returns HTTP 503 if the connection cannot be established<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\nNo additional configuration is required.\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. Options include total execution time, number of calls, rows affected, rows sent, errors, and warnings. Defaults to total time to focus on most resource-intensive queries. | yes | totalTime | |\n\n#### Returns\n\nAggregated query digest statistics from ProxySQL, providing comprehensive performance analysis across all monitored MySQL backends. Each row represents a unique query pattern (normalized digest) with cumulative metrics across all its executions.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Digest | string | | hidden | Unique hash identifier for normalized query pattern. Queries with identical structure but different literal values share the same digest. |\n| Query | string | | | The SQL query text with literal values truncated at 4096 characters. Use this to identify the actual SQL being executed and spot parameterized queries or injection risks. |\n| Schema | string | | | Database name where the query was executed. Essential for multi-database analysis to identify which database or backend is experiencing query load. |\n| User | string | | hidden | MySQL username used to execute the query. Useful for identifying application users or connection pool attribution. |\n| Hostgroup | integer | | hidden | Backend hostgroup identifier from ProxySQL configuration. Allows grouping queries by backend server for multi-backend analysis. |\n| Calls | integer | | | Total number of times this query pattern has been executed. High values indicate frequently run queries that may impact server performance significantly. |\n| Total Time | duration | milliseconds | | Cumulative execution time across all query executions. This is a key metric for identifying the most resource-intensive queries in terms of total server time consumption. |\n| Avg Time | duration | milliseconds | | Average execution time per query run. Compare with Total Time to determine if individual executions or high frequency drives resource usage. |\n| Min Time | duration | milliseconds | hidden | Minimum execution time observed. Helps identify variability in query performance and spot potential optimization opportunities for outliers. |\n| Max Time | duration | milliseconds | hidden | Maximum execution time observed. Large gaps between Min Time and Max Time may indicate performance instability due to parameter sniffing, data skew, or lock contention. |\n| Rows Affected | integer | | | Total number of rows modified by INSERT, UPDATE, DELETE, or REPLACE statements. Useful for tracking write workloads and data modification patterns. |\n| Rows Sent | integer | | | Total number of rows returned to the client by SELECT statements. High values may indicate queries returning large result sets that consume significant network bandwidth and client resources. |\n| Errors | integer | | | Total number of times this query pattern resulted in an error. Non-zero values require investigation into the underlying SQL syntax, permission issues, or constraint violations. |\n| Warnings | integer | | | Total number of times this query pattern generated a warning. Warnings may indicate data type conversions, NULL handling issues, or other non-critical SQL problems that should be reviewed. |\n| First Seen | string | | hidden | Timestamp when this query pattern was first observed. Helps identify new queries that may have been introduced by application changes or code deployments. |\n| Last Seen | string | | hidden | Timestamp when this query pattern was last executed. Can help identify stale queries that are no longer in use or to track recent query activity. |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per ProxySQL instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| proxysql.client_connections_count | connected, non_idle, hostgroup_locked | connections |\n| proxysql.client_connections_rate | created, aborted | connections/s |\n| proxysql.server_connections_count | connected | connections |\n| proxysql.server_connections_rate | created, aborted, delayed | connections/s |\n| proxysql.backends_traffic | recv, sent | B/s |\n| proxysql.clients_traffic | recv, sent | B/s |\n| proxysql.active_transactions_count | client | connections |\n| proxysql.questions_rate | questions | questions/s |\n| proxysql.slow_queries_rate | slow | queries/s |\n| proxysql.queries_rate | autocommit, autocommit_filtered, commit_filtered, rollback, rollback_filtered, backend_change_user, backend_init_db, backend_set_names, frontend_init_db, frontend_set_names, frontend_use_db | queries/s |\n| proxysql.backend_statements_count | total, unique | statements |\n| proxysql.backend_statements_rate | prepare, execute, close | statements/s |\n| proxysql.client_statements_count | total, unique | statements |\n| proxysql.client_statements_rate | prepare, execute, close | statements/s |\n| proxysql.cached_statements_count | cached | statements |\n| proxysql.query_cache_entries_count | entries | entries |\n| proxysql.query_cache_memory_used | used | B |\n| proxysql.query_cache_io | in, out | B/s |\n| proxysql.query_cache_requests_rate | read, write, read_success | requests/s |\n| proxysql.mysql_monitor_workers_count | workers, auxiliary | threads |\n| proxysql.mysql_monitor_workers_rate | started | workers/s |\n| proxysql.mysql_monitor_connect_checks_rate | succeed, failed | checks/s |\n| proxysql.mysql_monitor_ping_checks_rate | succeed, failed | checks/s |\n| proxysql.mysql_monitor_read_only_checks_rate | succeed, failed | checks/s |\n| proxysql.mysql_monitor_replication_lag_checks_rate | succeed, failed | checks/s |\n| proxysql.jemalloc_memory_used | active, allocated, mapped, metadata, resident, retained | B |\n| proxysql.memory_used | auth, sqlite3, query_digest, query_rules, firewall_users_table, firewall_users_config, firewall_rules_table, firewall_rules_config, mysql_threads, admin_threads, cluster_threads | B |\n| proxysql.uptime | uptime | seconds |\n\n### Per command\n\nThese metrics refer to the SQL command.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| command | SQL command. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| proxysql.mysql_command_execution_rate | uptime | seconds |\n| proxysql.mysql_command_execution_time | time | microseconds |\n| proxysql.mysql_command_execution_duration | 100us, 500us, 1ms, 5ms, 10ms, 50ms, 100ms, 500ms, 1s, 5s, 10s, +Inf | microseconds |\n\n### Per user\n\nThese metrics refer to the user.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| user | username from the mysql_users table |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| proxysql.mysql_user_connections_utilization | used | percentage |\n| proxysql.mysql_user_connections_count | used | connections |\n\n### Per hostgroup\n\nThese metrics refer to the backends hostgroup.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| hostgroup | hostgroup identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| proxysql.hostgroup_backends_status | online, shunned, offline_soft, offline_hard | backends |\n\n### Per backend\n\nThese metrics refer to the backend server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| hostgroup | backend server hostgroup |\n| host | backend server host |\n| port | backend server port |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| proxysql.backend_status | online, shunned, offline_soft, offline_hard | status |\n| proxysql.backend_connections_usage | free, used | connections |\n| proxysql.backend_connections_rate | succeed, failed | connections/s |\n| proxysql.backend_queries_rate | queries | queries/s |\n| proxysql.backend_traffic | recv, send | B/s |\n| proxysql.backend_latency | latency | microseconds |\n\n",integration_type:"collector",id:"go.d.plugin-proxysql-ProxySQL",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/proxysql/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-pulsar",plugin_name:"go.d.plugin",module_name:"pulsar",monitored_instance:{name:"Apache Pulsar",link:"https://pulsar.apache.org/",icon_filename:"pulsar.svg",categories:["data-collection.databases"]},keywords:["pulsar"],related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# Apache Pulsar\n\nPlugin: go.d.plugin\nModule: pulsar\n\n## Overview\n\nThis collector monitors Pulsar servers.\n\n\nIt collects broker statistics using Pulsar\'s [Prometheus endpoint](https://pulsar.apache.org/docs/en/deploy-monitoring/#broker-stats).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nApache Pulsar can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Pulsar instances running on localhost.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **pulsar** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **pulsar**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/pulsar.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 60 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8080/metrics | yes |\n| | timeout | HTTP request timeout (seconds). | 5 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **pulsar** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the pulsar data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _pulsar_ (or scroll the list) to locate the **pulsar** collector.\n5. Click the **+** next to the **pulsar** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/pulsar.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/pulsar.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8080/metrics\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8080/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nDo not validate server certificate chain and hostname.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:8080/metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8080/metrics\n\n - name: remote\n url: http://192.0.2.1:8080/metrics\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `pulsar` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m pulsar\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m pulsar -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `pulsar` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep pulsar\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep pulsar /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep pulsar\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n- topic_* metrics are available when `exposeTopicLevelMetricsInPrometheus` is set to true.\n- subscription_* and namespace_subscription metrics are available when `exposeTopicLevelMetricsInPrometheus` si set to true.\n- replication_* and namespace_replication_* metrics are available when replication is configured and `replicationMetricsEnabled` is set to true.\n\n\n### Per Apache Pulsar instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| pulsar.broker_components | namespaces, topics, subscriptions, producers, consumers | components |\n| pulsar.messages_rate | publish, dispatch | messages/s |\n| pulsar.throughput_rate | publish, dispatch | KiB/s |\n| pulsar.storage_size | used | KiB |\n| pulsar.storage_operations_rate | read, write | message batches/s |\n| pulsar.msg_backlog | backlog | messages |\n| pulsar.storage_write_latency | <=0.5ms, <=1ms, <=5ms, =10ms, <=20ms, <=50ms, <=100ms, <=200ms, <=1s, >1s | entries/s |\n| pulsar.entry_size | <=128B, <=512B, <=1KB, <=2KB, <=4KB, <=16KB, <=100KB, <=1MB, >1MB | entries/s |\n| pulsar.subscription_delayed | delayed | message batches |\n| pulsar.subscription_msg_rate_redeliver | redelivered | messages/s |\n| pulsar.subscription_blocked_on_unacked_messages | blocked | subscriptions |\n| pulsar.replication_rate | in, out | messages/s |\n| pulsar.replication_throughput_rate | in, out | KiB/s |\n| pulsar.replication_backlog | backlog | messages |\n\n### Per namespace\n\nTBD\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| pulsar.namespace_broker_components | topics, subscriptions, producers, consumers | components |\n| pulsar.namespace_messages_rate | publish, dispatch | messages/s |\n| pulsar.namespace_throughput_rate | publish, dispatch | KiB/s |\n| pulsar.namespace_storage_size | used | KiB |\n| pulsar.namespace_storage_operations_rate | read, write | message batches/s |\n| pulsar.namespace_msg_backlog | backlog | messages |\n| pulsar.namespace_storage_write_latency | <=0.5ms, <=1ms, <=5ms, =10ms, <=20ms, <=50ms, <=100ms, <=200ms, <=1s, >1s | entries/s |\n| pulsar.namespace_entry_size | <=128B, <=512B, <=1KB, <=2KB, <=4KB, <=16KB, <=100KB, <=1MB, >1MB | entries/s |\n| pulsar.namespace_subscription_delayed | delayed | message batches |\n| pulsar.namespace_subscription_msg_rate_redeliver | redelivered | messages/s |\n| pulsar.namespace_subscription_blocked_on_unacked_messages | blocked | subscriptions |\n| pulsar.namespace_replication_rate | in, out | messages/s |\n| pulsar.namespace_replication_throughput_rate | in, out | KiB/s |\n| pulsar.namespace_replication_backlog | backlog | messages |\n| pulsar.topic_producers | a dimension per topic | producers |\n| pulsar.topic_subscriptions | a dimension per topic | subscriptions |\n| pulsar.topic_consumers | a dimension per topic | consumers |\n| pulsar.topic_messages_rate_in | a dimension per topic | publishes/s |\n| pulsar.topic_messages_rate_out | a dimension per topic | dispatches/s |\n| pulsar.topic_throughput_rate_in | a dimension per topic | KiB/s |\n| pulsar.topic_throughput_rate_out | a dimension per topic | KiB/s |\n| pulsar.topic_storage_size | a dimension per topic | KiB |\n| pulsar.topic_storage_read_rate | a dimension per topic | message batches/s |\n| pulsar.topic_storage_write_rate | a dimension per topic | message batches/s |\n| pulsar.topic_msg_backlog | a dimension per topic | messages |\n| pulsar.topic_subscription_delayed | a dimension per topic | message batches |\n| pulsar.topic_subscription_msg_rate_redeliver | a dimension per topic | messages/s |\n| pulsar.topic_subscription_blocked_on_unacked_messages | a dimension per topic | blocked subscriptions |\n| pulsar.topic_replication_rate_in | a dimension per topic | messages/s |\n| pulsar.topic_replication_rate_out | a dimension per topic | messages/s |\n| pulsar.topic_replication_throughput_rate_in | a dimension per topic | messages/s |\n| pulsar.topic_replication_throughput_rate_out | a dimension per topic | messages/s |\n| pulsar.topic_replication_backlog | a dimension per topic | messages |\n\n",integration_type:"collector",id:"go.d.plugin-pulsar-Apache_Pulsar",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/pulsar/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-puppet",plugin_name:"go.d.plugin",module_name:"puppet",monitored_instance:{name:"Puppet",link:"https://www.puppet.com/",categories:["data-collection.cloud-and-devops"],icon_filename:"puppet.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["puppet"]},overview:"# Puppet\n\nPlugin: go.d.plugin\nModule: puppet\n\n## Overview\n\nThis collector monitors Puppet metrics, including JVM heap and non-heap memory, CPU usage, and file descriptors.\n\n\nIt uses Puppet's metrics API endpoint [/status/v1/services](https://www.puppet.com/docs/puppetserver/5.3/status-api/v1/services.html) to gather the metrics.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Puppet instances running on localhost that are listening on port 8140.\nOn startup, it tries to collect metrics from:\n\n- https://127.0.0.1:8140\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **puppet** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **puppet**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/puppet.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | https://127.0.0.1:8140 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **puppet** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the puppet data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _puppet_ (or scroll the list) to locate the **puppet** collector.\n5. Click the **+** next to the **puppet** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/puppet.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/puppet.conf\n```\n\n##### Examples\n\n###### Basic with self-signed certificate\n\nPuppet with self-signed TLS certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:8140\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:8140\n tls_skip_verify: yes\n\n - name: remote\n url: https://192.0.2.1:8140\n tls_skip_verify: yes\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `puppet` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m puppet\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m puppet -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `puppet` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep puppet\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep puppet /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep puppet\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Puppet instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| puppet.jvm_heap | committed, used | MiB |\n| puppet.jvm_nonheap | committed, used | MiB |\n| puppet.cpu | execution, GC | percentage |\n| puppet.fdopen | used | descriptors |\n\n",integration_type:"collector",id:"go.d.plugin-puppet-Puppet",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/puppet/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-rabbitmq",plugin_name:"go.d.plugin",module_name:"rabbitmq",monitored_instance:{name:"RabbitMQ",link:"https://www.rabbitmq.com/",icon_filename:"rabbitmq.svg",categories:["data-collection.databases"]},keywords:["rabbitmq","message brokers"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# RabbitMQ\n\nPlugin: go.d.plugin\nModule: rabbitmq\n\n## Overview\n\nThis collector monitors RabbitMQ instances.\n\nIt collects data using an HTTP-based API provided by the [management plugin](https://www.rabbitmq.com/management.html).\nThe following endpoints are used:\n\n- `/api/definitions` (one-time retrieval, used to obtain the cluster ID and name)\n- `/api/overview`\n- `/api/nodes`\n- `/api/vhosts`\n- `/api/queues` (disabled by default)\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **rabbitmq** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **rabbitmq**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/rabbitmq.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable management plugin.\n\nThe management plugin is included in the RabbitMQ distribution, but disabled.\nTo enable see [Management Plugin](https://www.rabbitmq.com/management.html#getting-started) documentation.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://localhost:15672" | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **Metrics Selection** | collect_queues_metrics | Collect per-vhost, per-queue metrics. May cause significant overhead if many queues exist. | no | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | guest | no |\n| | password | Password for Basic HTTP authentication. | guest | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **rabbitmq** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the rabbitmq data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _rabbitmq_ (or scroll the list) to locate the **rabbitmq** collector.\n5. Click the **+** next to the **rabbitmq** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/rabbitmq.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/rabbitmq.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:15672\n\n```\n{% /details %}\n###### Basic HTTP auth\n\nLocal server with basic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:15672\n username: admin\n password: password\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:15672\n\n - name: remote\n url: http://192.0.2.0:15672\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `rabbitmq` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m rabbitmq\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m rabbitmq -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `rabbitmq` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep rabbitmq\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep rabbitmq /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep rabbitmq\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ rabbitmq_node_avail_status_down ](https://github.com/netdata/netdata/blob/master/src/health/health.d/rabbitmq.conf) | rabbitmq.node_avail_status | RabbitMQ node is down (node ${label:node} cluster ${label:cluster_id}) |\n| [ rabbitmq_node_network_partition_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/rabbitmq.conf) | rabbitmq.node_network_partition_status | RabbitMQ network partition detected (node ${label:node} cluster ${label:cluster_id}) |\n| [ rabbitmq_node_mem_alarm_status_triggered ](https://github.com/netdata/netdata/blob/master/src/health/health.d/rabbitmq.conf) | rabbitmq.node_mem_alarm_status | RabbitMQ mem alarm triggered (node ${label:node} cluster ${label:cluster_id}) |\n| [ rabbitmq.node_disk_free_alarm_status_triggered ](https://github.com/netdata/netdata/blob/master/src/health/health.d/rabbitmq.conf) | rabbitmq.node_disk_free_alarm_status | RabbitMQ disk free alarm triggered (node ${label:node} cluster ${label:cluster_id}) |\n| [ rabbitmq_vhost_status_unhealthy ](https://github.com/netdata/netdata/blob/master/src/health/health.d/rabbitmq.conf) | rabbitmq.vhost_status | RabbitMQ vhost is not healthy (vhost ${label:vhost} cluster ${label:cluster_id}) |\n| [ rabbitmq_queue_status_minority ](https://github.com/netdata/netdata/blob/master/src/health/health.d/rabbitmq.conf) | rabbitmq.queue_status | RabbitMQ queue insufficient online members (queue ${label:queue} node ${label:node} cluster ${label:cluster_id}) |\n| [ rabbitmq_queue_status_unhealthy ](https://github.com/netdata/netdata/blob/master/src/health/health.d/rabbitmq.conf) | rabbitmq.queue_status | RabbitMQ queue is unhealthy (queue ${label:queue} node ${label:node} cluster ${label:cluster_id}) |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per cluster\n\nThese metrics refer to the RabbitMQ Cluster.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_id | Unique identifier for the cluster, automatically assigned by RabbitMQ. |\n| cluster_name | User-defined name of the cluster as set using `rabbitmqctl set_cluster_name`. If not set, it will be "unset". |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| rabbitmq.messages_count | ready, unacknowledged | messages |\n| rabbitmq.messages_rate | ack, publish, publish_in, publish_out, confirm, deliver, deliver_no_ack, get, get_empty, get_no_ack, deliver_get, redeliver, return_unroutable | messages/s |\n| rabbitmq.objects_count | channels, consumers, connections, queues, exchanges | messages |\n| rabbitmq.connection_churn_rate | created, closed | operations/s |\n| rabbitmq.channel_churn_rate | created, closed | operations/s |\n| rabbitmq.queue_churn_rate | created, deleted, declared | operations/s |\n\n### Per node\n\nThese metrics refer to the RabbitMQ node.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_id | Unique identifier for the cluster, automatically assigned by RabbitMQ. |\n| cluster_name | User-defined name of the cluster as set using `rabbitmqctl set_cluster_name <NAME>`. If not set, it will be "unset". |\n| node | Name of the node. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| rabbitmq.node_avail_status | running, down | status |\n| rabbitmq.node_network_partition_status | clear, detected | status |\n| rabbitmq.node_mem_alarm_status | clear, triggered | status |\n| rabbitmq.node_disk_free_alarm_status | clear, triggered | status |\n| rabbitmq.node_file_descriptors_usage | used | fd |\n| rabbitmq.node_sockets_usage | used | sockets |\n| rabbitmq.node_erlang_processes_usage | used | processes |\n| rabbitmq.node_erlang_run_queue_processes_count | length | processes |\n| rabbitmq.node_memory_usage | used | bytes |\n| rabbitmq.node_disk_space_free_size | free | bytes |\n| rabbitmq.node_uptime | uptime | seconds |\n\n### Per cluster peer\n\nThese metrics refer to the RabbiMQ cluster peer.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_id | Unique identifier for the cluster, automatically assigned by RabbitMQ. |\n| cluster_name | User-defined name of the cluster as set using `rabbitmqctl set_cluster_name <NAME>`. If not set, it will be "unset". |\n| node | Name of the node. |\n| peer | Name of the remote node in the cluster. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| rabbitmq.node_peer_cluster_link_traffic | received, sent | bytes/s |\n\n### Per vhost\n\nThese metrics refer to the virtual host.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_id | Unique identifier for the cluster, automatically assigned by RabbitMQ. |\n| cluster_name | User-defined name of the cluster as set using `rabbitmqctl set_cluster_name <NAME>`. If not set, it will be "unset". |\n| vhost | Name of the virtual host. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| rabbitmq.vhost_status | running, stopped, partial | status |\n| rabbitmq.vhost_messages_count | ready, unacknowledged | messages |\n| rabbitmq.vhost_messages_rate | ack, publish, publish_in, publish_out, confirm, deliver, deliver_no_ack, get, get_no_ack, deliver_get, redeliver, return_unroutable | messages/s |\n\n### Per queue\n\nThese metrics refer to the virtual host queue.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cluster_id | Unique identifier for the cluster, automatically assigned by RabbitMQ. |\n| cluster_name | User-defined name of the cluster as set using `rabbitmqctl set_cluster_name <NAME>`. If not set, it will be "unset". |\n| node | Name of the node. |\n| vhost | Name of the virtual host. |\n| queue | Name of the queue. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| rabbitmq.queue_status | running, down, idle, crashed, stopped, minority, terminated | status |\n| rabbitmq.queue_messages_count | ready, unacknowledged, paged_out, persistent | messages |\n| rabbitmq.queue_messages_rate | ack, publish, publish_in, publish_out, confirm, deliver, deliver_no_ack, get, get_no_ack, deliver_get, redeliver, return_unroutable | messages/s |\n\n',integration_type:"collector",id:"go.d.plugin-rabbitmq-RabbitMQ",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/rabbitmq/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-redis",plugin_name:"go.d.plugin",module_name:"redis",monitored_instance:{name:"Redis",link:"https://redis.com/",categories:["data-collection.databases"],icon_filename:"redis.svg"},related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Containers"}]}},alternative_monitored_instances:[],info_provided_to_referring_integrations:{description:""},keywords:["redis","databases"]},overview:'# Redis\n\nPlugin: go.d.plugin\nModule: redis\n\n## Overview\n\nThis collector monitors the health and performance of Redis servers and collects general statistics, CPU and memory consumption, replication information, command statistics, and more.\n\n\nIt connects to the Redis instance via a TCP or UNIX socket and executes the following commands:\n\n- [INFO ALL](https://redis.io/commands/info)\n- [PING](https://redis.io/commands/ping/)\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nRedis can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Containers" %}Containers{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on localhost by attempting to connect using known Redis TCP and UNIX sockets:\n\n- 127.0.0.1:6379\n- /tmp/redis.sock\n- /var/run/redis/redis.sock\n- /var/lib/redis/redis.sock\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:"## Setup\n\n\nYou can configure the **redis** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **redis**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/redis.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary=\"Config options\" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | Redis server address (TCP or Unix socket). | redis://@localhost:6379 | yes |\n| | timeout | Dial, read, and write timeout (seconds). | 1 | no |\n| **Auth** | username | Username for authentication. | | no |\n| | password | Password for authentication. | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Functions** | functions.top_queries.disabled | Disable the [top-queries](#top-queries) function. | no | no |\n| | functions.top_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.top_queries.limit | Maximum number of queries to return. | 500 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **redis** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the redis data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _redis_ (or scroll the list) to locate the **redis** collector.\n5. Click the **+** next to the **redis** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/redis.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/redis.conf\n```\n\n##### Examples\n\n###### TCP socket\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n address: 'redis://@127.0.0.1:6379'\n\n```\n{% /details %}\n###### Unix socket\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n address: 'unix://@/tmp/redis.sock'\n\n```\n{% /details %}\n###### TCP socket with password\n\nAn example configuration.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n address: 'redis://:password@127.0.0.1:6379'\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n address: 'redis://:password@127.0.0.1:6379'\n\n - name: remote\n address: 'redis://user:password@203.0.113.0:6379'\n\n```\n{% /details %}\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `redis` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m redis\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m redis -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `redis` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep redis\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep redis /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep redis\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ redis_connections_rejected ](https://github.com/netdata/netdata/blob/master/src/health/health.d/redis.conf) | redis.connections | connections rejected because of maxclients limit in the last minute |\n| [ redis_bgsave_slow ](https://github.com/netdata/netdata/blob/master/src/health/health.d/redis.conf) | redis.bgsave_now | duration of the on-going RDB save operation |\n| [ redis_bgsave_broken ](https://github.com/netdata/netdata/blob/master/src/health/health.d/redis.conf) | redis.bgsave_health | status of the last RDB save operation (0: ok, 1: error) |\n| [ redis_master_link_down ](https://github.com/netdata/netdata/blob/master/src/health/health.d/redis.conf) | redis.master_link_down_since_time | time elapsed since the link between master and slave is down |\n",functions:"## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Top Queries\n\nRetrieves slow command entries from Redis [SLOWLOG](https://redis.io/docs/latest/commands/slowlog/).\n\nThis function executes the `SLOWLOG GET` command to retrieve entries of commands that exceeded the configured execution time threshold (`slowlog-log-slower-than`). It provides command details, execution duration, and client information for each slow command.\n\nUse cases:\n- Identify slow commands that may need optimization\n- Analyze command patterns to detect performance hotspots\n- Investigate client sources of slow commands\n\nCommand text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Redis:top-queries` |\n| Require Cloud | yes |\n| Performance | Executes `SLOWLOG GET` command to retrieve entries from Redis memory:<br/>\u2022 Minimal overhead as SLOWLOG is stored in memory<br/>\u2022 Default limit of 500 entries balances completeness with performance<br/>\u2022 Large slowlogs with many entries may take slightly longer to transfer |\n| Security | Command arguments may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Redis keys and values in command arguments<br/>\u2022 Application-specific identifiers or session tokens<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to Redis<br/>\u2022 SLOWLOG is enabled (`slowlog-log-slower-than` > 0)<br/>\u2022 Returns HTTP 503 if collector is still initializing<br/>\u2022 Returns HTTP 500 if the command fails<br/>\u2022 Returns HTTP 504 if the command times out |\n\n#### Prerequisites\n\nNo additional configuration is required.\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. Options include duration, timestamp, ID, and command name. Defaults to duration to focus on slowest commands. | yes | duration | |\n\n#### Returns\n\nSlowlog entries with command timing and client metadata, providing insight into Redis performance patterns. Each row represents a single slow command execution that exceeded the configured threshold.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| ID | integer | | hidden | Unique identifier for the slowlog entry. Allows tracking individual command executions. |\n| Timestamp | timestamp | | | Date and time when the slow command was executed. Useful for correlating slow commands with application events or system changes. |\n| Command | string | | | Full command text including all arguments. May contain sensitive data (keys, values) depending on application implementation. Truncated to 4096 characters. |\n| Command Name | string | | | The Redis command name (e.g., SET, GET, HGETALL, ZADD). Useful for grouping and analyzing slow commands by type. |\n| Duration | duration | milliseconds | | Execution time that exceeded the slowlog threshold. Higher values indicate slower commands that may need optimization or investigation. |\n| Client Address | string | | hidden | IP address of the client that executed the slow command. Useful for identifying problematic clients or network segments. |\n| Client Name | string | | hidden | Client identifier or name reported by Redis. Useful for identifying specific applications or services generating slow commands. |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Redis instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| redis.connections | accepted, rejected | connections/s |\n| redis.clients | connected, blocked, tracking, in_timeout_table | clients |\n| redis.ping_latency | min, max, avg | seconds |\n| redis.commands | processes | commands/s |\n| redis.keyspace_lookup_hit_rate | lookup_hit_rate | percentage |\n| redis.memory | max, used, rss, peak, dataset, lua, scripts | bytes |\n| redis.mem_fragmentation_ratio | mem_fragmentation | ratio |\n| redis.key_eviction_events | evicted | keys/s |\n| redis.net | received, sent | kilobits/s |\n| redis.rdb_changes | changes | operations |\n| redis.bgsave_now | current_bgsave_time | seconds |\n| redis.bgsave_health | last_bgsave | status |\n| redis.bgsave_last_rdb_save_since_time | last_bgsave_time | seconds |\n| redis.aof_file_size | current, base | bytes |\n| redis.commands_calls | a dimension per command | calls |\n| redis.commands_usec | a dimension per command | microseconds |\n| redis.commands_usec_per_sec | a dimension per command | microseconds/s |\n| redis.key_expiration_events | expired | keys/s |\n| redis.database_keys | a dimension per database | keys |\n| redis.database_expires_keys | a dimension per database | keys |\n| redis.connected_replicas | connected | replicas |\n| redis.master_link_status | up, down | status |\n| redis.master_last_io_since_time | time | seconds |\n| redis.master_link_down_since_time | time | seconds |\n| redis.uptime | uptime | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-redis-Redis",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/redis/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-rethinkdb",plugin_name:"go.d.plugin",module_name:"rethinkdb",monitored_instance:{name:"RethinkDB",link:"https://rethinkdb.com",categories:["data-collection.databases"],icon_filename:"rethinkdb.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["rethinkdb","database","db"]},overview:"# RethinkDB\n\nPlugin: go.d.plugin\nModule: rethinkdb\n\n## Overview\n\nIt collects cluster-wide metrics such as server status, client connections, active clients, query rate, and document read/write rates.\nFor each server, it offers similar metrics.\n\n\nThe data is gathered by querying the stats table in RethinkDB, which stores real-time statistics related to the cluster and its individual servers.\nIt also provides a `running-queries` function using the `rethinkdb.jobs` system table (admin-only).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nIf no configuration is given, collector will attempt to connect to RethinkDB instance on `127.0.0.1:28015` address.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **rethinkdb** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **rethinkdb**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/rethinkdb.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection frequency (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | RethinkDB server address (IP:PORT). | 127.0.0.1:28015 | yes |\n| | timeout | Connection, read, and write timeout duration (seconds). Includes name resolution. | 1 | no |\n| **Auth** | username | Username for authentication. | | no |\n| | password | Password for authentication. | | no |\n| **Functions** | functions.running_queries.disabled | Disable the [running-queries](#running-queries) function. | no | no |\n| | functions.running_queries.timeout | Timeout for the running-queries function query (seconds). If not set, uses the collector\'s timeout. | (collector timeout) | no |\n| | functions.running_queries.limit | Maximum number of rows returned by the running-queries function. | 500 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **rethinkdb** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the rethinkdb data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _rethinkdb_ (or scroll the list) to locate the **rethinkdb** collector.\n5. Click the **+** next to the **rethinkdb** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/rethinkdb.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/rethinkdb.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:28015\n\n```\n{% /details %}\n###### With authentication\n\nAn example configuration with authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:28015\n username: name\n password: pass\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:28015\n\n - name: remote\n address: 203.0.113.0:28015\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `rethinkdb` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m rethinkdb\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m rethinkdb -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `rethinkdb` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep rethinkdb\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep rethinkdb /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep rethinkdb\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",functions:"## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Running Queries\n\nRetrieves currently executing queries from the RethinkDB [rethinkdb.jobs](https://rethinkdb.com/docs/system-jobs/) system table.\n\nThis function queries the `rethinkdb.jobs` system table which contains information about background tasks and queries currently running on the cluster. It provides query text, execution duration, client information, and involved servers.\n\nUse cases:\n- Identify long-running queries that may be blocking resources\n- Monitor active query load across the cluster\n- Investigate client connections generating heavy workloads\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Rethinkdb:running-queries` |\n| Require Cloud | yes |\n| Performance | Queries the `rethinkdb.jobs` system table:<br/>\u2022 Minimal overhead as it reads from an in-memory system table<br/>\u2022 Default limit of 500 rows balances completeness with performance<br/>\u2022 Returns only currently active queries (no historical data) |\n| Security | Query text may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Document field values in filter conditions<br/>\u2022 User-provided data in insert/update operations<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to RethinkDB<br/>\u2022 The user has admin access to `rethinkdb.jobs` table<br/>\u2022 Returns HTTP 503 if collector is still initializing<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Grant admin access to `rethinkdb.jobs`\n\nThe user must have admin privileges to query the `rethinkdb.jobs` system table.\n\n1. Connect with an admin user account that has access to system tables\n\n2. Verify access to `rethinkdb.jobs`:\n\n ```javascript\n r.db('rethinkdb').table('jobs').run(conn)\n ```\n\n:::info\n\n- The `rethinkdb.jobs` table is only accessible to admin users\n- Non-admin users will receive a permission error when attempting to query this table\n- The collector's regular metrics do not require admin access\n\n:::\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. Defaults to duration to focus on longest-running queries. | yes | durationMs | |\n\n#### Returns\n\nCurrently running queries from the `rethinkdb.jobs` system table. Each row represents a single active query with its execution context.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Job ID | string | | hidden | Unique identifier for the job entry. Can be used to track or kill specific queries. |\n| Query | string | | | The ReQL query text being executed. Truncated to 4096 characters. May contain literal values from application code. |\n| Duration | duration | milliseconds | | Time elapsed since the query started executing. High values indicate long-running queries that may need investigation. |\n| Type | string | | | Job type (e.g., query, index_construction, disk_compaction). Useful for distinguishing user queries from background tasks. |\n| User | string | | | RethinkDB user account that initiated the query. Useful for identifying workload by user or application. |\n| Client Address | string | | hidden | IP address of the client connection that submitted the query. |\n| Client Port | integer | | hidden | Port number of the client connection. |\n| Servers | string | | hidden | Comma-separated list of servers involved in executing this query. |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per RethinkDB instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| rethinkdb.cluster_servers_stats_request | success, timeout | servers |\n| rethinkdb.cluster_client_connections | connections | connections |\n| rethinkdb.cluster_active_clients | active | clients |\n| rethinkdb.cluster_queries | queries | queries/s |\n| rethinkdb.cluster_documents | read, written | documents/s |\n\n### Per server\n\nThese metrics refer to the server (cluster member).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| server_uuid | Server UUID. |\n| server_name | Server name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| rethinkdb.server_stats_request_status | success, timeout | status |\n| rethinkdb.server_client_connections | connections | connections |\n| rethinkdb.server_active_clients | active | clients |\n| rethinkdb.server_queries | queries | queries/s |\n| rethinkdb.server_documents | read, written | documents/s |\n\n",integration_type:"collector",id:"go.d.plugin-rethinkdb-RethinkDB",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/rethinkdb/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-riakkv",plugin_name:"go.d.plugin",module_name:"riakkv",monitored_instance:{name:"Riak KV",link:"https://riak.com/products/riak-kv/index.html",categories:["data-collection.databases"],icon_filename:"riak.svg"},related_resources:{integrations:{list:[]}},alternative_monitored_instances:[],info_provided_to_referring_integrations:{description:""},keywords:["database","nosql","big data"]},overview:"# Riak KV\n\nPlugin: go.d.plugin\nModule: riakkv\n\n## Overview\n\nThis collector monitors RiakKV metrics about throughput, latency, resources and more.\n\n\nIt sends HTTP requests to the Riak [/stats](https://docs.riak.com/riak/kv/2.2.3/developing/api/http/status.1.html) endpoint.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Riak instances running on localhost that are listening on port 8098.\nOn startup, it tries to collect metrics from:\n\n- http://127.0.0.1:8098/stats\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **riakkv** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **riakkv**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/riakkv.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable /stats endpoint\n\nSee the RiakKV [configuration reference](https://docs.riak.com/riak/kv/2.2.3/developing/api/http/status.1.html).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 2 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8098/stats | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **riakkv** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the riakkv data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _riakkv_ (or scroll the list) to locate the **riakkv** collector.\n5. Click the **+** next to the **riakkv** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/riakkv.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/riakkv.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8098/stats\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8098/stats\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nWith enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8098/stats\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8098/stats\n\n - name: remote\n url: http://192.0.2.1:8098/stats\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `riakkv` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m riakkv\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m riakkv -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `riakkv` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep riakkv\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep riakkv /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep riakkv\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Riak KV instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| riak.kv.throughput | gets, puts | operations/s |\n| riak.dt.vnode_updates | counters, sets, maps | operations/s |\n| riak.search | queries | queries/s |\n| riak.search.documents | indexed | documents/s |\n| riak.consistent.operations | gets, puts | operations/s |\n| riak.kv.latency.get | mean, median, 95, 99, 100 | ms |\n| riak.kv.latency.put | mean, median, 95, 99, 100 | ms |\n| riak.dt.latency.counter_merge | mean, median, 95, 99, 100 | ms |\n| riak.dt.latency.set_merge | mean, median, 95, 99, 100 | ms |\n| riak.dt.latency.map_merge | mean, median, 95, 99, 100 | ms |\n| riak.search.latency.query | median, min, 95, 99, 999, max | ms |\n| riak.search.latency.index | median, min, 95, 99, 999, max | ms |\n| riak.consistent.latency.get | mean, median, 95, 99, 100 | ms |\n| riak.consistent.latency.put | mean, median, 95, 99, 100 | ms |\n| riak.vm | processes | total |\n| riak.vm.memory.processes | allocated, used | MB |\n| riak.kv.siblings_encountered.get | mean, median, 95, 99, 100 | siblings |\n| riak.kv.objsize.get | mean, median, 95, 99, 100 | KB |\n| riak.search.vnodeq_size | mean, median, 95, 99, 100 | messages |\n| riak.search.index | index_fail, bad_entry, extract_fail | errors |\n| riak.core.protobuf_connections | active | connections |\n| riak.core.repairs | read | repairs |\n| riak.core.fsm_active | get, put, secondary index, list keys | fsms |\n| riak.core.fsm_rejected | get, put | fsms |\n\n",integration_type:"collector",id:"go.d.plugin-riakkv-Riak_KV",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/riakkv/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-rspamd",plugin_name:"go.d.plugin",module_name:"rspamd",monitored_instance:{name:"Rspamd",link:"https://rspamd.com/",categories:["data-collection.applications"],icon_filename:"globe.svg"},related_resources:{integrations:{list:[{plugin_name:"go.d.plugin",module_name:"httpcheck"},{plugin_name:"apps.plugin",module_name:"apps"}]}},alternative_monitored_instances:[],info_provided_to_referring_integrations:{description:""},keywords:["spam","rspamd","email"]},overview:'# Rspamd\n\nPlugin: go.d.plugin\nModule: rspamd\n\n## Overview\n\nThis collector monitors the activity and performance of Rspamd servers. It gathers various metrics including scanned emails, learned messages, spam/ham counts, and actions taken on emails (reject, rewrite, etc.).\n\n\nIt retrieves statistics from Rspamd\'s [built-in web server](https://rspamd.com/doc/workers/controller.html) by making HTTP requests to the `/stat` endpoint.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nRspamd can be monitored further using the following other integrations:\n\n- {% relatedResource id="go.d.plugin-httpcheck-HTTP_Endpoints" %}HTTP Endpoints{% /relatedResource %}\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Rspamd instances running on localhost that are listening on port 11334.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **rspamd** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **rspamd**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/rspamd.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:11334 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **rspamd** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the rspamd data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _rspamd_ (or scroll the list) to locate the **rspamd** collector.\n5. Click the **+** next to the **rspamd** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/rspamd.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/rspamd.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:11334\n\n```\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:11334\n username: username\n password: password\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:11334\n\n - name: remote\n url: http://192.0.2.1:11334\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `rspamd` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m rspamd\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m rspamd -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `rspamd` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep rspamd\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep rspamd /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep rspamd\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Rspamd instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| rspamd.classifications | ham, spam | messages/s |\n| rspamd.actions | reject, soft_reject, rewrite_subject, add_header, greylist, custom, discard, quarantine, no_action | messages/s |\n| rspamd.scans | scanned | messages/s |\n| rspamd.learns | learned | messages/s |\n| rspamd.connections | connections | connections/s |\n| rspamd.control_connections | control_connections | connections/s |\n\n",integration_type:"collector",id:"go.d.plugin-rspamd-Rspamd",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/rspamd/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-samba",plugin_name:"go.d.plugin",module_name:"samba",monitored_instance:{name:"Samba",link:"https://www.samba.org/samba/",icon_filename:"samba.svg",categories:["data-collection.storage"]},keywords:["samba","smb","file sharing"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Samba\n\nPlugin: go.d.plugin\nModule: samba\n\n## Overview\n\nThis collector monitors Samba syscalls and SMB2 calls. It relies on the [`smbstatus`](https://www.samba.org/samba/docs/current/man-html/smbstatus.1.html) CLI tool but avoids directly executing the binary. Instead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment. This approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.\nExecuted commands:\n- `smbstatus -P`\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **samba** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **samba**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/samba.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Verifying and Enabling Profiling for SMBd\n\n1. **Check for Profiling Support**\n\n Before enabling profiling, it\'s important to verify if `smbd` was compiled with profiling capabilities. Run the following command as root user (using `sudo`) to check:\n\n ```bash\n $ sudo smbd --build-options | grep WITH_PROFILE\n WITH_PROFILE\n ```\n\n If the command outputs `WITH_PROFILE`, profiling is supported. If not, you\'ll need to recompile `smbd` with profiling enabled (refer to Samba documentation for specific instructions).\n\n2. **Enable Profiling**\n\n Once you\'ve confirmed profiling support, you can enable it using one of the following methods:\n\n - **Command-Line Option**\n Start smbd with the `-P 1` option when invoking it directly from the command line.\n - **Configuration File**\n Modify the `smb.conf` configuration file located at `/etc/samba/smb.conf` (the path might vary slightly depending on your system). Add the following line to the `[global]` section:\n\n ```bash\n smbd profiling level = count\n ```\n3. **Restart the Samba service**\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| timeout | smbstatus binary execution timeout. | 2 | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **samba** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the samba data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _samba_ (or scroll the list) to locate the **samba** collector.\n5. Click the **+** next to the **samba** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/samba.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/samba.conf\n```\n\n##### Examples\n\n###### Custom update_every\n\nAllows you to override the default data collection interval.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: samba\n update_every: 5 # Collect statistics every 5 seconds\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `samba` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m samba\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m samba -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `samba` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep samba\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep samba /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep samba\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per syscall\n\nThese metrics refer to the the Syscall.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| syscall | Syscall name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| samba.syscall_calls | syscalls | calls/s |\n| samba.syscall_transferred_data | transferred | bytes/s |\n\n### Per smb2call\n\nThese metrics refer to the the SMB2 Call.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| smb2call | SMB2 call name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| samba.smb2_call_calls | smb2 | calls/s |\n| samba.smb2_call_transferred_data | in, out | bytes/s |\n\n",integration_type:"collector",id:"go.d.plugin-samba-Samba",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/samba/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-scaleio",plugin_name:"go.d.plugin",module_name:"scaleio",monitored_instance:{name:"Dell EMC ScaleIO",link:"https://www.dell.com/en-ca/dt/storage/scaleio/scaleioreadynode.htm",icon_filename:"dell.svg",categories:["data-collection.storage"]},keywords:["scaleio"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Dell EMC ScaleIO\n\nPlugin: go.d.plugin\nModule: scaleio\n\n## Overview\n\nThis collector monitors ScaleIO (VxFlex OS) instances via VxFlex OS Gateway API.\n\nIt collects metrics for the following ScaleIO components:\n\n- System\n- Storage Pool\n- Sdc\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **scaleio** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **scaleio**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/scaleio.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | https://127.0.0.1 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **scaleio** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the scaleio data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _scaleio_ (or scroll the list) to locate the **scaleio** collector.\n5. Click the **+** next to the **scaleio** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/scaleio.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/scaleio.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1\n username: admin\n password: password\n tls_skip_verify: yes # self-signed certificate\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instance.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1\n username: admin\n password: password\n tls_skip_verify: yes # self-signed certificate\n\n - name: remote\n url: https://203.0.113.10\n username: admin\n password: password\n tls_skip_verify: yes\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `scaleio` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m scaleio\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m scaleio -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `scaleio` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep scaleio\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep scaleio /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep scaleio\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Dell EMC ScaleIO instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| scaleio.system_capacity_total | total | KiB |\n| scaleio.system_capacity_in_use | in_use | KiB |\n| scaleio.system_capacity_usage | thick, decreased, thin, snapshot, spare, unused | KiB |\n| scaleio.system_capacity_available_volume_allocation | available | KiB |\n| scaleio.system_capacity_health_state | protected, degraded, in_maintenance, failed, unavailable | KiB |\n| scaleio.system_workload_primary_bandwidth_total | total | KiB/s |\n| scaleio.system_workload_primary_bandwidth | read, write | KiB/s |\n| scaleio.system_workload_primary_iops_total | total | iops/s |\n| scaleio.system_workload_primary_iops | read, write | iops/s |\n| scaleio.system_workload_primary_io_size_total | io_size | KiB |\n| scaleio.system_rebalance | read, write | KiB/s |\n| scaleio.system_rebalance_left | left | KiB |\n| scaleio.system_rebalance_time_until_finish | time | seconds |\n| scaleio.system_rebuild | read, write | KiB/s |\n| scaleio.system_rebuild_left | left | KiB |\n| scaleio.system_defined_components | devices, fault_sets, protection_domains, rfcache_devices, sdc, sds, snapshots, storage_pools, volumes, vtrees | components |\n| scaleio.system_components_volumes_by_type | thick, thin | volumes |\n| scaleio.system_components_volumes_by_mapping | mapped, unmapped | volumes |\n\n### Per storage pool\n\nThese metrics refer to the storage pool.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| scaleio.storage_pool_capacity_total | total | KiB |\n| scaleio.storage_pool_capacity_in_use | in_use | KiB |\n| scaleio.storage_pool_capacity_usage | thick, decreased, thin, snapshot, spare, unused | KiB |\n| scaleio.storage_pool_capacity_utilization | used | percentage |\n| scaleio.storage_pool_capacity_available_volume_allocation | available | KiB |\n| scaleio.storage_pool_capacity_health_state | protected, degraded, in_maintenance, failed, unavailable | KiB |\n| scaleio.storage_pool_components | devices, snapshots, volumes, vtrees | components |\n\n### Per sdc\n\nThese metrics refer to the SDC (ScaleIO Data Client).\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| scaleio.sdc_mdm_connection_state | connected | boolean |\n| scaleio.sdc_bandwidth | read, write | KiB/s |\n| scaleio.sdc_iops | read, write | iops/s |\n| scaleio.sdc_io_size | read, write | KiB |\n| scaleio.sdc_num_of_mapped_volumed | mapped | volumes |\n\n",integration_type:"collector",id:"go.d.plugin-scaleio-Dell_EMC_ScaleIO",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/scaleio/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-sensors",plugin_name:"go.d.plugin",module_name:"sensors",monitored_instance:{name:"Linux Sensors",link:"https://hwmon.wiki.kernel.org/lm_sensors",icon_filename:"microchip.svg",categories:["data-collection.hardware-and-sensors"]},keywords:["sensors","temperature","voltage","current","power","fan","energy","humidity","intrusion"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Linux Sensors\n\nPlugin: go.d.plugin\nModule: sensors\n\n## Overview\n\nThis collector gathers real-time system sensor statistics using the [sysfs](https://www.kernel.org/doc/Documentation/hwmon/sysfs-interface) interface.\n\nSupported sensors:\n\n- Temperature\n- Voltage\n- Fan\n- Current\n- Power\n- Energy\n- Humidity\n- Intrusion\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAutomatically discovers and exposes all available sensors on the system through the [sysfs](https://www.kernel.org/doc/Documentation/hwmon/sysfs-interface) interface.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **sensors** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **sensors**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/sensors.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary=\"Config options\" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| relabel | A list used to update existing sensor labels or add labels to sensors that don't have them. | [] | no |\n| relabel[].chip | [Pattern](https://github.com/netdata/netdata/blob/master/src/libnetdata/simple_pattern/README.md#simple-patterns) to match the `chip_id` label value. | | no |\n| relabel[].sensors | A list of sensors to be relabeled for the specified chip. | [] | no |\n| relabel[].sensors[].name | The exact sensor name (e.g., `'temp1'`, `'in1'`, `'voltage1'`). | | no |\n| relabel[].sensors[].label | The new label value for the sensor. | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **sensors** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the sensors data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _sensors_ (or scroll the list) to locate the **sensors** collector.\n5. Click the **+** next to the **sensors** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/sensors.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/sensors.conf\n```\n\n##### Examples\n\n###### Custom update_every\n\nAllows you to override the default data collection interval.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: sensors\n update_every: 5 # Collect sensors statistics every 5 seconds\n\n```\n{% /details %}\n###### Renaming labels\n\nAllows you to override/add labels.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: sensors\n relabel:\n - chip: as99127f-*\n sensors:\n - name: temp1\n label: Mobo Temp\n - name: temp2\n label: CPU0 Temp\n\n```\n{% /details %}\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `sensors` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m sensors\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m sensors -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `sensors` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep sensors\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep sensors /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep sensors\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per sensor\n\nThese metrics refer to the system sensor.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| chip | The path to the sensor's chip device, excluding the /sys/devices prefix. This provides a unique identifier for the physical hardware component. |\n| chip_id | A unique identifier for the sensor's chip, formatted as `chipName-busType-hash`. |\n| sensor | The name of the specific sensor within the chip device. This provides a direct identifier for the individual measurement point. |\n| label | A label provided by the kernel driver to indicate the intended use or purpose of the sensor. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| sensors.chip_sensor_temperature | input | Celsius |\n| sensors.chip_sensor_temperature_alarm | clear, triggered | status |\n| sensors.chip_sensor_voltage | input | Volts |\n| sensors.chip_sensor_voltage_average | average | Volts |\n| sensors.chip_sensor_voltage_alarm | clear, triggered | status |\n| sensors.chip_sensor_fan | input | RPM |\n| sensors.chip_sensor_fan_alarm | clear, triggered | status |\n| sensors.chip_sensor_current | input | Amperes |\n| sensors.chip_sensor_current_average | average | Amperes |\n| sensors.chip_sensor_current_alarm | clear, triggered | status |\n| sensors.chip_sensor_power | input | Watts |\n| sensors.chip_sensor_power_average | average | Watts |\n| sensors.chip_sensor_power_alarm | clear, triggered | status |\n| sensors.chip_sensor_energy | input | Joules |\n| sensors.chip_sensor_humidity | input | percent |\n| sensors.chip_sensor_intrusion_alarm | clear, triggered | status |\n\n",integration_type:"collector",id:"go.d.plugin-sensors-Linux_Sensors",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/sensors/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-smartctl",plugin_name:"go.d.plugin",module_name:"smartctl",monitored_instance:{name:"S.M.A.R.T.",link:"https://linux.die.net/man/8/smartd",icon_filename:"smart.png",categories:["data-collection.storage"]},keywords:["smart","S.M.A.R.T.","SCSI devices","ATA devices"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# S.M.A.R.T.\n\nPlugin: go.d.plugin\nModule: smartctl\n\n## Overview\n\nThis collector monitors the health status of storage devices by analyzing S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology) counters.\nIt relies on the `smartctl` CLI tool from smartmontools but avoids directly executing the binary.\nInstead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment.\nThis approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.\n\nExecuted commands:\n- `smartctl --json --scan`\n- `smartctl --json --all {deviceName} --device {deviceType} --nocheck {powerMode}`\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n- BSD\n- Windows\n- macOS\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **smartctl** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **smartctl**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/smartctl.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Install smartmontools (v7.0+)\n\nInstall `smartmontools` version 7.0 or later using your operating system\'s package manager. Version 7.0 introduced the `--json` output mode, which is required for this collector to function properly.\n\nOn macOS, Netdata runs `smartctl` through the setuid `ndsudo` helper. The `smartctl` binary must be found in `ndsudo`\'s search PATH (`/bin`, `/sbin`, `/usr/bin`, `/usr/sbin`, `/usr/local/bin`, `/usr/local/sbin`, `/opt/homebrew/bin`, `/opt/homebrew/sbin`); install it via a package manager that places it in one of those directories. Apple internal NVMe/Apple Fabric storage may still not expose detailed SMART data through smartmontools even when the tool is installed.\n\n\n#### For Netdata running in a Docker container\n\n**Provide access to storage devices**.\n\nNetdata requires the `SYS_RAWIO` capability and access to the storage devices to run the `smartctl` collector inside a Docker container. Here\'s how you can achieve this:\n\n- `docker run`\n\n ```bash\n docker run --cap-add SYS_RAWIO --device /dev/sda:/dev/sda ...\n ```\n\n- `docker-compose.yml`\n\n ```yaml\n services:\n netdata:\n cap_add:\n - SYS_PTRACE\n - SYS_ADMIN\n - SYS_RAWIO # smartctl\n devices:\n - "/dev/sda:/dev/sda"\n ```\n\n> **Multiple Devices**: These examples only show mapping of one device (/dev/sda). You\'ll need to add additional `--device` options (in docker run) or entries in the `devices` list (in docker-compose.yml) for each storage device you want Netdata\'s smartctl collector to monitor.\n\n> **NVMe Devices**: Do not map NVMe devices using this method. Netdata uses a [dedicated collector](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/collector/nvme#readme) to monitor NVMe devices on Linux/BSD. On macOS, `macos.plugin` provides native NVMe health metrics when IOKit exposes readable SMART-capable NVMe services.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Netdata chart update interval (seconds). Collector may use cached data if this is less than **poll_devices_every**. | 10 | no |\n| | timeout | `smartctl` binary execution timeout (seconds). | 5 | no |\n| | scan_every | Device discovery interval using `smartctl --scan` (seconds). Set 0 to scan only once at startup. | 900 | no |\n| | poll_devices_every | Device polling interval (seconds). Data is cached for this interval. | 300 | no |\n| **Target** | device_selector | Pattern to match the \'info name\' of devices as reported by `smartctl --scan --json`. | * | no |\n| | extra_devices | Manually specify devices not auto-detected by `smartctl --scan`. Each entry must include both a name and a type. | [] | no |\n| **Performance** | concurrent_scans | Number of devices to scan concurrently. Set 0 for sequential scanning (default). Helps performance when monitoring many devices. | 0 | no |\n| | [no_check_power_mode](#option-performance-no-check-power-mode) | Skip data collection when device is in low-power mode (avoids unnecessary spin-up). | standby | no |\n\n<a id="option-performance-no-check-power-mode"></a>\n##### no_check_power_mode\n\nValid arguments:\n\n| Mode | Description |\n|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| never | Check the device always. |\n| sleep | Skip check if device is in SLEEP mode. |\n| standby | Skip check if device is in SLEEP or STANDBY mode (prevents spin-up). |\n| idle | Skip check if device is in SLEEP, STANDBY, or IDLE mode (not recommended since disks may still be spinning). |\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **smartctl** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the smartctl data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _smartctl_ (or scroll the list) to locate the **smartctl** collector.\n5. Click the **+** next to the **smartctl** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/smartctl.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/smartctl.conf\n```\n\n##### Examples\n\n###### Custom devices poll interval\n\nAllows you to override the default devices poll interval (data collection).\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: smartctl\n poll_devices_every: 60 # Collect S.M.A.R.T statistics every 60 seconds\n\n```\n{% /details %}\n###### Concurrent scanning for multiple devices\n\nThis example demonstrates enabling concurrent scanning to improve performance when monitoring many devices.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: smartctl\n concurrent_scans: 4 # Scan up to 4 devices concurrently\n\n```\n{% /details %}\n###### Extra devices\n\nThis example demonstrates using `extra_devices` to manually add a storage device (`/dev/sdc`) not automatically detected by `smartctl --scan`.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: smartctl\n extra_devices:\n - name: /dev/sdc\n type: jmb39x-q,3\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `smartctl` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m smartctl\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m smartctl -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `smartctl` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep smartctl\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep smartctl /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep smartctl\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per controller\n\nThese metrics refer to the Storage Device.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device_name | Device name |\n| device_type | Device type |\n| model_name | Model name |\n| serial_number | Serial number |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| smartctl.device_smart_status | passed, failed | status |\n| smartctl.device_ata_smart_error_log_count | error_log | logs |\n| smartctl.device_power_on_time | power_on_time | seconds |\n| smartctl.device_temperature | temperature | Celsius |\n| smartctl.device_power_cycles_count | power | cycles |\n| smartctl.device_read_errors_rate | corrected, uncorrected | errors/s |\n| smartctl.device_write_errors_rate | corrected, uncorrected | errors/s |\n| smartctl.device_verify_errors_rate | corrected, uncorrected | errors/s |\n| smartctl.device_smart_attr_{attribute_name} | {attribute_name} | {attribute_unit} |\n| smartctl.device_smart_attr_{attribute_name}_normalized | {attribute_name} | value |\n\n",integration_type:"collector",id:"go.d.plugin-smartctl-S.M.A.R.T.",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/smartctl/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-snmp",plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"SNMP devices",link:"",icon_filename:"SNMP.png",categories:["network-performance-monitoring.device-metrics"]},keywords:["snmp","mib","oid","network","router","switch","firewall","ap","access point","wireless controller","wlc","wifi","vpn","pdu","ups","nas","san","printer","bgp","ospf","ucd","3com","a10","alcatel","lucent","nokia","anue","apc","netbotz","arista","aruba","audiocodes","avaya","avocent","avtech","roomalert","barracuda","bluecat","brocade","cumulus","brother","chatsworth","checkpoint","chrysalis","cisco","cisco asa","cisco asr","cisco catalyst","cisco nexus","cisco ironport","cisco ics","cisco wlc","cisco ucs","meraki","citrix","netscaler","cradlepoint","cyberpower","dell","dell emc","poweredge","sonicwall","dialogic","dlink","d-link","eaton","exagrid","extreme","f5","big-ip","fireeye","bluecoat","proxysg","sgos","symantec","fortinet","fortigate","fortiswitch","gigamon","hp","hewlett packard","hp ilo","ilo","ilo4","hp h3c","hp icf","hpe","proliant","huawei","3com huawei","ibm","datapower","lenovo","idrac","dell idrac","infinera","coriant","infoblox","isilon","ixsystems","truenas","juniper","junos","kyocera","linksys","mcafee","mikrotik","mellanox","nasuni","nec","net-snmp","netsnmp","netapp","netgear","readynas","omron","opengear","palo alto","cloudgenix","peplink","raritan","riverbed","ruckus","serveriron","server-iron","servertech","silverpeak","silver peak","edgeconnect","sinetica","sophos","synology","diskstation","tp-link","tplink","tripplite","tripp lite","ubiquiti","unifi","velocloud","vertiv","liebert","watchguard","western digital","wd","mycloud","zebra","zyxel"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# SNMP devices\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nThis collector discovers and monitors any SNMP-enabled network device.\n\n- **Built-in vendor profiles**: Netdata ships with a [large library of profiles](https://github.com/netdata/netdata/tree/master/src/go/plugin/go.d/config/go.d/snmp.profiles/default) for major vendors, enabling automatic, out-of-the-box monitoring\u2014**no manual OID configuration needed** for common hardware.\n- **Custom profiles supported**: Users can extend or override stock profiles to add new devices, modify charts, or collect additional OIDs.\n- **Automatic vendor/model detection**: Devices are matched to the right profile using selectors such as `sysObjectID` and `sysDescr`.\n- **ICMP ping**: Optional round-trip latency monitoring alongside SNMP, with a `ping_only` mode available.\n- **SNMP v1, v2c, and v3 support**: Fully implemented via the [gosnmp](https://github.com/gosnmp/gosnmp) library.\n- **Shared device-level licensing metrics for supported profiles**: When a profile exposes license telemetry, Netdata emits compact per-device licensing charts for earliest expiry, license-state counts (`healthy`, `informational`, `degraded`, `broken`, `ignored`), and highest usage pressure. Supported profile coverage includes Check Point licensing state and per-blade expiry, Fortinet FortiGate contract/service/account expirations, Cisco traditional licensing end-date/remaining-time/state/usage telemetry, Cisco Smart Licensing authorization, certificate, evaluation, and state telemetry, Sophos Firewall subscription state and per-license expiry telemetry, Blue Coat ProxySG application/feature/component expiry, expire-type, and state telemetry, and basic MikroTik RouterOS upgrade-entitlement telemetry. For MikroTik, epoch-like placeholder `mtxrLicUpgrUntil` values are ignored instead of treated as real expired licenses.\n- **Interactive licensing drill-down**: The `snmp:licenses` function follows the existing SNMP function pattern and shows normalized licensing rows for the selected SNMP job/device using cached collector data.\n\n\n**Built-in profiles for major vendors:**\n\n| Category | Vendors |\n|----------|---------|\n| Switches & Routers | Cisco (Catalyst, Nexus, ASR, ISR), Arista, Juniper, HP/HPE, Dell, Extreme |\n| Firewalls | Palo Alto, Fortinet FortiGate, Cisco ASA, Checkpoint, SonicWall, Sophos |\n| Wireless | Aruba, Cisco WLC, Ubiquiti, Alcatel-Lucent |\n| Load Balancers | F5 BIG-IP, Citrix NetScaler, A10 Thunder |\n| Infrastructure | APC UPS/PDU, Dell servers, plus standard MIBs (BGP, OSPF, TCP/UDP) |\n\n> This table highlights common vendors\u2014the **full library includes many more**.\n\n**SNMP BGP monitoring**\n\nNetdata ships BGP monitoring profiles for generic `BGP4-MIB` devices and vendor MIBs including Cisco, Juniper, Nokia SR OS, Huawei, Arista, and Dell.\n\nThe operator-facing BGP charts are normalized under:\n\n- `snmp.bgp.peers.*`\n- `snmp.bgp.peer_families.*`\n- `snmp.bgp.devices.peer_counts`\n- `snmp.bgp.devices.peer_states`\n\nRich per-peer diagnostics such as previous state, last error, graceful-restart state, and vendor unavailability reasons are exposed through the **Live** function `snmp:bgp-peers` instead of being charted as regular time-series.\n\nThis SNMP BGP surface is designed for:\n\n- peer/session availability and FSM state\n- established uptime\n- BGP UPDATE and message traffic\n- route-count monitoring where the vendor MIB exposes truthful counts\n- stock alerts for peer down, update churn, transition anomalies, and accepted-prefix drift\n\n**Important limits**\n\n- Standard `BGP4-MIB` gives peer health and message counters, but **not** full route-count coverage.\n- Some route counters are **current gauges**, while others are **cumulative totals**. Netdata keeps them separate instead of flattening unlike semantics into one fake chart.\n- Huawei contributes to device-level **peer/session counts**, but not device-level **peer state counts** in this SNMP batch.\n- SNMP does **not** provide live per-route inventory. If you need \u201call routes to and from a peer in real time\u201d, that belongs to BMP, not this integration page.\n\n\n:::info\n\nSee: [SNMP Profile Format](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/profile-format.md) to learn how to write your own or extend stock ones.\n\n:::\n\n**Profile locations**\n\n| Type | Default path | Notes |\n|------|--------------|-------|\n| **Stock profiles** | `/usr/lib/netdata/conf.d/go.d/snmp.profiles/default/` | Shipped with Netdata |\n| **User profiles** | `/etc/netdata/go.d/snmp.profiles/` | Place custom or modified profiles here |\n\n> Depending on installation, paths may be prefixed with `/opt/netdata`.\n\nA **profile** defines:\n\n- Device selectors for auto-matching (e.g. `sysObjectID`, `sysDescr`)\n- The exact OIDs to collect (scalars and tables)\n- How to label table rows (metric tags)\n- Chart/metric metadata (units, families, types), including optional **virtual metrics**\n\n**At runtime, the collector**:\n\n1. Reads standard system OIDs (e.g. `sysObjectID`, `sysDescr`) to identify the device\n2. Picks the best matching vendor/model profile(s)\n3. Collects exactly the metrics those profiles define\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nSNMP service discovery can automatically scan configured networks and feed the SNMP collector with discovered devices.\n\n- Disabled by default; enable and configure explicitly.\n- Supports single IPs, ranges, and CIDR blocks (up to 512 IPs per subnet).\n- Uses the provided SNMP credentials (v1/v2c/v3) to probe devices.\n- Caches discovery results (configurable) to reduce network load.\n- At collection time, each discovered device is matched to the appropriate [profile](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/profile-format.md) based on its `sysObjectID`, `sysDescr`, and the profile\u2019s selector rules.\n\nThe configuration file name is [go.d/sd/snmp.conf](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/sd/snmp.conf).\n\nYou can edit the configuration file using the edit-config script from the Netdata [config directory](https://learn.netdata.cloud/docs/netdata-agent/configuration#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/sd/snmp.conf\n```\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\n**Device constraints**: Many SNMP devices (e.g., access switches) have limited CPU/ASIC time for management. If you see timeouts or gaps, reduce `update_every` or `max_repetitions`, or stagger polling across devices.\n\n**Concurrent polling**: Parallel access by multiple tools may cause missed counters on some devices. Increase the collection interval (`update_every`) to reduce request pressure.\n\n",setup:'## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Prepare the SNMP device\n\nBefore configuring the collector:\n- Enable the SNMP service on the target device (via its management interface).\n- Ensure the device is reachable from the Netdata node on UDP/161.\n- Gather connection details: IP/DNS, SNMP version, and either a community (v1/v2c) or v3 credentials (user, auth/priv).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection frequency. | 10 | no |\n| | autodetection_retry | Recheck interval in seconds. Zero means no recheck will be scheduled. | 0 | no |\n| **Target** | hostname | Target host (IP or DNS name, IPv4/IPv6). | | yes |\n| **SNMPv1/2** | community | SNMPv1/2 community string. | public | no |\n| **SNMPv3** | user.name | SNMPv3 user name. | | no |\n| | [user.level](#option-snmpv3-user-level) | Security level of SNMPv3 messages. | | no |\n| | [user.auth_proto](#option-snmpv3-user-auth-proto) | Authentication protocol for SNMPv3 messages. | | no |\n| | user.auth_key | Authentication protocol pass phrase for SNMPv3 messages. | | no |\n| | [user.priv_proto](#option-snmpv3-user-priv-proto) | Privacy protocol for SNMPv3 messages. | | no |\n| | user.priv_key | Privacy protocol pass phrase for SNMPv3 messages. | | no |\n| | user.context_name | SNMPv3 context name used to address a specific MIB view on multi-context agents (e.g. virtual routers, logical partitions, snmpsim-simulated devices). Leave empty to use the default context. | | no |\n| **SNMP transport** | options.version | SNMP version. Available versions: 1, 2, 3. | 2 | no |\n| | options.port | Target port. | 161 | no |\n| | options.retries | Retries to attempt. | 1 | no |\n| | options.timeout | SNMP request/response timeout. | 5 | no |\n| | options.max_repetitions | Controls how many SNMP variables to retrieve in a single GETBULK request. | 25 | no |\n| | options.max_request_size | Maximum number of OIDs allowed in a single GET request. | 60 | no |\n| **Ping** | ping_only | Collect only ICMP round-trip metrics and skip periodic SNMP polling. Implies ping is enabled regardless of the `ping.enabled` setting. A minimal SNMP sysInfo probe still runs at setup for naming/labels/metadata. | no | no |\n| | ping.enabled | Enable ICMP round-trip measurements (runs alongside SNMP). When disabled, no ping metrics are collected. | yes | no |\n| | ping.privileged | Use raw ICMP (privileged). If false, unprivileged mode is used. | yes | no |\n| | ping.packets | Number of ping packets to send per iteration. | 3 | no |\n| | ping.interval | Interval between sending ping packets. | 100ms | no |\n| **Profiles** | manual_profiles | A list of profiles to force-apply when auto-detection cannot be used. | [] | no |\n| **Virtual node** | create_vnode | If set, the collector will create a Netdata Virtual Node for this SNMP device, which will appear as a separate Node in Netdata. | true | no |\n| | vnode_device_down_threshold | Number of consecutive failed data collections before marking the device as down. | 3 | no |\n| | vnode.guid | A unique identifier for the Virtual Node. If not set, a GUID will be automatically generated from the device\'s IP address. | | no |\n| | vnode.hostname | The hostname that will be used for the Virtual Node. If not set, the device\'s hostname will be used. | | no |\n| | vnode.labels | Additional key-value pairs to associate with the Virtual Node. | | no |\n\n<a id="option-snmpv3-user-level"></a>\n##### user.level\n\nThe security of an SNMPv3 message as per RFC 3414 (`user.level`):\n\n| String value | Int value | Description |\n|:------------:|:---------:|------------------------------------------|\n| none | 1 | no message authentication or encryption |\n| authNoPriv | 2 | message authentication and no encryption |\n| authPriv | 3 | message authentication and encryption |\n\n\n<a id="option-snmpv3-user-auth-proto"></a>\n##### user.auth_proto\n\nThe digest algorithm for SNMPv3 messages that require authentication (`user.auth_proto`):\n\n| String value | Int value | Description |\n|:------------:|:---------:|-------------------------------------------|\n| none | 1 | no message authentication |\n| md5 | 2 | MD5 message authentication (HMAC-MD5-96) |\n| sha | 3 | SHA message authentication (HMAC-SHA-96) |\n| sha224 | 4 | SHA message authentication (HMAC-SHA-224) |\n| sha256 | 5 | SHA message authentication (HMAC-SHA-256) |\n| sha384 | 6 | SHA message authentication (HMAC-SHA-384) |\n| sha512 | 7 | SHA message authentication (HMAC-SHA-512) |\n\n\n<a id="option-snmpv3-user-priv-proto"></a>\n##### user.priv_proto\n\nThe encryption algorithm for SNMPv3 messages that require privacy (`user.priv_proto`):\n\n| String value | Int value | Description |\n|:------------:|:---------:|-------------------------------------------------------------------------|\n| none | 1 | no message encryption |\n| des | 2 | ES encryption (CBC-DES) |\n| aes | 3 | 128-bit AES encryption (CFB-AES-128) |\n| aes192 | 4 | 192-bit AES encryption (CFB-AES-192) with "Blumenthal" key localization |\n| aes256 | 5 | 256-bit AES encryption (CFB-AES-256) with "Blumenthal" key localization |\n| aes192c | 6 | 192-bit AES encryption (CFB-AES-192) with "Reeder" key localization |\n| aes256c | 7 | 256-bit AES encryption (CFB-AES-256) with "Reeder" key localization |\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\n\n###### SNMPv1/2\n\nIn this example:\n\n- the SNMP device is `192.0.2.1`.\n- the SNMP version is `2`.\n- the SNMP community is `public`.\n- we will update the values every 10 seconds.\n\nProfiles are auto-selected at runtime\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: switch\n update_every: 10\n hostname: 192.0.2.1\n community: public\n options:\n version: 2\n\n```\n{% /details %}\n###### SNMPv3\n\nTo use SNMPv3:\n\n- use `user` instead of `community`.\n- set `options.version` to 3.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: switch\n update_every: 10\n hostname: 192.0.2.1\n options:\n version: 3\n user:\n name: username\n level: authPriv\n auth_proto: sha256\n auth_key: auth_protocol_passphrase\n priv_proto: aes256\n priv_key: priv_protocol_passphrase\n\n```\n{% /details %}\n###### SNMPv3 with multiple devices\n\nThis example monitors multiple SNMP devices that share the same SNMPv3 credentials.\n\nIt uses [YAML anchors](https://yaml.org/spec/1.2.2/#3222-anchors-and-aliases) to define the\nfull job once (`&snmp_v3_job`) and then reuse it with `<<: *snmp_v3_job`,\noverriding only `name` and `hostname` for each additional device.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - &snmp_v3_job\n name: switch1\n update_every: 10\n hostname: 192.0.2.1\n options:\n version: 3\n user:\n name: username\n level: authPriv\n auth_proto: sha256\n auth_key: auth_protocol_passphrase\n priv_proto: aes256\n priv_key: priv_protocol_passphrase\n\n - <<: *snmp_v3_job\n name: switch2\n hostname: 192.0.2.2\n\n - <<: *snmp_v3_job\n name: switch3\n hostname: 192.0.2.3\n\n```\n{% /details %}\n###### BGP router with forced profile\n\nUse `manual_profiles` when auto-detection cannot safely distinguish the device, or when you want to force a specific vendor BGP profile during testing.\n\nThis example targets a Cisco ASR router and keeps the optional ICMP latency charts enabled.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: edge-router\n update_every: 10\n hostname: 192.0.2.10\n community: public\n manual_profiles:\n - cisco-asr\n options:\n version: 2\n\n```\n{% /details %}\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ snmp_license_expiring ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp.conf) | snmp.license.remaining_time | The earliest monitored SNMP license or subscription on this device is close to expiration. |\n| [ snmp_license_authorization_expiring ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp.conf) | snmp.license.authorization_remaining_time | The license authorization timer on this device is close to expiration. |\n| [ snmp_license_certificate_expiring ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp.conf) | snmp.license.certificate_remaining_time | The license certificate timer on this device is close to expiration. |\n| [ snmp_license_grace_period_ending ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp.conf) | snmp.license.grace_remaining_time | The licensing grace or evaluation period on this device is ending or already expired. |\n| [ snmp_license_state_warning ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp.conf) | snmp.license.state | One or more monitored licenses on this device are degraded, in grace, or otherwise in warning state. |\n| [ snmp_license_state_critical ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp.conf) | snmp.license.state | One or more monitored licenses on this device are expired, invalid, unauthorized, or otherwise in critical state. |\n| [ snmp_license_usage_high ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp.conf) | snmp.license.usage_percent | The most constrained monitored license pool on this device is nearing exhaustion. |\n| [ snmp_bgp_peer_down ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_bgp.conf) | snmp.bgp.peers.availability | BGP peer is administratively enabled but remains out of Established |\n| [ snmp_bgp_peer_family_down ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_bgp.conf) | snmp.bgp.peer_families.availability | BGP peer-family is administratively enabled but remains out of Established |\n| [ snmp_bgp_peer_transitions_anomaly ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_bgp.conf) | snmp.bgp.peers.established_transitions | ML anomaly detection on per-peer established transition activity |\n| [ snmp_bgp_peer_family_transitions_anomaly ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_bgp.conf) | snmp.bgp.peer_families.established_transitions | ML anomaly detection on per-peer-family established transition activity |\n| [ snmp_bgp_peer_updates_anomaly ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_bgp.conf) | snmp.bgp.peers.update_traffic | ML anomaly detection on per-peer BGP UPDATE traffic |\n| [ snmp_bgp_peer_family_updates_anomaly ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_bgp.conf) | snmp.bgp.peer_families.update_traffic | ML anomaly detection on per-peer-family BGP UPDATE traffic |\n| [ snmp_bgp_peer_family_prefixes_accepted_anomaly ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_bgp.conf) | snmp.bgp.peer_families.route_counts.current | ML anomaly detection on accepted-prefix gauges where the vendor MIB exposes them |\n",functions:"## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Network Interfaces\n\nProvides detailed network interface traffic and status metrics from SNMP-enabled devices.\n\nThis function queries cached SNMP interface data collected during regular polling cycles and presents it in a sortable, filterable table. Each row represents a network interface on the monitored SNMP device, with comprehensive metrics for traffic analysis, error monitoring, and operational status tracking.\n\nUse cases:\n- Identify top bandwidth-consuming interfaces on routers, switches, and access points\n- Monitor interface operational and administrative status for network health\n- Investigate packet errors, discards, and unusual traffic patterns\n\nData is sourced from the IF-MIB (RFC 2863) interface counters and is cached from the last successful SNMP collection. No additional SNMP requests are triggered when calling this function.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Snmp:interfaces` |\n| Require Cloud | no |\n| Performance | Uses cached SNMP data only, no additional SNMP requests are triggered:<br/>\u2022 Responses are instantaneous from memory cache<br/>\u2022 Large devices with many interfaces may return many rows |\n| Security | Exposes interface names, operational status, and traffic counters only:<br/>\u2022 No packet payloads or authentication credentials are exposed<br/>\u2022 No device configuration details are exposed |\n| Availability | Available when:<br/>\u2022 The collector has completed at least one data collection cycle<br/>\u2022 Interface data is cached from the last successful SNMP collection<br/>\u2022 Returns HTTP 503 if cache is not ready yet |\n\n#### Prerequisites\n\nNo additional configuration is required.\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Type Group | select | Filter interfaces by their type classification group. Custom mapping categorizes IANA interface types into practical groups for easier filtering. | yes | ethernet | Ethernet (default), Aggregation, Virtual, Other |\n\n#### Returns\n\nNetwork interface metrics from cached SNMP data, including traffic rates, packet statistics, operational status, and error counters. Each row represents one physical or virtual interface.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Interface | string | | | Network interface name or identifier (e.g., eth0, GigabitEthernet1/0/1, Vlan100) |\n| Type | string | | | IANA-assigned interface type from IF-MIB (e.g., ethernetCsmacd, ieee80211, softwareLoopback) |\n| Type Group | string | | | Custom categorization mapping IANA interface types into practical groups: Ethernet (physical Ethernet interfaces), Aggregation (LAG/port-channels, bonds), Virtual (VLANs, loopbacks), or Other (all remaining types) |\n| Admin Status | string | | | Administrative state configured on the interface: up (enabled for use), down (administratively disabled), or testing (currently in test mode). Different from operational status. |\n| Oper Status | string | | | Current operational state of the interface: up (operational and passing traffic), down (not operational), testing (in test mode), unknown (status cannot be determined), dormant (waiting for external actions), notPresent (interface removed but configuration remains), or lowerLayerDown (interface down due to lower-layer issues) |\n| Traffic In | float | bit/s | | Inbound network traffic rate in bits per second. High values indicate heavy inbound data flow that may require capacity planning. |\n| Traffic Out | float | bit/s | | Outbound network traffic rate in bits per second. High values indicate heavy outbound data flow. Compare with Traffic In to identify asymmetric usage patterns. |\n| Unicast In | float | packets/s | hidden | Rate of unicast packets (destined for a single recipient) received per second. Normal traffic pattern for point-to-point communications. |\n| Unicast Out | float | packets/s | hidden | Rate of unicast packets (addressed to a single destination) transmitted per second. |\n| Broadcast In | float | packets/s | hidden | Rate of broadcast packets (sent to all nodes on network) received per second. High values may indicate network storms, ARP flooding, or misconfigured devices. |\n| Broadcast Out | float | packets/s | hidden | Rate of broadcast packets transmitted per second. Consistently high broadcast rates can degrade network performance. |\n| Packets In | float | packets/s | | Total inbound packet rate (sum of unicast, broadcast, and multicast) per second. Useful for overall interface load assessment. |\n| Packets Out | float | packets/s | | Total outbound packet rate (sum of unicast, broadcast, and multicast) per second. |\n| Errors In | float | packets/s | hidden | Rate of inbound packets with errors that prevented delivery. Non-zero values indicate physical layer issues (cable problems, signal integrity) or buffer overruns. |\n| Errors Out | float | packets/s | hidden | Rate of outbound packets with transmission errors. Non-zero values may indicate interface hardware issues, cabling problems, or duplex mismatches. |\n| Discards In | float | packets/s | | Rate of inbound packets deliberately discarded by the device (often due to resource constraints, security policies, or unrecognized frames). Unlike errors, the interface may have been functioning correctly but chose to drop the packet. |\n| Discards Out | float | packets/s | | Rate of outbound packets deliberately discarded. Can indicate output queue overflows, ACL drops, or security policy rejections. |\n| Multicast In | float | packets/s | hidden | Rate of multicast packets (destined for a group) received per second. Common in video streaming, multicast applications, and routing protocols. |\n| Multicast Out | float | packets/s | hidden | Rate of multicast packets transmitted per second. |\n\n### BGP Peers\n\nProvides detailed current BGP peer and peer-family state from cached SNMP data.\n\nThis function uses the normalized BGP surface produced during regular SNMP polling and presents it as a sortable, filterable troubleshooting table. It is designed for details that are useful operationally but should not be charted as regular time-series, such as previous state, last error, last down reason, graceful restart state, and vendor-specific unavailability reasons.\n\nUse cases:\n- Identify exactly which peer or peer-family is unhealthy right now\n- See the most recent BGP NOTIFICATION error as human-readable text\n- Inspect peer identity, AFI/SAFI scope, prefix gauges, and current troubleshooting context in one view\n\nData is sourced from the last successful SNMP collection cycle. No additional SNMP requests are triggered when calling this function.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Snmp:bgp-peers` |\n| Require Cloud | no |\n| Performance | Uses cached normalized SNMP data only, no additional SNMP requests are triggered:<br/>\u2022 Responses are instantaneous from memory cache<br/>\u2022 Large devices with many peers or peer-families may return many rows |\n| Security | Exposes current BGP control-plane state and identifiers only:<br/>\u2022 No authentication credentials are exposed<br/>\u2022 No device configuration changes are triggered<br/>\u2022 No packet payloads or full route inventory are exposed |\n| Availability | Available when:<br/>\u2022 The collector has completed at least one successful BGP-capable SNMP collection cycle<br/>\u2022 BGP peer data exists for the matched profile(s)<br/>\u2022 Returns HTTP 503 if no BGP rows are available yet |\n\n#### Prerequisites\n\nNo additional configuration is required.\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| View | select | Choose whether to show peer rows, peer-family rows, or both. | yes | peers | Peers (default), Peer Families, All |\n\n#### Returns\n\nCurrent BGP peer and peer-family details from cached normalized SNMP data. Each row represents either one peer or one peer plus AFI/SAFI, depending on the selected view. Additional hidden columns provide raw codes, message totals, and threshold fields for deeper inspection in the UI.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Scope | string | | | Whether the row represents a peer or a peer-family. |\n| Routing Instance | string | | | Routing-instance / VRF identifier when exposed by the source MIB. |\n| Neighbor | string | | | Remote peer address. |\n| Local Address | string | | | Local address used for the BGP session when exposed by the source MIB. |\n| Remote AS | string | | | Remote Autonomous System number. |\n| Peer Description | string | | | Peer description or label when exposed by the source MIB. |\n| Family | string | | | Address-family / SAFI scope for peer-family rows. |\n| Admin Status | string | | | Whether the peer is administratively enabled. |\n| Connection State | string | | | Current BGP FSM state. |\n| Previous State | string | | | Previous FSM state when the source MIB exposes it. |\n| Established Uptime | integer | seconds | | Time spent in the Established state. |\n| Last Update Age | integer | seconds | | Time since the last received UPDATE. |\n| Updates Received | integer | updates | | Current received UPDATE counter from the latest poll. |\n| Updates Sent | integer | updates | | Current sent UPDATE counter from the latest poll. |\n| Prefixes Accepted | integer | prefixes | | Current accepted-prefix gauge where the source MIB exposes it. |\n| Prefixes Advertised | integer | prefixes | | Current advertised-prefix gauge where the source MIB exposes it. |\n| Last Error | string | | | Human-readable BGP last-error text derived from the code/subcode pair when available. |\n| Down Reason | string | | | Last peer-down reason when the source MIB exposes it. |\n| GR State | string | | | Graceful-restart state for peer-family scoped rows when exposed by the source MIB. |\n| Unavailability Reason | string | | | Vendor-specific unavailability reason for peer-family scoped rows when exposed by the source MIB. |\n\n### Network Topology\n\nProvides the agent-wide SNMP topology view built from all currently running topology-enabled SNMP jobs.\n\nThis function reads cached LLDP/CDP, bridge, FDB, ARP, and STP data collected by the independent topology refresh loop and returns a netdata.topology.v1 payload with compact actor, link, evidence, and detail tables. No additional SNMP requests are triggered when calling this function.\n\nUse cases:\n- Discover Layer 2 neighbors and link mapping\n- Validate cabling and port connections\n- Identify adjacent devices that are discovered but not monitored\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Snmp:topology` |\n| Require Cloud | no |\n| Performance | Uses cached SNMP data only, no additional SNMP requests are triggered:<br/>\u2022 Responses are instantaneous from memory cache<br/>\u2022 Large devices with many discovered neighbors may return many rows |\n| Security | Exposes discovered device identifiers, interface/port identifiers, and management addresses only:<br/>\u2022 No packet payloads or authentication credentials are exposed<br/>\u2022 No device configuration details are exposed |\n| Availability | Available when:<br/>\u2022 The collector has completed at least one successful topology refresh cycle<br/>\u2022 LLDP/CDP topology data is present in cache from the last successful topology refresh<br/>\u2022 Returns HTTP 503 if topology cache is not ready yet |\n\n#### Prerequisites\n\nNo additional configuration is required.\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Nodes Identity | select | Choose actor identity strategy. `ip` collapses nodes by management IP and removes non-IP inferred actors. `mac` keeps MAC-oriented identities. | yes | ip | IP (default), MAC |\n| Map | select | Select the topology map mode. Defaults to the managed-device LLDP/CDP view. Other modes progressively include inferred devices and lower-confidence links. | yes | lldp_cdp_managed | LLDP/CDP/Managed Devices Map (default), High Confidence Inferred Map, All Devices (Low Confidence) |\n| Infer Strategy | select | Select the inference algorithm used for FDB/STP/CDP correlation. | yes | fdb_minimum_knowledge | FDB Minimum-Knowledge (Baseline) (default), STP Parent Tree, FDB Pairwise Minimum-Knowledge, STP + FDB Correlated, CDP + FDB Hybrid |\n| Focus On | multiselect | Limit depth filtering to selected managed SNMP roots. The static default is `all_devices`; additional `ip:<address>` options are supplied dynamically from the current managed SNMP jobs. | yes | all_devices | All Devices (default) |\n| Focus Depth | select | Limit topology expansion hops from the focus roots. `all` disables depth filtering. | yes | all | All (default), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 |\n\n#### Returns\n\nAgent-wide SNMP topology data using the netdata.topology.v1 schema, suitable for cross-agent aggregation.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| schema_version | string | | | Topology schema version. |\n| producer | object | | | Producer metadata identifying the SNMP L2 topology source, plugin, and local node when available. |\n| collected_at | datetime | | | Collection timestamp in RFC 3339 format. |\n| view | object | | | Topology view metadata, including selected mode and focus parameters when present. |\n| dictionaries | object | | | Compact-table dictionaries used by actors, links, evidence, and detail tables. |\n| types | object | | | Actor, link, evidence, table, and presentation type registry. |\n| presentation | object | | | Graph-level presentation metadata. |\n| actors | object | | | Compact actor table for managed devices, discovered devices, inferred endpoints, and network segments. |\n| links | object | | | Compact link table for LLDP, CDP, bridge, FDB, STP, ARP, SNMP, and inferred L2 relationships. |\n| evidence | object | | | Relationship evidence tables backing the rendered links. |\n| tables | object | | | Actor detail, port, path, and label tables used by topology modals. |\n| stats | object | | | Summary stats for collected observations, actors, links, and pruning/filtering decisions. |\n\n### Licenses\n\nProvides normalized licensing rows for the selected SNMP device.\n\nThis function reads the collector's cached licensing rows and shows one row per normalized license entry. It is the drill-down view behind the device-level licensing charts: expiry timers, authorization/certificate/grace timers, usage/capacity, raw vendor state, normalized state bucket, and operational impact.\n\nIt follows the same pattern as the SNMP `interfaces` function:\n- the function itself is global for the SNMP collector\n- the Live tab targets the selected SNMP job/device automatically using the standard SNMP function context\n- the returned rows belong only to that selected device\n\nUse cases:\n- See which exact license rows make the device show degraded or broken counts\n- Inspect expiry and grace timers for subscriptions, support, and smart-licensing signals\n- Review usage/capacity for finite license pools on the selected device\n\nData is sourced from the last successful SNMP collection. No extra SNMP requests are triggered when calling this function.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Snmp:licenses` |\n| Require Cloud | no |\n| Performance | Uses cached SNMP data only, no additional SNMP requests are triggered:<br/>\u2022 Responses are instantaneous from memory cache<br/>\u2022 Large devices with many licensing rows may return many rows |\n| Security | Exposes licensing names, states, timers, counts, and impact notes only:<br/>\u2022 No credentials or secrets are exposed<br/>\u2022 No device configuration is modified |\n| Availability | Available when:<br/>\u2022 The collector has completed at least one licensing-aware data collection cycle that produced licensing rows<br/>\u2022 Licensing data is cached from the last successful SNMP collection<br/>\u2022 Returns HTTP 503 if cache is not ready yet or the device/profile exposes no licensing rows |\n\n#### Prerequisites\n\nNo additional configuration is required.\n\n#### Parameters\n\nThis function has no parameters.\n\n#### Returns\n\nNormalized licensing rows for the selected SNMP device. Each row represents one cached normalized licensing entry from the collector.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| License | string | | | Human-readable license row name, or the normalized license identifier when no name exists. |\n| ID | string | | hidden | Stable row identifier used by the UI to track one normalized licensing row across updates. |\n| Bucket | string | | | Normalized health bucket for the row: healthy, informational, degraded, broken, or ignored. |\n| State | string | | | Raw vendor licensing state when the device exposes one. |\n| Component | string | | | Normalized component or area associated with the license row. |\n| Type | string | | | Normalized license type such as subscription, certificate, authorization, evaluation, or usage pool. |\n| Remaining | duration | milliseconds | | Time remaining until the row's primary expiry, when applicable. |\n| Expiry | timestamp | | | Absolute expiry time for the row, when known. |\n| Usage | integer | licenses | | Used license units for finite pools. |\n| Capacity | integer | licenses | | Total capacity for finite license pools. |\n| Usage % | float | percentage | | Usage pressure for finite license pools. |\n| Impact | string | | | Operational impact text when the vendor or profile provides it. |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\nMetrics and charts are **defined by the matched SNMP profile(s)** at runtime. They differ by vendor/model/OS and may include, for example, interface counters, optics, CPU/memory, temperature, VLANs, and more. Use the **Metrics** tab on the device\u2019s dashboard to see exactly what is collected for that device.\n\nSupported licensing profiles also emit a small set of shared **device-level licensing contexts**:\n\n- `snmp.license.remaining_time`: earliest remaining time to expiry across monitored licenses and subscriptions on the device\n- `snmp.license.authorization_remaining_time`: earliest remaining time for license authorization timers\n- `snmp.license.certificate_remaining_time`: earliest remaining time for licensing certificate timers\n- `snmp.license.grace_remaining_time`: earliest remaining time for grace or evaluation timers\n- `snmp.license.usage_percent`: highest license pool pressure across finite usage pools on the device\n- `snmp.license.state`: count of licensing rows on the device by normalized state bucket (`healthy`, `informational`, `degraded`, `broken`, `ignored`)\n\nThe licensing charts are intentionally aggregated to keep one clean device view:\n\n- Netdata reports the **earliest** expiry-related deadline on the device.\n- Netdata reports how many licensing rows are **healthy**, **informational**, **degraded**, **broken**, and **ignored** on the device.\n- Netdata reports the **highest** usage pressure across finite license pools on the device.\n\nLicensing support is intentionally conditional:\n\n- licensing charts appear only for devices whose matched SNMP profile exposes licensing telemetry\n- not every supported device exposes all licensing dimensions\n- `remaining_time` and related time charts appear only when the device exposes expiry-like timers\n- `usage_percent` appears only when the device exposes finite usage and capacity data\n- `snmp.license.state` appears only when the device exposes enough state/compliance/validity data to normalize rows\n\nDefault alerts from `src/health/health.d/snmp.conf` use `30d/7d` for expiry-related timers, `7d/0d` for grace timers, and `80/95` for usage pressure. You can override them like any other Netdata health configuration.\n\n:::tip\n\nTo understand the structure of these profiles (metrics, tags, virtual metrics, etc.), see **[SNMP Profile Format](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/profile-format.md)**.\n\n:::\n\nIf `ping.enabled` is true, ICMP latency/packet-loss charts are also provided (or exclusively, when `ping_only: true`).\n\n**For BGP-capable profiles, the public chart contract is:**\n\n- `snmp.bgp.peers.*` for one BGP peer/session per chart instance\n- `snmp.bgp.peer_families.*` for one peer plus AFI/SAFI per chart instance\n- `snmp.bgp.devices.peer_counts` for device-level peer/session counts\n- `snmp.bgp.devices.peer_states` for device-level peer-state summaries where the source MIB exposes canonical peer rows\n- Rich peer diagnostics live in the Live function `snmp:bgp-peers`, not in charted time-series\n\n**BGP capability notes**\n\n| Vendor / MIB surface | Peer charts | Peer-family charts | Device peer counts | Device peer states | Route counts |\n|----------------------|-------------|--------------------|--------------------|--------------------|--------------|\n| Standard `BGP4-MIB` | Yes | No | Yes | Yes | No |\n| Cisco ASR | Yes | Yes | Yes | Yes | Yes |\n| Juniper MX | Yes | Yes | Yes | Yes | Yes |\n| Nokia SR OS | Yes | Yes | Yes | Yes | Yes |\n| Arista | Yes | Yes | Yes | Yes | Yes |\n| Dell OS10 | Yes | Yes | Yes | Yes | Yes |\n| Huawei | Partial | Yes | Yes | No | Totals only |\n\n**Interpretation guidance**\n\n- `route_counts.current` contains current gauges such as received, accepted, advertised, active, suppressed, or withdrawn prefixes when the vendor MIB exposes them.\n- `route_totals` contains cumulative counters where the vendor MIB only exposes totals.\n- When the source model is peer-family scoped, alerts and chart labels include AFI/SAFI so operators can distinguish otherwise similar peers.\n\n\n### Per device licensing\n\nShared device-level licensing health metrics emitted when the matched SNMP profile provides licensing telemetry. Supported profile coverage includes Check Point licensing state and per-blade expiry, Fortinet FortiGate contract/service/account expirations, Cisco traditional licensing end-date/remaining-time/state/usage telemetry, Cisco Smart Licensing authorization, certificate, evaluation, and state telemetry, Sophos Firewall subscription state and per-license expiry telemetry, Blue Coat ProxySG application/feature/component expiry, expire-type, and state telemetry, and basic MikroTik RouterOS upgrade-entitlement telemetry. MikroTik support is intentionally limited to the RouterOS upgrade-entitlement fields exposed by SNMP, and epoch-like placeholder `mtxrLicUpgrUntil` values are ignored.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| component | Always `licensing` for the shared SNMP licensing charts. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| snmp.license.remaining_time | remaining_time | seconds |\n| snmp.license.authorization_remaining_time | remaining_time | seconds |\n| snmp.license.certificate_remaining_time | remaining_time | seconds |\n| snmp.license.grace_remaining_time | remaining_time | seconds |\n| snmp.license.usage_percent | usage_percent | percentage |\n| snmp.license.state | healthy, informational, degraded, broken, ignored | licenses |\n\n",troubleshooting:'## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `snmp` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn\'t working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that\'s not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m snmp\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m snmp -j jobName\n ```\n\n### Getting Logs\n\nIf you\'re encountering problems with the `snmp` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep snmp\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector\'s name:\n\n```bash\ngrep snmp /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named "netdata" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep snmp\n```\n\n### Debugging Gaps on Charts\n\nIf your SNMP charts show gaps, it means the collector could not finish metric collection before the next scheduled run. This usually happens when SNMP tables take longer to collect than your configured `update_every`.\n\nThese gaps do *not* mean the device stopped exporting SNMP metrics \u2014 only that the collector had to skip cycles.\n\n**Step 1: Check the Logs**\n\n[Look for messages](#getting-logs) like:\n\n```text\nlevel=warn msg="skipping data collection: previous run is still in progress for 4s (skipped 4 times in a row, interval 1s)" collector=snmp job=your_device\nlevel=info msg="data collection resumed after 4.36s (skipped 4 times)" collector=snmp job=your_device\n```\n\nThe \u201cresumed after\u201d message shows how long the previous collection actually took. \nFor example, if a run needs ~4.4 seconds and `update_every` is 1 second, 4 cycles will be skipped.\n\n\n**Step 2: Check Collection Timings**\n\nOpen **SNMP \u2192 Internal \u2192 Stats** in the dashboard. \nThe **SNMP profile collection timings** chart shows how long each part of the SNMP polling takes. \nTable metrics are usually the slowest and often determine the total collection time.\n\n**Step 3: Increase the data collection interval**\n\n[Set `update_every`](#setup) to a value **higher than your slowest collection time**, with some extra buffer for network variability.\n\n| Typical Collection Time | Recommended `update_every` |\n|-------------------------|-----------------------------|\n| < 2 seconds | 2 seconds |\n| 2\u20135 seconds | 5 seconds |\n| 5\u201310 seconds | 10 seconds |\n| > 10 seconds | collection_time \xd7 2 |\n\n:::info\n\n- **Rule of thumb:** `update_every` should be at least 2\xd7 your slowest table collection time. \n- The default `update_every: 10` works well in most environments. \n- Only reduce it if your device consistently responds fast enough.\n\n:::\n\n**Quick Checklist**\n1. Do logs show \u201cskipping data collection\u201d? \n2. Does *Internal \u2192 Stats* show collection time > `update_every`? \n3. Increase `update_every` until skips disappear.\n\n\n',integration_type:"collector",id:"go.d.plugin-snmp-SNMP_devices",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-snmp_traps",plugin_name:"go.d.plugin",module_name:"snmp_traps",monitored_instance:{name:"SNMP trap listener",link:"",icon_filename:"SNMP.png",categories:["network-performance-monitoring.traps"]},keywords:["snmp","trap","inform","snmpv3","usm","syslog","network events","event monitoring","notifications","fault management","network management"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:'# SNMP trap listener\n\nPlugin: go.d.plugin\nModule: snmp_traps\n\n## Overview\n\nThis collector listens for incoming SNMP Trap and INFORM notifications from network devices and persists them as enriched, structured log entries.\n\n- **Multi-protocol**: Accepts SNMPv1 Trap, SNMPv2c Trap/INFORM, and SNMPv3 Trap/INFORM with USM (user-based security model) authentication and privacy.\n- **Per-job listeners**: Each job binds UDP endpoints independently, enabling per-site or per-segment trap receivers.\n- **OOB profile pack**: Netdata ships with a library of pre-built trap profiles that resolve numeric OIDs to names, categories, severities, and varbind labels without manual MIB work for common equipment.\n- **Dynamic engine ID discovery**: Optional runtime discovery of SNMPv3 sender engine IDs for environments where the engine ID is not known in advance.\n- **Deduplication**: Optional configurable per-job dedup that suppresses repeated identical traps within a window. The first matching trap is journaled immediately; subsequent matches increment a summary counter and a periodic summary entry is written.\n- **Per-OID overrides**: Operators can override the profile-assigned category, severity, and labels for specific OIDs without editing profiles.\n- **Profile-defined trap metrics**: Operators can define trap-to-metric rules in custom trap profiles, then enable selected rules per listener job with `profile_metrics`. Profile metrics are emitted per source device, using vnode host scope when enrichment finds an unambiguous vnode and bounded source labels for chart identity and fallback attribution.\n- **Direct journal storage**: Enabled by default for explicit jobs. Stores traps under the configured Netdata log directory (`${NETDATA_LOG_DIR}/traps/<job>/`; package installs usually use `/var/log/netdata`, and static installs commonly use `/opt/netdata/var/log/netdata`) and exposes the embedded `snmp:traps` Function. Direct-journal jobs appear as `__logs_sources` options.\n- **OTLP/gRPC export**: Optional backend that exports traps as OTLP LogRecords. When `otlp.enabled` is `true`, traps are exported through OTLP regardless of `journal.enabled`; if direct journal storage is also enabled, both backends receive traps.\n- **Self-metrics**: Per-job pipeline counters, trap events (by category and severity), processing errors (by type), dedup suppression (when enabled), bounded per-source receiver health, and profile-metric diagnostics.\n\nWhen direct journal storage is enabled, trap entries are written as structured systemd-journal log messages with plugin-controlled fields (`TRAP_REPORT_TYPE`, `TRAP_JOB`, `TRAP_OID`, `TRAP_NAME`, `TRAP_CATEGORY`, `TRAP_SEVERITY`, `TRAP_PDU_TYPE`, `TRAP_VERSION`, `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, `TRAP_SOURCE_UDP_PORT`, `TRAP_DEVICE_VENDOR`, `TRAP_INTERFACE`, `TRAP_NEIGHBORS`, `TRAP_REVERSE_DNS`, `TRAP_SUPPRESSED_COUNT`, `TRAP_SUPPRESSED_FINGERPRINTS`, `TRAP_REPORT_PERIOD_SEC`, `TRAP_DECODE_ERROR_KIND`, `TRAP_DECODE_ERROR`, `TRAP_PACKET_SIZE`, `TRAP_PACKET_SHA256`, `TRAP_LISTENER`, `TRAP_ENGINE_ID`, `TRAP_ENRICHMENT`, `TRAP_JSON`) plus profile-defined labels (`TRAP_TAG_*`) and decoded event varbind fields (`TRAP_VAR_*`). Non-sensitive, non-redundant event varbinds are indexed as `TRAP_VAR_*`; enum-backed varbinds also emit `_RAW` with the numeric value. `TRAP_ENRICHMENT` records the source-attribution and enrichment decisions for audit/debug, and `TRAP_JSON` stores the structured varbind payload plus `netdata_packet_sequence`, a per-job receive counter assigned once per UDP datagram. Query traps with the embedded `snmp:traps` Function through Netdata Cloud or directly via the Agent HTTP API. The Function selects all direct-journal jobs by default and can narrow to one listener with `selections.__logs_sources=["<job>"]`. OTLP-only jobs do not create local journal files and therefore do not appear as log sources.\n\n**Closed 8-category / 8-severity taxonomy** (from the OOB profile pack):\n\n| Category | Description |\n|----------|-------------|\n| `state_change` | Link up/down, operational state transitions |\n| `config_change` | Configuration modifications |\n| `security` | Security events (intrusion, ACL, etc.) |\n| `auth` | Authentication and authorization events |\n| `license` | License-state events |\n| `mobility` | Roaming, handoff, wireless client events |\n| `diagnostic` | Tests, health checks, probes |\n| `unknown` | Unmatched or unclassified traps |\n\n| Severity | Description |\n|----------|-------------|\n| `emerg` | System unusable |\n| `alert` | Immediate action required |\n| `crit` | Critical condition |\n| `err` | Error condition |\n| `warning` | Warning condition |\n| `notice` | Normal but significant condition |\n| `info` | Informational |\n| `debug` | Debug-level message |\n\n\n**Profile locations**\n\n| Type | Default path | Notes |\n|------|--------------|-------|\n| **Stock profiles** | `/usr/lib/netdata/conf.d/go.d/snmp.trap-profiles/default/` | Shipped with Netdata; packages store vendor files as `.yaml.zst` |\n| **User profiles** | `/etc/netdata/go.d/snmp.trap-profiles/` | Place custom or converted `.yaml` profiles here |\n\n> Depending on installation, paths may be prefixed with `/opt/netdata`.\n\nA **trap profile** defines per-OID mappings:\n- Category and severity\n- Trap name and description\n- Varbind labels for structured enrichment\n- Optional trap-to-metric rules and chart definitions\n\n**At runtime, the collector**:\n1. Receives a trap PDU on a bound UDP endpoint\n2. Validates the SNMP version, community/USM, and source against the job configuration\n3. Resolves the trap OID against operator profiles and lazily-loaded stock profile files to get a name, category, severity, and varbind labels\n4. Enriches the entry with optional reverse DNS (`TRAP_REVERSE_DNS` annotation, never `_HOSTNAME`) and dedup logic (if enabled)\n5. Writes the structured entry to the per-job direct journal when enabled, and exports via OTLP when configured\n6. Updates enabled profile-defined trap metrics only after the trap is committed to the configured backend\n7. Increments the per-job self-metrics (events by category and severity, errors by type)\n\n**Custom MIB workflow**: Operators with device-specific MIBs not covered by the OOB profiles can use the installed `/usr/libexec/netdata/plugins.d/snmp-trap-profile-gen` helper to convert MIBs into trap profile YAMLs offline. The helper writes profiles under `snmp-trap-profile-gen-output/profiles/`; copy the needed YAML files to `/etc/netdata/go.d/snmp.trap-profiles/`. Active SNMP trap jobs automatically reload user-supplied profile changes and keep the last valid profile index if a changed file is invalid. Stock profile updates are picked up after trap jobs stop/start or the Netdata Agent restarts. If no trap job is active, the next job creation loads and validates the profile files. See [SNMP trap profile format](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/snmp.trap-profiles/profile-format.md) for the YAML schema.\n\nExample conversion for a MIB module not shipped in the OOB pack:\n```sh\n/usr/libexec/netdata/plugins.d/snmp-trap-profile-gen generate \\\n --source-dir /path/to/vendor-mibs \\\n --mib NAGIOS-NOTIFY-MIB \\\n --out-dir ./snmp-trap-profile-gen-output\n```\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nBinding to the standard SNMP trap port (UDP/162) requires elevated bind privileges on many platforms.\nOn Linux, this means `CAP_NET_BIND_SERVICE` or root. Netdata packages grant this capability to `go.d.plugin` and allow it in `netdata.service`.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nSNMP trap collection is not auto-detected. The collector must be explicitly configured as a job under `go.d/snmp_traps.conf`.\n\n\n#### Limits\n\nBER decode limits protect the UDP-exposed parser: datagrams are capped at 8 KiB, varbinds at 256 per PDU, BER nesting depth at 8, encoded OID length at 128 bytes, and OctetString values at 1024 bytes.\nAccepted-source decode failures are written as `TRAP_REPORT_TYPE=decode_error` rows with sanitized error details, source address/port, listener endpoint when known, sniffed SNMP version when known, packet size, and packet SHA-256. Raw packet bytes are not written because SNMP community strings and binary payloads can appear in received datagrams.\nDeduplication, when enabled, uses a per-job fingerprint cache capped by `dedup.cache_max_entries` (default 100000).\n\n\n#### Performance Impact\n\nThe collector is event-driven and does not poll devices. CPU cost is proportional to the received trap rate.\nProfile OID lookups use hash tables. Deduplication, when enabled, adds a configurable fingerprint cache.\nFor high-volume environments, size the dedup cache and journal rotation according to sustained trap volume and retention requirements. OTLP-only jobs avoid local journal storage but do not appear as sources in the embedded local logs viewer.\n\n',setup:'## Setup\n\n\nYou can configure the **snmp_traps** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp_traps**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp_traps.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Prepare SNMP trap sources\n\nConfigure the network devices sending traps:\n- Set the trap destination to the Netdata host\'s IP address and the UDP port bound by the listener job.\n- Ensure the SNMP community (v1/v2c) or USM credentials (v3) match the job configuration.\n- For v3 traps, configure the device\'s engine ID and USM user with the matching auth and privacy protocols.\n\n\n#### Verify Netdata log directory access\n\nDirect-journal jobs write under the configured Netdata log directory (`${NETDATA_LOG_DIR}/traps/`). Package installs usually use `/var/log/netdata`; static installs commonly use `/opt/netdata/var/log/netdata`.\nJob creation fails if the configured Netdata log directory is missing or unusable. For OTLP-only jobs, set `journal.enabled: false` and `otlp.enabled: true`.\n\n\n#### Add custom trap profiles (optional)\n\nIf the stock trap profiles do not cover a device, convert vendor MIBs with the installed `/usr/libexec/netdata/plugins.d/snmp-trap-profile-gen` helper and place the resulting YAML profiles under `/etc/netdata/go.d/snmp.trap-profiles/`.\nThis is the supported workflow for adding custom trap profile coverage.\nProfile YAML syntax is documented in [SNMP trap profile format](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/config/go.d/snmp.trap-profiles/profile-format.md).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Framework collection interval for self-metrics. Trap packet reception is event-driven and does not depend on this interval. | 1 | no |\n| **Listener** | [listen](#option-listener-listen) | Network endpoints this listener binds during job creation. | | yes |\n| **SNMP** | [versions](#option-snmp-versions) | Accepted trap protocol versions. | [v1, v2c] | no |\n| **SNMPv1/2c** | communities | SNMPv1/v2c community allowlist. Empty accepts all communities. | [] | no |\n| **SNMPv3** | [usm_users](#option-snmpv3-usm-users) | SNMPv3 USM users with auth and privacy protocols. | [] | no |\n| | engine_id_whitelist | Static SNMPv3 engine IDs accepted for v3 Trap PDUs (hex strings). Required when v3 is enabled and `dynamic_engine_id_discovery` is disabled. | [] | no |\n| | local_engine_id | Receiver-local SNMPv3 engine ID for v3 INFORM authentication (hex string, 5-32 bytes). When omitted, Netdata generates and persists a stable per-job value. | | no |\n| | dynamic_engine_id_discovery | When enabled, the listener discovers v3 Trap sender engine IDs at runtime and hot-registers new (engineID, username) pairs after the retry authenticates and decodes a v3 Trap. Static `engine_id_whitelist` must be empty. | no | no |\n| | dynamic_engine_id_max_pairs | Maximum in-memory dynamic (engineID, username) pairs per job. 0 or unset uses the default of 4096. | 4096 | no |\n| **Enrichment** | reverse_dns | Optional source-IP PTR annotation emitted as `TRAP_REVERSE_DNS`. Disabled by default and not used for authoritative identity. | enabled: false | no |\n| **Security** | [source](#option-security-source) | Source-attribution controls for forwarded traps. UDP peer is authoritative unless the peer matches an explicit trusted relay CIDR. | trusted_relays: [] | no |\n| | allowlist | Pre-decode source-IP CIDR allowlist. Empty accepts IPv4 and IPv6 from all sources. | source_cidrs: ["0.0.0.0/0", "::/0"] | no |\n| **Rate limiting** | [rate_limit](#option-rate-limiting-rate-limit) | Per-source token-bucket rate limiting. Default off. | | no |\n| **Deduplication** | [dedup](#option-deduplication-dedup) | Optional per-job trap deduplication. Disabled by default. | | no |\n| **Direct journal** | [journal](#option-direct-journal-journal) | Direct local journal storage for received traps. Enabled by default for explicit jobs. | enabled: true | no |\n| **OTLP export** | [otlp](#option-otlp-export-otlp) | Optional backend that exports traps as OTLP/gRPC LogRecords. Disabled by default. | | no |\n| **Retention** | [retention](#option-retention-retention) | Per-job direct journal retention and rotation policy. Ignored when `journal.enabled` is `false`. | | no |\n| **Overrides** | [overrides](#option-overrides-overrides) | Per-OID category, severity, and label overrides on top of profile defaults. | [] | no |\n| **Profile metrics** | [profile_metrics](#option-profile-metrics-profile-metrics) | Enable and select trap-to-metric rules defined by loaded trap profiles. | enabled: false | no |\n| **Virtual node** | vnode | Associates this trap listener job with a Virtual Node. | | no |\n\n<a id="option-listener-listen"></a>\n##### listen\n\n- `receive_buffer`: UDP socket receive buffer requested during job creation, in bytes (default 4194304; set 0 to keep the operating system default; maximum 268435456).\nEach endpoint has:\n- `protocol`: Transport protocol (`udp` only).\n- `address`: Local IP address to bind (e.g., `0.0.0.0` for all interfaces).\n- `port`: UDP port number (default 162). Port 162 requires `CAP_NET_BIND_SERVICE` or root.\n\n\n<a id="option-snmp-versions"></a>\n##### versions\n\nSupported values: `v1`, `v2c`, `v3`. All three can be combined.\n\n\n<a id="option-snmpv3-usm-users"></a>\n##### usm_users\n\nEach user has:\n- `username`: SNMPv3 USM security name (required).\n- `engine_id`: Authoritative engine ID in hex (e.g., `80001f8880e5a5c0d6c7b8a9`). Required for static v3 jobs. May be omitted when `dynamic_engine_id_discovery` is enabled.\n- `auth_proto`: Authentication protocol (`none`, `md5`, `sha`, `sha224`, `sha256`, `sha384`, `sha512`).\n- `auth_key`: Authentication passphrase (use a Netdata secret reference). Required when `auth_proto` is not `none`; minimum 8 characters.\n- `priv_proto`: Privacy protocol (`none`, `des`, `aes`, `aes192`, `aes256`, `aes192c`, `aes256c`).\n- `priv_key`: Privacy passphrase (use a Netdata secret reference). Required when `priv_proto` is not `none`; minimum 8 characters.\n\n\n<a id="option-security-source"></a>\n##### source\n\n- `trusted_relays`: CIDR list of SNMP trap relays/proxies whose `snmpTrapAddress.0` PDU source address may override the UDP peer. Leave empty for direct listeners.\n\n\n<a id="option-rate-limiting-rate-limit"></a>\n##### rate_limit\n\n- `enabled`: Enable per-source rate limiting (default `false`).\n- `per_source_pps`: Maximum traps per second from a single source IP (default 1000).\n- `mode`: Action when exceeded \u2014 `drop` (discard trap) or `sample` (allow but count as `rate_limited`).\n\n\n<a id="option-deduplication-dedup"></a>\n##### dedup\n\n- `enabled`: Enable dedup (default `false`).\n- `window_sec`: Dedup window in seconds (default 5).\n- `cache_max_entries`: Maximum fingerprints kept in memory (default 100000).\n- `key_varbinds`: Additional varbind names to include in the dedup fingerprint (default `[]`, fingerprint is source device + trap OID only).\n\n\n<a id="option-direct-journal-journal"></a>\n##### journal\n\n- `enabled`: Write traps to local direct journal files under the configured Netdata log directory (`${NETDATA_LOG_DIR}/traps/<job>/`) and expose the job as a `__logs_sources` option in the embedded `snmp:traps` Function. Package installs usually use `/var/log/netdata`; static installs commonly use `/opt/netdata/var/log/netdata`.\n- Set `enabled: false` only when another output backend, such as OTLP, is enabled.\n\n\n<a id="option-otlp-export-otlp"></a>\n##### otlp\n\n- `enabled`: Enable OTLP/gRPC Logs export. When `true`, traps are exported through OTLP regardless of `journal.enabled`; if direct journal storage is also enabled, both backends receive traps.\n- `endpoint`: OTLP/gRPC endpoint. `http://host:port` uses plaintext gRPC; `https://host:port` uses TLS (default `http://127.0.0.1:4317`). Use `https://` for remote collectors when trap contents should be protected in transit.\n- `headers`: Optional OTLP metadata headers (values may use Netdata secret references).\n- `request_timeout`: Timeout for connection preflight and export calls (default `5s`).\n- `flush_interval`: Maximum time to buffer records before export (default `200ms`).\n- `batch_size`: Maximum LogRecords per export request (default 512).\n- `queue_capacity`: Maximum records buffered per job (default 10000).\n\n\n<a id="option-retention-retention"></a>\n##### retention\n\n- `max_size`: Maximum total bytes across all journal files (default `10GB`). Set `null` to disable size-based eviction.\n- `max_duration`: Maximum age of the oldest journal file before deletion (default `null`, age-based eviction disabled).\n- `rotation_size`: Maximum size of a single journal file before rotation (default `null` = auto, `max_size/20` clamped 5MB-200MB).\n- `rotation_duration`: Maximum age of a single journal file before rotation (default `null`, time-based rotation disabled). Set a duration such as `24h` to enable time-based rotation.\n\n\n<a id="option-overrides-overrides"></a>\n##### overrides\n\nEach override entry requires an `oid` (numeric OID). Optional fields: `category` (one of the 8 categories), `severity` (one of the 8 severities), `labels` (free-form key-value pairs).\n\n\n<a id="option-profile-metrics-profile-metrics"></a>\n##### profile_metrics\n\n- `enabled`: Enable profile-defined trap metrics for committed traps (default `false`).\n- `mode`: Rule selection policy: `none`, `auto`, `exact`, or `combined` (default `none`).\n- `include`: Metric rule names to enable when `mode` is `exact` or `combined`; rejected with `mode` `none` or `auto`.\n- `identity.device`: Source identity mode: `source`, `source_label`, or `listener` (default `source`).\n- `identity.unresolved_source`: Fallback behavior when source/vnode attribution is unavailable: `source_label` or `drop_metric_instance` (default `source_label`).\n- `identity.source_id_privacy`: `hash` for stable local per-job hashes or `raw` for the selected source value (default `hash`).\n- `limits.max_rules`: Maximum enabled profile metric rules evaluated by this job (default `500`).\n- `limits.max_sources`: Maximum non-listener source identities tracked by this job, including vnode and fallback sources (default `2000`).\n- `limits.max_resources_per_source`: Default resource cap per source and resource class for rules that do not set `identity.resource.max_per_source` (default `512`).\n- `limits.max_instances_per_job`: Maximum profile-derived metric instances for this job (default `50000`).\n- `limits.overflow`: `drop_and_count`; over-cap metric instances are skipped, accepted traps are still committed, and profile metric diagnostics increment.\n- Define custom rules in files under `/etc/netdata/go.d/snmp.trap-profiles/` with profile `metrics:` and `charts:` sections. See the SNMP trap profile format documentation for rule syntax and examples.\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **snmp_traps** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp_traps data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_traps_ (or scroll the list) to locate the **snmp_traps** collector.\n5. Click the **+** next to the **snmp_traps** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp_traps.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp_traps.conf\n```\n\n##### Examples\n\n###### Basic (SNMPv1/v2c)\n\nA single job listening on the standard trap port. Accepts any SNMPv1/v2c community.\nThe allowlist is left open (`0.0.0.0/0` and `::/0`) \u2014 restrict it for production.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n listen:\n receive_buffer: 4194304\n endpoints:\n - protocol: udp\n address: 0.0.0.0\n port: 162\n versions:\n - v1\n - v2c\n\n```\n{% /details %}\n###### OTLP-only export\n\nA job that disables direct journal creation and exports traps only through OTLP.\nThis job does not appear as a local `__logs_sources` option because no direct journal files are written.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local-otel\n listen:\n endpoints:\n - protocol: udp\n address: 0.0.0.0\n port: 162\n journal:\n enabled: false\n otlp:\n enabled: true\n endpoint: "http://127.0.0.1:4317"\n\n```\n{% /details %}\n###### SNMPv3 with static USM\n\nA job accepting v3 traps from a known device. The USM user has a static engine ID,\nand the engine ID whitelist is explicitly set. Auth and privacy keys use Netdata secret references.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: core-router\n listen:\n endpoints:\n - protocol: udp\n address: 0.0.0.0\n port: 162\n versions:\n - v3\n usm_users:\n - username: trapmon\n engine_id: 80001f8880e5a5c0d6c7b8a9\n auth_proto: sha256\n auth_key: "${env:SNMP_V3_AUTH_KEY}"\n priv_proto: aes\n priv_key: "${env:SNMP_V3_PRIV_KEY}"\n engine_id_whitelist:\n - 80001f8880e5a5c0d6c7b8a9\n\n```\n{% /details %}\n###### Dynamic engine ID discovery\n\nFor environments where v3 sender engine IDs are not known in advance.\nThe listener discovers them at runtime from raw SNMPv3 context and hot-registers\nnew (engineID, username) pairs after the first successful authentication and decode.\nThe USM user omits `engine_id`; the whitelist must be empty.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: dynamic-v3\n listen:\n endpoints:\n - protocol: udp\n address: 0.0.0.0\n port: 162\n versions:\n - v3\n usm_users:\n - username: trapmon\n auth_proto: sha256\n auth_key: "${env:SNMP_V3_AUTH_KEY}"\n priv_proto: aes\n priv_key: "${env:SNMP_V3_PRIV_KEY}"\n dynamic_engine_id_discovery: true\n dynamic_engine_id_max_pairs: 4096\n\n```\n{% /details %}\n###### With dedup and profile metrics\n\nA job with dedup enabled (window 10 seconds) and profile-defined trap metrics enabled.\n`auto` enables only loaded profile metric rules that are marked safe for automatic use.\nUse `exact` or `combined` with `include` to enable specific custom metric rules by name.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: campus-core\n listen:\n endpoints:\n - protocol: udp\n address: 0.0.0.0\n port: 162\n dedup:\n enabled: true\n window_sec: 10\n profile_metrics:\n enabled: true\n mode: auto\n\n```\n{% /details %}\n###### Custom profile metric rule\n\nA custom trap profile can define metric rules and charts. The listener job then enables those rules with `profile_metrics`.\nThis example counts committed Cisco configuration change traps per source device. With the default `identity.device: source`, metrics use vnode host scope when enrichment finds an unambiguous vnode and hashed fallback `source_id` labels otherwise.\nThe rule can reference a trap already defined by the stock profiles by using its MIB-qualified trap name in `on_trap`.\n\n\n{% details open=true summary="Config" %}\n```yaml\n# /etc/netdata/go.d/snmp.trap-profiles/site-cisco.yaml\nmetrics:\n - name: cisco.config.changed\n type: counter\n on_trap: CISCO-CONFIG-MAN-MIB::ccmCLIRunningConfigChanged\n metric: snmp_trap_cisco_config_events\n dimension: changes\n chart_id: cisco_config_changes\n chart_meta:\n title: Cisco configuration changes\n context: snmp.trap.cisco.config.changes\n units: events/s\n algorithm: incremental\n\n# /etc/netdata/go.d/snmp_traps.conf\njobs:\n - name: campus-core\n listen:\n endpoints:\n - protocol: udp\n address: 0.0.0.0\n port: 162\n profile_metrics:\n enabled: true\n mode: exact\n include:\n - cisco.config.changed\n\n```\n{% /details %}\n',alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ snmp_trap_emergency_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.severity | The SNMP trap listener is receiving emergency-severity traps. |\n| [ snmp_trap_alert_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.severity | The SNMP trap listener is receiving alert-severity traps that require immediate attention on the sending device. |\n| [ snmp_trap_critical_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.severity | The SNMP trap listener is receiving critical-severity traps. |\n| [ snmp_trap_error_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.severity | The SNMP trap listener is receiving error-severity traps at high rate. |\n| [ snmp_trap_warning_event_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.severity | The SNMP trap listener is receiving warning-severity traps at storm-level rate. |\n| [ snmp_trap_decode_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener has decode errors. |\n| [ snmp_trap_template_unresolved ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener received traps whose profile templates referenced missing varbinds or fields. |\n| [ snmp_trap_malformed_pdus ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener is receiving structurally invalid trap PDUs. |\n| [ snmp_trap_allowlist_drops ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener is dropping traps because the sender IP is outside the configured allowlist. |\n| [ snmp_trap_rate_limited ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener is receiving traps above the configured per-source rate limit. |\n| [ snmp_trap_auth_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener has authentication failures. |\n| [ snmp_trap_usm_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener has USM failures. |\n| [ snmp_trap_unknown_engine_id ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener is receiving v3 traps from engine IDs outside the static whitelist, or first-time dynamic engine ID registrations when dynamic discovery is enabled. |\n| [ snmp_trap_inform_response_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener failed to send INFORM acknowledgements back to senders. |\n| [ snmp_trap_binary_encoded_fields ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener wrote structured fields with binary journal encoding. |\n| [ snmp_trap_profile_load_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener failed to load or reload trap profiles. |\n| [ snmp_trap_journal_write_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener failed to write traps to the systemd-journal. |\n| [ snmp_trap_otlp_export_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener failed to export traps through OTLP. |\n| [ snmp_trap_listener_read_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener failed to read UDP packets from a bound socket. |\n| [ snmp_trap_high_dedup_suppression ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.dedup_suppressed | The SNMP trap listener is suppressing a high volume of duplicate traps. |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\nBuilt-in receiver metrics keep per-job totals with the `job_name` label so listener health remains visible even when a packet cannot be attributed to a source device. Built-in source receiver metrics are also emitted for active, attributable sources with bounded `source_id` and `source_kind` labels; when enrichment finds an unambiguous vnode, those source metrics are written under that vnode host scope.\n\nProfile-defined trap metrics are emitted dynamically when `profile_metrics` enables rules from loaded trap profiles. Device-attributable profile metrics use vnode host scope when enrichment finds an unambiguous vnode; all profile metric series also include bounded `source_id` and `source_kind` labels so generated chart instances keep a stable identity. Resource metrics additionally include `resource_class` and `resource_id`. When vnode enrichment is unavailable, ambiguous, or conflicting, profile metrics use those labels under the listener job.\n\nSource-attributed receiver metrics are bounded to 2000 active sources per job and expire inactive sources after 60 successful collection cycles. Accepted traps are still committed to the configured backend if source metric attribution fails or the source cap is full; the attribution diagnostic counters expose those cases. Per-job pipeline totals can be greater than the sum of per-source metrics when a packet has no trustworthy source, source attribution fails, or the source cap is full.\n\n`accepted` and source-attributed error counters are recorded before dedup suppression. `committed`, event/severity counters, and profile-defined metrics are recorded only after successful authoritative output commitment. When both journal and OTLP outputs are enabled, journal is authoritative for commitment and OTLP export failures are reported as `otlp_export_failed` export/source errors. When OTLP is the only output backend, OTLP export failures are terminal write failures and also increment `pipeline.write_failed` and source-attributed `source_pipeline.write_failed` when the source is known.\n\n**Built-in contexts:**\n\n- `snmp.trap.pipeline`: Receiver packet and write pipeline progress, grouped per job.\n- `snmp.trap.events`: Trap events received, split by category. The `stacked` chart type gives a visual burst profile across categories.\n- `snmp.trap.severity`: Trap events received, split by severity. The `stacked` chart type gives a visual burst profile across the closed 8-severity taxonomy (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`, `debug`).\n- `snmp.trap.errors`: Processing errors by type. Stacked chart for quick identification of dominant error categories.\n- `snmp.trap.dedup_suppressed`: Per-second rate of traps suppressed by dedup (only emitted when dedup is enabled on the job).\n- `snmp.trap.sources`: Number of active source metric identities tracked by the job.\n- `snmp.trap.source_attribution`: Per-job attribution diagnostics for vnode matches, fallback labels, ambiguous enrichment, attribution failures, cap overflow, and source identity transitions.\n- `snmp.trap.source_pipeline`: Source-attributed accepted, committed, dedup-suppressed, and write-failed trap events.\n- `snmp.trap.source_errors`: Source-attributed processing errors where a source can be identified.\n- `snmp.trap.source_last_seen`: Seconds since the source last produced an accepted trap.\n- `snmp.trap.profile_metric_diagnostics`: Profile-defined trap metric extraction and attribution diagnostics (only emitted when `profile_metrics` selects at least one rule).\n\n**Dynamic contexts** (profile metrics):\n\nTrap profiles may define optional `metrics:` rules and `charts:`. Jobs enable those rules with `profile_metrics.mode` and `profile_metrics.include`; `include` is valid only with `exact` or `combined` mode. Profile metric contexts are generated at runtime from the profile chart definitions under the `snmp.trap.` context namespace. Profile rules can create counters, last trap-reported numeric samples, and trap-derived state gauges. They are updated only after the trap is successfully committed to the authoritative output backend.\n\n\n### Per job\n\nPer-job self-metrics for a SNMP trap listener job.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| job_name | The job name as defined in `go.d/snmp_traps.conf`. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| snmp.trap.pipeline | received, decoded, accepted, committed, dedup_suppressed, dropped, write_failed | events/s |\n| snmp.trap.events | state_change, config_change, security, auth, license, mobility, diagnostic, unknown | events/s |\n| snmp.trap.severity | emerg, alert, crit, err, warning, notice, info, debug | events/s |\n| snmp.trap.errors | unknown_oid, decode_failed, template_unresolved, malformed_pdu, dropped_allowlist, rate_limited, auth_failures, usm_failures, unknown_engine_id, inform_response_failed, binary_encoded, profile_load_failed, journal_write_failed, otlp_export_failed, listener_read_failed, listener_buffer_degraded | errors/s |\n| snmp.trap.dedup_suppressed | suppressed | events/s |\n| snmp.trap.sources | active | sources |\n| snmp.trap.source_attribution | vnode, fallback, ambiguous, failed, overflow_dropped, source_transitions | events/s |\n| snmp.trap.profile_metric_diagnostics | rule_missed, extraction_failed, attribution_failed, overflow_dropped, source_transitions | events/s |\n\n### Per source\n\nPer-source receiver metrics for active, attributable SNMP trap sources.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| job_name | The listener job that received the trap. |\n| source_id | Vnode ID when enrichment resolves a vnode, otherwise a bounded source identifier. Raw source values are hashed by default. |\n| source_kind | Source identity kind, such as `vnode`, `trusted_trap_address`, `udp_peer`, or `entry_source`. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| snmp.trap.source_pipeline | accepted, committed, dedup_suppressed, write_failed | events/s |\n| snmp.trap.source_errors | unknown_oid, template_unresolved, profile_load_failed, journal_write_failed, otlp_export_failed | errors/s |\n| snmp.trap.source_last_seen | seconds_ago | seconds |\n\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `snmp_traps` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m snmp_traps\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m snmp_traps -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `snmp_traps` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep snmp_traps\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep snmp_traps /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep snmp_traps\n```\n\n### Port binding fails (permission denied)\n\nStandard SNMP trap port (UDP/162) requires `CAP_NET_BIND_SERVICE`.\n\nNetdata packages grant this capability to `go.d.plugin` automatically. If running from source\nor in a custom deployment, grant it manually:\n```bash\nsudo setcap CAP_NET_BIND_SERVICE=eip /usr/libexec/netdata/plugins.d/go.d.plugin\n```\nAlternatively, use a port >= 1024 (e.g., `1062`) and redirect traffic through a firewall.\n\n\n### SNMPv3 traps not decoded (unknown_engine_id)\n\nIn static mode, the sender engine ID is not in `engine_id_whitelist`. Add the sender engine ID\nto the whitelist, or switch to `dynamic_engine_id_discovery: true` with an empty whitelist.\n\nIn dynamic mode, the first accepted `(engineID, username)` pair increments this once as\noperator visibility. Repeated or rejected increments usually indicate cap exhaustion,\ninvalid sender state, or an unauthorized sender.\n\n\n### USM authentication failures\n\nCheck that the USM user's `auth_proto`, `auth_key`, `priv_proto`, and `priv_key` match the\nsender device's configuration. Verify engine ID matches. Use Netdata secret references for keys.\n\n\n### journal retention eating disk space\n\nThe default direct journal retention uses size-based eviction (`max_size: 10GB`) with no time-based age limit.\nFor high-trap environments, reduce `max_size` or enable `max_duration` to age-out old entries.\nOTLP-only jobs can set `journal.enabled: false`; they do not create local journal files and do not appear as sources in the local logs Function.\n\n\n",integration_type:"collector",id:"go.d.plugin-snmp_traps-SNMP_trap_listener",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp_traps/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-spigotmc",plugin_name:"go.d.plugin",module_name:"spigotmc",monitored_instance:{name:"SpigotMC",link:"https://www.spigotmc.org/",categories:["data-collection.applications"],icon_filename:"spigot.jfif"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["minecraft","spigotmc","spigot"]},overview:"# SpigotMC\n\nPlugin: go.d.plugin\nModule: spigotmc\n\n## Overview\n\nThis collector monitors SpigotMC server server performance, in the form of ticks per second average, memory utilization, and active users.\n\n\nIt sends the `tps` and `list` commands to the Server, and gathers the metrics from the responses.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects SpigotMC instances running on localhost that are listening on port 25575.\n\n> **Note that the SpigotMC RCON API requires a password**. \n> While Netdata can automatically detect SpigotMC instances and create data collection jobs, these jobs will fail unless you provide the necessary credentials.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **spigotmc** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **spigotmc**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/spigotmc.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection frequency (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | SpigotMC server RCON address (IP:PORT). | 127.0.0.1:25575 | yes |\n| | timeout | Connection, read, and write timeout duration (seconds). Includes name resolution. | 1 | no |\n| **Auth** | password | RCON password for authentication. | | yes |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **spigotmc** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the spigotmc data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _spigotmc_ (or scroll the list) to locate the **spigotmc** collector.\n5. Click the **+** next to the **spigotmc** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/spigotmc.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/spigotmc.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:25575\n password: somePassword\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:25575\n password: somePassword\n\n - name: remote\n address: 203.0.113.0:25575\n password: somePassword\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `spigotmc` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m spigotmc\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m spigotmc -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `spigotmc` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep spigotmc\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep spigotmc /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep spigotmc\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per SpigotMC instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| spigotmc.players | players | players |\n| spigotmc.avg_tps | 1min, 5min, 15min | ticks |\n| spigotmc.memory | used, alloc | bytes |\n\n",integration_type:"collector",id:"go.d.plugin-spigotmc-SpigotMC",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/spigotmc/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-sql",plugin_name:"go.d.plugin",module_name:"sql",monitored_instance:{name:"SQL databases (generic)",link:"https://en.wikipedia.org/wiki/SQL",categories:["data-collection.databases"],icon_filename:"sql.svg"},related_resources:{integrations:{list:[]}},alternative_monitored_instances:[],info_provided_to_referring_integrations:{description:""},keywords:["db","database","sql","mysql","maria","postgres","postgresql","pgx","oracle","sqlserver","mssql","generic"]},overview:"# SQL databases (generic)\n\nPlugin: go.d.plugin\nModule: sql\n\n## Overview\n\nMetrics and charts for this collector are **entirely defined by your SQL\nconfiguration**. There is no fixed metric reference: each job can expose\ndifferent metrics depending on its `metrics` and `queries` blocks.\n\nTo see what a specific job collects, open that job's dashboard in Netdata\nand inspect the charts and dimensions it created.\n\nJobs can also define **functions** that provide interactive table views in\nNetdata's Live tab. A job can have metrics only, functions only, or both.\n\n:::tip\n\nTo change what is collected, edit the `metrics` (and optional `queries`)\nin the job configuration. After you save the changes, the updated set of\ncharts and metrics is reflected in Netdata after the next data collection.\n\n:::\n\n\nThe collector connects to your database using Go\u2019s **database/sql** package\nand the selected driver:\n\n - `mysql` \u2014 MySQL / MariaDB\n - `pgx` \u2014 PostgreSQL\n - `oracle` \u2014 Oracle Database\n - `sqlserver` \u2014 Microsoft SQL Server / Azure SQL\n\nFor each metric block you define, it executes the SQL query (inline or via\n`query_ref`), reads the result set, and maps it to Netdata charts and\ndimensions.\n\nAdditionally, you can define **functions** that expose SQL query results as\ninteractive table views in Netdata's Live tab. Functions support filtering,\nsorting, and searching without creating persistent metrics.\n\n### Result Processing Modes\n\n| Mode | How it works | Best used when |\n|------------|------------------------------------------------------------------------------|-----------------------------------------------------|\n| **columns**| Specific numeric columns from each row become dimensions on your charts. | The result set has stable, known column names. |\n| **kv** | One column provides metric names (keys) and another provides their values. | The set of metrics is dynamic or key\u2013value shaped. |\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis is a **generic collector** and does **not** perform automatic detection.\n\nIt does not create any jobs on its own \u2014 you must configure at least one\njob before it can collect data.\n\n\n#### Limits\n\nThere are no built-in limits on the number of queries or rows processed.\nHowever, each metric block must define at least one chart, and each chart\nmust define at least one dimension.\n\nKeep your queries lightweight and scoped to the data you actually need\nto avoid adding load on the database server.\n\n\n#### Performance Impact\n\nPerformance impact depends entirely on the queries you configure and the\ncollection frequency (update_every).\n\nPrefer indexed reads, avoid full table scans or heavy aggregations, and\nconsider using database views tailored for monitoring.\n\n",setup:'## Setup\n\n\nYou can configure the **sql** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **sql**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/sql.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Create a read-only database user\n\nCreate a dedicated user for Netdata with read-only privileges on the\nviews/tables used in your monitoring queries.\n\nFor example, on a typical RDBMS you would:\n\n- Create a user.\n- Grant SELECT on system metrics views or monitoring views.\n\nAfter creating the user and updating the configuration, restart the\nNetdata Agent with `sudo systemctl restart netdata`, or the appropriate\nmethod for your system.\n\n\n#### Allow Netdata to connect to the database\n\nEnsure the Netdata host can reach the database via the configured DSN,\neither using:\n\n- a local UNIX/TCP socket, or\n- a network connection (hostname/IP and port).\n\nIf the database is remote, make sure any firewalls or security groups\nallow connections from the Netdata node.\n\n\n\n### Configuration\n\n#### Options\n\n**Full Configuration Structure**\n\n```yaml\n# ---------- CONNECTION ----------\ndriver: <mysql|pgx|oracle|sqlserver|azuresql> # REQUIRED. SQL driver.\ndsn: "<connection string>" # REQUIRED. Driver-specific DSN/URL.\n\n# Optional connection settings\ntimeout: <seconds> # OPTIONAL. Query timeout.\ncloud_auth: # OPTIONAL. Cloud auth for pgx/sqlserver/azuresql.\n provider: <none|azure_ad> # OPTIONAL. Default: none.\n azure_ad:\n mode: <service_principal|managed_identity|default>\n mode_service_principal: # REQUIRED for service_principal\n tenant_id: "<tenant-id>"\n client_id: "<client-id>"\n client_secret: "<client-secret>"\n mode_managed_identity: # OPTIONAL for managed_identity\n client_id: "<client-id>" # Optional for user-assigned MI\n\n# Optional static labels applied to all charts\nstatic_labels:\n <label_key1>: <label_value>\n <label_key2>: <label_value>\n\n# ---------- REUSABLE QUERIES ----------\n# Optional. Define reusable SQL queries referenced later via query_ref.\nqueries:\n - id: <query_id>\n query: |\n SELECT ...\n\n# ---------- METRICS ----------\n# Each metric block runs one query and generates one or more charts.\nmetrics:\n - id: <metric_block_id> # REQUIRED. Unique within this job.\n\n # Choose ONE of these:\n query_ref: <query_id> # Use a reusable query\n # OR\n # query: | # Inline SQL\n # SELECT ...\n\n mode: <columns|kv> # REQUIRED. How to interpret result rows.\n\n # KV mode settings (only when mode: kv)\n kv_mode:\n name_col: <column_name> # Column containing keys\n value_col: <column_name> # Column containing numeric values\n\n # Optional: derive labels from row columns (creates per-label charts)\n labels_from_row:\n - source: <column_name> # Column name from result set\n name: <label_key> # Label key exposed to Netdata\n - source: <column_name>\n name: <label_key>\n\n # Charts produced by this metric block\n charts:\n - title: "<Chart Title>" # REQUIRED. Shown in dashboards.\n context: "<context.name>" # REQUIRED. Netdata context.\n family: "<family>" # REQUIRED. Netdata chart family.\n units: "<units>" # REQUIRED. Unit string for the chart.\n type: <line|stacked|area> # OPTIONAL. Default: line.\n algorithm: <absolute|incremental> # OPTIONAL. Default: absolute.\n\n dims:\n # ---- COLUMNS MODE DIM ----\n # In mode: columns, `source` MUST be a numeric COLUMN name from the result set.\n - name: <dim_id> # REQUIRED. Dimension id (unique within this chart).\n source: <column_name> # REQUIRED. Numeric column to chart.\n\n # ---- KV MODE DIM ----\n # In mode: kv, `source` MUST be a KEY name (NOT a column).\n # The collector finds the row where (row[kv_mode.name_col] == `source`)\n # and uses row[kv_mode.value_col].\n - name: <dim_id>\n source: <key_name> # REQUIRED. Key name resolved via kv_mode.name_col.\n\n # ---- STATUS DIM (one-hot 1/0) ----\n # Works in BOTH modes. Evaluates `status_when` against the resolved value:\n # * columns mode: the value in the specified column for the row\n # * kv mode: the value for the resolved key (row[kv_mode.value_col])\n - name: <dim_id>\n source: <column_name_or_key_name> # Same interpretation as above, per mode.\n status_when: # Exactly ONE of the following:\n equals: <string|number|bool> # Active (1) if value == this literal.\n # in: [ <v1>, <v2>, ... ] # Active if value is in the list.\n # match: \'^regex$\' # Active if value matches this regex.\n\n# ---------- FUNCTIONS ----------\n# Set function_only: true if this job only provides functions (no metrics).\nfunction_only: <true|false> # OPTIONAL. Default: false.\n\n# Expose SQL queries as interactive table views in Netdata\'s Live tab.\nfunctions:\n - id: <function_id> # REQUIRED. Unique identifier.\n name: <display_name> # OPTIONAL. Derived from id if not set.\n description: <help_text> # OPTIONAL. Shown in the UI.\n query: | # REQUIRED. SQL to execute.\n SELECT ...\n timeout: <seconds> # OPTIONAL. Query timeout.\n limit: <max_rows> # OPTIONAL. Default: 100.\n default_sort: <column_name> # OPTIONAL. Initial sort column.\n default_sort_desc: <true|false> # OPTIONAL. Default: true.\n columns: # OPTIONAL. Override column metadata.\n <column_name>:\n type: <string|integer|float|boolean|duration|timestamp>\n units: <unit_string>\n tooltip: <hover_text>\n visible: <true|false>\n sortable: <true|false>\n```\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Not used for this collector. Set 0 to disable. | 0 | no |\n| **Target** | driver | SQL driver to use. Supported values: `mysql`, `pgx`, `oracle`, `sqlserver`, `azuresql`. | mysql | yes |\n| | dsn | Database connection string (DSN). The format depends on the selected driver ( [MySQL](https://github.com/go-sql-driver/mysql#dsn-data-source-name), [PostgreSQL](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING-URIS), [MS SQL Server](https://github.com/microsoft/go-mssqldb#connection-parameters-and-dsn)). | | yes |\n| **Cloud Auth** | cloud_auth.provider | Cloud auth provider (`none` or `azure_ad`). Supported for `pgx`, `sqlserver`, and `azuresql`. | none | no |\n| **Cloud Auth/Azure** | cloud_auth.azure_ad.mode | Azure AD credential mode (`service_principal`, `managed_identity`, or `default`). Required when `cloud_auth.provider` is `azure_ad`. | | yes |\n| | cloud_auth.azure_ad.mode_service_principal.tenant_id | Azure tenant ID. Required for `service_principal` mode. | | no |\n| | cloud_auth.azure_ad.mode_service_principal.client_id | Azure client ID. Required for `service_principal` mode. | | no |\n| | cloud_auth.azure_ad.mode_service_principal.client_secret | Azure client secret for `service_principal` mode. | | no |\n| | cloud_auth.azure_ad.mode_managed_identity.client_id | Optional client ID of a user-assigned managed identity (`managed_identity` mode). | | no |\n| **Connection** | timeout | Query and connection check timeout (seconds). | 5 | no |\n| **Labels** | static_labels | A map of static labels added to every chart created by this job. Useful for tagging charts with environment, region, or role. | {} | no |\n| **Queries & Metrics** | queries | A list of reusable queries. Metric blocks can reference these via `query_ref` to avoid repeating SQL. See [Configuration Structure](#configuration) for details. | [] | no |\n| | metrics | A list of metric blocks. Each block defines how a query is executed and how its result is transformed into one or more charts. See [Configuration Structure](#configuration) for details. | [] | no |\n| **Functions** | functions | A list of SQL functions exposed as interactive table views in Netdata\'s Live tab. Each function runs a SQL query and displays results in a filterable, sortable table. See [Functions](#functions) for details. | [] | no |\n| | functions[].id | Unique identifier for this function. | | yes |\n| | functions[].name | Display name shown in the UI. Auto-derived from ID if not set. | | no |\n| | functions[].description | Help text shown in the UI. | | no |\n| | functions[].query | SQL query to execute when this function is called. | | yes |\n| | functions[].timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions[].limit | Maximum rows to return. | 100 | no |\n| | functions[].default_sort | Column name for initial sort order. | | no |\n| | functions[].default_sort_desc | Sort in descending order by default. | yes | no |\n| | functions[].columns | Override auto-detected column metadata. Map of column name to settings (type, units, tooltip, visible, sortable). | {} | no |\n| | function_only | Set to true if this job only provides functions (no metrics). When enabled, metrics configuration is not required and no charts are created. | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a Virtual Node. | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **sql** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the sql data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _sql_ (or scroll the list) to locate the **sql** collector.\n5. Click the **+** next to the **sql** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/sql.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/sql.conf\n```\n\n##### Examples\n\n###### Azure SQL with service principal (azuresql)\n\nSQL Server query example against Azure SQL using Microsoft Entra service principal authentication.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: azure_sql_connections\n driver: azuresql\n dsn: "sqlserver://my-server.database.windows.net:1433?database=master"\n timeout: 5\n cloud_auth:\n provider: azure_ad\n azure_ad:\n mode: service_principal\n mode_service_principal:\n tenant_id: "00000000-0000-0000-0000-000000000000"\n client_id: "11111111-1111-1111-1111-111111111111"\n client_secret: "super-secret-value"\n metrics:\n - id: user_connections\n mode: columns\n query: |\n SELECT COUNT(*) AS connections\n FROM sys.dm_exec_sessions\n WHERE is_user_process = 1;\n charts:\n - title: "Azure SQL user connections"\n context: sql.azure_sql_user_connections\n family: connections\n units: sessions\n dims:\n - name: users\n source: connections\n\n```\n{% /details %}\n###### Azure PostgreSQL with default credential (pgx)\n\nPostgreSQL query example against Azure Database for PostgreSQL using the default Azure credential chain.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: azure_pg_uptime\n driver: pgx\n dsn: \'postgresql://netdata@myserver.postgres.database.azure.com:5432/postgres?sslmode=require\'\n timeout: 5\n cloud_auth:\n provider: azure_ad\n azure_ad:\n mode: default\n metrics:\n - id: uptime\n mode: columns\n query: |\n SELECT EXTRACT(EPOCH FROM (now() - pg_postmaster_start_time())) AS uptime_seconds;\n charts:\n - title: "Azure PostgreSQL uptime"\n context: sql.azure_pg_uptime\n family: uptime\n units: seconds\n dims:\n - name: uptime\n source: uptime_seconds\n\n```\n{% /details %}\n###### Columns mode \u2013 per-database conflicts (with labels)\n\nPostgreSQL example that collects database-level conflict counters from\n`pg_stat_database_conflicts` and creates a separate chart instance per\ndatabase using `labels_from_row`.\n\nThe query:\n\n```sql\nSELECT\n datname,\n confl_tablespace,\n confl_lock,\n confl_snapshot,\n confl_bufferpin,\n confl_deadlock\nFROM pg_stat_database_conflicts;\n```\n\nExample output:\n\n| datname | confl_tablespace | confl_lock | confl_snapshot | confl_bufferpin | confl_deadlock |\n|------------|------------------|------------|----------------|-----------------|----------------|\n| postgres | 0 | 0 | 0 | 0 | 0 |\n| production | 0 | 0 | 0 | 0 | 0 |\n\nThis configuration turns each row into a **chart instance** (one for\n`db=postgres`, one for `db=production`) with five dimensions\n(`confl_tablespace`, `confl_lock`, `confl_snapshot`, `confl_bufferpin`,\n`confl_deadlock`).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: pg_conflicts_per_db\n driver: pgx\n dsn: \'postgresql://netdata:password@127.0.0.1:5432/postgres\'\n timeout: 5\n\n metrics:\n - id: conflicts\n mode: columns\n query: |\n SELECT\n datname,\n confl_tablespace,\n confl_lock,\n confl_snapshot,\n confl_bufferpin,\n confl_deadlock\n FROM pg_stat_database_conflicts;\n labels_from_row:\n - source: datname\n name: db\n charts:\n - title: "PostgreSQL conflicts"\n context: sql.pg_conflicts\n family: conflicts\n units: conflicts\n type: line\n algorithm: absolute\n dims:\n - name: confl_tablespace\n source: confl_tablespace\n - name: confl_lock\n source: confl_lock\n - name: confl_snapshot\n source: confl_snapshot\n - name: confl_bufferpin\n source: confl_bufferpin\n - name: confl_deadlock\n source: confl_deadlock\n\n```\n{% /details %}\n###### Columns mode \u2013 single numeric value (uptime)\n\nPostgreSQL example that exposes a single numeric metric (server uptime in\nseconds) as a one-dimension chart using columns mode.\n\nThe query:\n\n```sql\nSELECT\n EXTRACT(\n EPOCH FROM (now() - pg_postmaster_start_time())\n ) AS uptime_seconds;\n```\n\nExample output:\n\n| uptime_seconds |\n|----------------|\n| 50.867359 |\n\nThis configuration maps the `uptime_seconds` column to a single\n`uptime` dimension on the `sql.pg_uptime` chart.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: pg_uptime\n driver: pgx\n dsn: \'postgresql://netdata:password@127.0.0.1:5432/postgres\'\n timeout: 5\n\n metrics:\n - id: uptime\n mode: columns\n query: |\n SELECT\n EXTRACT(\n EPOCH FROM (now() - pg_postmaster_start_time())\n ) AS uptime_seconds;\n charts:\n - title: "PostgreSQL uptime"\n context: sql.pg_uptime\n family: uptime\n units: seconds\n type: line\n algorithm: absolute\n dims:\n - name: uptime\n source: uptime_seconds\n\n```\n{% /details %}\n###### KV mode \u2013 connection states as key/value pairs\n\nPostgreSQL example that aggregates connection states from\n`pg_stat_activity` and uses kv mode to map each state to a dimension.\n\nThe query:\n\n```sql\nSELECT\n state,\n count(*) AS cnt\nFROM pg_stat_activity\nGROUP BY state;\n```\n\nExample output:\n\n| state | cnt |\n|------------------------------|-----|\n| active | 1 |\n| idle | 14 |\n| idle in transaction | 7 |\n| idle in transaction (aborted)| 1 |\n| fastpath function call | 1 |\n| disabled | 1 |\n\nWith `mode: kv`, `state` becomes the **key** and `cnt` the **value**.\nEach distinct `state` value is mapped to a chart dimension via `dims[*].source`.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: pg_activity_states\n driver: pgx\n dsn: \'postgresql://netdata:password@127.0.0.1:5432/postgres\'\n timeout: 5\n\n metrics:\n - id: activity_states\n mode: kv\n query: |\n SELECT\n state,\n count(*) AS cnt\n FROM pg_stat_activity\n GROUP BY state;\n kv_mode:\n name_col: state\n value_col: cnt\n charts:\n - title: "PostgreSQL connection states"\n context: sql.pg_activity_states\n family: connections\n units: connections\n type: stacked\n algorithm: absolute\n dims:\n - name: active\n source: active\n - name: idle\n source: idle\n - name: idle_in_transaction\n source: "idle in transaction"\n - name: idle_in_transaction_aborted\n source: "idle in transaction (aborted)"\n - name: fastpath_function_call\n source: "fastpath function call"\n - name: disabled\n source: disabled\n\n```\n{% /details %}\n###### Columns mode \u2013 map state values to a status metric\n\nSimple PostgreSQL example that turns a boolean-like state into a 0/1\nstatus metric using `status_when`.\n\nThe query:\n\n```sql\nSELECT pg_is_in_recovery();\n```\n\nExample output:\n\n| pg_is_in_recovery |\n|-------------------|\n| f |\n\nThis configuration creates a single chart with two status dimensions:\n - `in_recovery` becomes **1 when the value is `"t"`** and **0 otherwise**.\n - `not_in_recovery` becomes **1 when the value is `"f"`** and **0 otherwise**.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: pg_recovery_status\n driver: pgx\n dsn: \'postgresql://netdata:password@127.0.0.1:5432/postgres\'\n timeout: 5\n\n metrics:\n - id: recovery_status\n mode: columns\n query: |\n SELECT pg_is_in_recovery();\n charts:\n - title: "PostgreSQL recovery status"\n context: sql.pg_recovery_status\n family: state\n units: status\n type: line\n algorithm: absolute\n dims:\n - name: in_recovery\n source: pg_is_in_recovery\n status_when:\n equals: "t"\n - name: not_in_recovery\n source: pg_is_in_recovery\n status_when:\n equals: "f"\n\n```\n{% /details %}\n###### Function-only mode \u2013 slow query analysis\n\nPostgreSQL example that provides an interactive slow query analysis view\nwithout collecting any time-series metrics.\n\nThis is useful for ad-hoc troubleshooting via the Netdata **Live** tab.\nThe function queries `pg_stat_statements` to show the slowest queries\nsorted by total execution time.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: pg_slow_queries\n driver: pgx\n dsn: \'postgresql://netdata:password@127.0.0.1:5432/postgres\'\n timeout: 10\n function_only: true\n\n functions:\n - id: slow-queries\n name: Slow Queries\n description: Top queries by total execution time from pg_stat_statements\n query: |\n SELECT\n queryid,\n LEFT(query, 100) AS query,\n calls,\n total_exec_time,\n mean_exec_time,\n rows\n FROM pg_stat_statements\n ORDER BY total_exec_time DESC\n limit: 100\n default_sort: total_exec_time\n default_sort_desc: true\n columns:\n total_exec_time:\n type: duration\n units: milliseconds\n tooltip: Total time spent executing this query\n mean_exec_time:\n type: duration\n units: milliseconds\n tooltip: Average execution time per call\n\n```\n{% /details %}\n###### Combined metrics and functions\n\nPostgreSQL example that collects time-series metrics AND provides\ninteractive function views in the same job.\n\n- The `metrics` block creates charts for connection states.\n- The `functions` block provides an interactive activity view.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: pg_combined\n driver: pgx\n dsn: \'postgresql://netdata:password@127.0.0.1:5432/postgres\'\n timeout: 5\n\n # Time-series metrics\n metrics:\n - id: connections\n mode: kv\n query: |\n SELECT state, count(*) AS cnt\n FROM pg_stat_activity\n GROUP BY state\n kv_mode:\n name_col: state\n value_col: cnt\n charts:\n - title: "Connection states"\n context: sql.pg_connections\n family: connections\n units: connections\n type: stacked\n dims:\n - name: active\n source: active\n - name: idle\n source: idle\n\n # Interactive functions\n functions:\n - id: active-sessions\n name: Active Sessions\n description: Currently running queries\n query: |\n SELECT\n pid,\n usename,\n datname,\n state,\n query_start,\n LEFT(query, 200) AS query\n FROM pg_stat_activity\n WHERE state = \'active\'\n limit: 50\n columns:\n query_start:\n type: timestamp\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `sql` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m sql\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m sql -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `sql` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep sql\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep sql /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep sql\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",functions:"## Live Data\n\nThis collector supports user-defined SQL functions that expose query results as\ninteractive table views in Netdata's **Live** tab. Functions are configured per job\nin the `functions` section of the job configuration. Since functions are entirely\nuser-defined, no predefined functions are listed here.\n\nIn the Live tab, functions appear in a hierarchical menu:\n\n```\nDatabases\n\u2514\u2500\u2500 SQL\n \u2514\u2500\u2500 <job_name>\n \u251c\u2500\u2500 <function_name_1>\n \u2514\u2500\u2500 <function_name_2>\n```\n\nEach job creates its own group containing all functions defined for that job.\n\n\n",metrics:"## Metrics\n\nMetrics and charts are **defined by your SQL queries and metric blocks** at runtime. They differ by database engine, schema, and configuration, and may include, for example, connection counts, cache hit ratios, row throughput, lock statistics, or custom business KPIs. Use the **Metrics** tab on the job\u2019s dashboard to see exactly what is collected for that job.\n\n:::tip\n\n To change what is collected, edit the `metrics` (and optionally `queries`) sections in `go.d/sql.conf` for the corresponding job. Each change is reflected in Netdata charts after the next data collection.\n\n:::\n\n",integration_type:"collector",id:"go.d.plugin-sql-SQL_databases_(generic)",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/sql/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-squid",plugin_name:"go.d.plugin",module_name:"squid",monitored_instance:{name:"Squid",link:"https://www.squid-cache.org/",categories:["data-collection.web-servers-and-proxies"],icon_filename:"squid.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["squid","web delivery","squid caching proxy"]},overview:"# Squid\n\nPlugin: go.d.plugin\nModule: squid\n\n## Overview\n\nThis collector monitors statistics about the Squid Clients and Servers, like bandwidth and requests.\n\n\nIt collects metrics from the `squid-internal-mgr/counters` endpoint.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Squid instances running on localhost that are listening on port 3128.\nOn startup, it tries to collect metrics from:\n\n- https://127.0.0.1:3128\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **squid** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **squid**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/squid.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:3128 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **squid** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the squid data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _squid_ (or scroll the list) to locate the **squid** collector.\n5. Click the **+** next to the **squid** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/squid.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/squid.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:3128\n\n```\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:3128\n\n - name: remote\n url: http://192.0.2.1:3128\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `squid` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m squid\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m squid -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `squid` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep squid\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep squid /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep squid\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Squid instance\n\nThese metrics refer to each monitored Squid instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| squid.clients_net | in, out, hits | kilobits/s |\n| squid.clients_requests | requests, hits, errors | requests/s |\n| squid.servers_net | in, out | kilobits/s |\n| squid.servers_requests | requests, errors | requests/s |\n\n",integration_type:"collector",id:"go.d.plugin-squid-Squid",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/squid/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-squidlog",plugin_name:"go.d.plugin",module_name:"squidlog",monitored_instance:{name:"Squid log files",link:"http://www.squid-cache.org/",icon_filename:"squid.png",categories:["data-collection.web-servers-and-proxies"]},keywords:["squid","logs"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Squid log files\n\nPlugin: go.d.plugin\nModule: squidlog\n\n## Overview\n\nhis collector monitors Squid servers by parsing their access log files.\n\n\nIt automatically detects log files of Squid severs running on localhost.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **squidlog** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **squidlog**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/squidlog.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nSquid [log format codes](https://www.squid-cache.org/Doc/config/logformat/).\n\nSquidlog is aware how to parse and interpret the following codes:\n\n| field | squid format code | description |\n|----------------|-------------------|---------------------------------------------------------------|\n| resp_time | %tr | Response time (milliseconds). |\n| client_address | %>a | Client source IP address. |\n| client_address | %>A | Client FQDN. |\n| cache_code | %Ss | Squid request status (TCP_MISS etc). |\n| http_code | %>Hs | The HTTP response status code from Content Gateway to client. |\n| resp_size | %<st | Total size of reply sent to client (after adaptation). |\n| req_method | %rm | Request method (GET/POST etc). |\n| hier_code | %Sh | Squid hierarchy status (DEFAULT_PARENT etc). |\n| server_address | %<a | Server IP address of the last server or peer connection. |\n| server_address | %<A | Server FQDN or peer name. |\n| mime_type | %mt | MIME content type. |\n\nIn addition, to make `Squid` [native log format](https://wiki.squid-cache.org/Features/LogFormat#Squid_native_access.log_format_in_detail) csv parsable, squidlog understands these groups of codes:\n\n| field | squid format code | description |\n|-------------|-------------------|------------------------------------|\n| result_code | %Ss/%>Hs | Cache code and http code. |\n| hierarchy | %Sh/%<a | Hierarchy code and server address. |\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection frequency (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | path | Path to the Squid access log file. | /var/log/squid/access.log | yes |\n| | exclude_path | File path patterns to exclude. | *.gz | no |\n| **Parser** | parser | Log parser configuration block. | | no |\n| | parser.log_type | Log parser type (`csv`, `ltsv`, `regexp`, or `auto`). | auto | no |\n| | parser.csv_config | CSV log parser configuration block. | | no |\n| | parser.csv_config.delimiter | CSV field delimiter. | space | no |\n| | parser.csv_config.format | CSV log format string. | - $resp_time $client_address $result_code $resp_size $req_method - - $hierarchy $mime_type | yes |\n| | parser.ltsv_config | LTSV log parser configuration block. | | no |\n| | parser.ltsv_config.field_delimiter | LTSV field delimiter. | \\t | no |\n| | parser.ltsv_config.value_delimiter | LTSV value delimiter. | : | no |\n| | parser.ltsv_config.mapping | LTSV fields mapping to known fields. | | yes |\n| | parser.regexp_config | RegExp log parser configuration block. | | no |\n| | parser.regexp_config.pattern | RegExp pattern with named groups mapped to known fields. | | yes |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **squidlog** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the squidlog data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _squidlog_ (or scroll the list) to locate the **squidlog** collector.\n5. Click the **+** next to the **squidlog** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/squidlog.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/squidlog.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `squidlog` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m squidlog\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m squidlog -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `squidlog` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep squidlog\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep squidlog /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep squidlog\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Squid log files instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| squidlog.requests | requests | requests/s |\n| squidlog.excluded_requests | unmatched | requests/s |\n| squidlog.type_requests | success, bad, redirect, error | requests/s |\n| squidlog.http_status_code_class_responses | 1xx, 2xx, 3xx, 4xx, 5xx | responses/s |\n| squidlog.http_status_code_responses | a dimension per HTTP response code | responses/s |\n| squidlog.bandwidth | sent | kilobits/s |\n| squidlog.response_time | min, max, avg | milliseconds |\n| squidlog.uniq_clients | clients | clients |\n| squidlog.cache_result_code_requests | a dimension per cache result code | requests/s |\n| squidlog.cache_result_code_transport_tag_requests | a dimension per cache result delivery transport tag | requests/s |\n| squidlog.cache_result_code_handling_tag_requests | a dimension per cache result handling tag | requests/s |\n| squidlog.cache_code_object_tag_requests | a dimension per cache result produced object tag | requests/s |\n| squidlog.cache_code_load_source_tag_requests | a dimension per cache result load source tag | requests/s |\n| squidlog.cache_code_error_tag_requests | a dimension per cache result error tag | requests/s |\n| squidlog.http_method_requests | a dimension per HTTP method | requests/s |\n| squidlog.mime_type_requests | a dimension per MIME type | requests/s |\n| squidlog.hier_code_requests | a dimension per hierarchy code | requests/s |\n| squidlog.server_address_forwarded_requests | a dimension per server address | requests/s |\n\n",integration_type:"collector",id:"go.d.plugin-squidlog-Squid_log_files",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/squidlog/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-storcli",plugin_name:"go.d.plugin",module_name:"storcli",monitored_instance:{name:"StoreCLI RAID",link:"https://docs.broadcom.com/doc/12352476",icon_filename:"hard-drive.svg",categories:["data-collection.storage"]},keywords:["storage","raid-controller","manage-disks"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# StoreCLI RAID\n\nPlugin: go.d.plugin\nModule: storcli\n\n## Overview\n\nMonitors the health of StoreCLI Hardware RAID by tracking the status of RAID adapters, physical drives, and backup batteries in your storage system.\nIt relies on the [`storcli`](https://docs.broadcom.com/doc/12352476) CLI tool but avoids directly executing the binary.\nInstead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment.\nThis approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.\n\nExecuted commands:\n- `storcli /cALL show all J nolog`\n- `storcli /cALL/eALL/sALL show all J nolog`\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n- BSD\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **storcli** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **storcli**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/storcli.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| timeout | storcli binary execution timeout. | 2 | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **storcli** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the storcli data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _storcli_ (or scroll the list) to locate the **storcli** collector.\n5. Click the **+** next to the **storcli** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/storcli.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/storcli.conf\n```\n\n##### Examples\n\n###### Custom update_every\n\nAllows you to override the default data collection interval.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: storcli\n update_every: 5 # Collect StorCLI RAID statistics every 5 seconds\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `storcli` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m storcli\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m storcli -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `storcli` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep storcli\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep storcli /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep storcli\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ storcli_controller_health_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/storcli.conf) | storcli.controller_health_status | RAID controller ${label:controller_number} is unhealthy |\n| [ storcli_controller_bbu_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/storcli.conf) | storcli.controller_bbu_status | RAID controller ${label:controller_number} BBU is unhealthy |\n| [ storcli_phys_drive_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/storcli.conf) | storcli.phys_drive_errors | RAID physical drive c${label:controller_number}/e${label:enclosure_number}/s${label:slot_number} errors |\n| [ storcli_phys_drive_predictive_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/storcli.conf) | storcli.phys_drive_predictive_failures | RAID physical drive c${label:controller_number}/e${label:enclosure_number}/s${label:slot_number} predictive failures |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per controller\n\nThese metrics refer to the Controller.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| controller_number | Controller number (index) |\n| model | Controller model |\n| driver_name | Controller driver (megaraid_sas or mpt3sas) |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| storcli.controller_health_status | healthy, unhealthy | status |\n| storcli.controller_status | optimal, degraded, partially_degraded, failed | status |\n| storcli.controller_bbu_status | healthy, unhealthy, na | status |\n| storcli.controller_roc_temperature | temperature | Celsius |\n\n### Per physical drive\n\nThese metrics refer to the Physical Drive.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| controller_number | Controller number (index) |\n| enclosure_number | Enclosure number (index) |\n| slot_number | Slot number (index) |\n| media type | Media type (e.g. HDD) |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| storcli.phys_drive_errors | media, other | errors/s |\n| storcli.phys_drive_predictive_failures | predictive_failures | failures/s |\n| storcli.phys_drive_smart_alert_status | active, inactive | status |\n| storcli.phys_drive_temperature | temperature | Celsius |\n\n### Per bbu\n\nThese metrics refer to the Backup Battery Unit.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| controller_number | Controller number (index) |\n| bbu_number | BBU number (index) |\n| model | BBU model |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| storcli.bbu_temperature | temperature | Celsius |\n\n",integration_type:"collector",id:"go.d.plugin-storcli-StoreCLI_RAID",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/storcli/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-supervisord",plugin_name:"go.d.plugin",module_name:"supervisord",monitored_instance:{name:"Supervisor",link:"http://supervisord.org/",icon_filename:"supervisord.png",categories:["data-collection.operating-systems"]},keywords:["supervisor"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Supervisor\n\nPlugin: go.d.plugin\nModule: supervisord\n\n## Overview\n\nThis collector monitors Supervisor instances.\n\nIt can collect metrics from:\n\n- [unix socket](http://supervisord.org/configuration.html?highlight=unix_http_server#unix-http-server-section-values)\n- [internal http server](http://supervisord.org/configuration.html?highlight=unix_http_server#inet-http-server-section-settings)\n\nUsed methods:\n\n- [`supervisor.getAllProcessInfo`](http://supervisord.org/api.html#supervisor.rpcinterface.SupervisorNamespaceRPCInterface.getAllProcessInfo)\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **supervisord** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **supervisord**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/supervisord.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary=\"Config options\" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Supervisord XML-RPC endpoint URL. | http://127.0.0.1:9001/RPC2 | yes |\n| | timeout | Request timeout (seconds). | 1 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **supervisord** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the supervisord data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _supervisord_ (or scroll the list) to locate the **supervisord** collector.\n5. Click the **+** next to the **supervisord** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/supervisord.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/supervisord.conf\n```\n\n##### Examples\n\n###### HTTP\n\nCollect metrics via HTTP.\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n url: 'http://127.0.0.1:9001/RPC2'\n\n```\n{% /details %}\n###### Socket\n\nCollect metrics via Unix socket.\n\n{% details open=true summary=\"Config\" %}\n```yaml\n- name: local\n url: 'unix:///run/supervisor.sock'\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollect metrics from local and remote instances.\n\n\n{% details open=true summary=\"Config\" %}\n```yaml\njobs:\n - name: local\n url: 'http://127.0.0.1:9001/RPC2'\n\n - name: remote\n url: 'http://192.0.2.1:9001/RPC2'\n\n```\n{% /details %}\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `supervisord` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m supervisord\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m supervisord -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `supervisord` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep supervisord\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep supervisord /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep supervisord\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Supervisor instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| supervisord.summary_processes | running, non-running | processes |\n\n### Per process group\n\nThese metrics refer to the process group.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| supervisord.processes | running, non-running | processes |\n| supervisord.process_state_code | a dimension per process | code |\n| supervisord.process_exit_status | a dimension per process | exit status |\n| supervisord.process_uptime | a dimension per process | seconds |\n| supervisord.process_downtime | a dimension per process | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-supervisord-Supervisor",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/supervisord/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-systemdunits",plugin_name:"go.d.plugin",module_name:"systemdunits",monitored_instance:{name:"Systemd Units",link:"https://www.freedesktop.org/wiki/Software/systemd/",icon_filename:"systemd.svg",categories:["data-collection.operating-systems"]},keywords:["systemd"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Systemd Units\n\nPlugin: go.d.plugin\nModule: systemdunits\n\n## Overview\n\nThis collector monitors the state of Systemd units and unit files.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **systemdunits** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **systemdunits**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/systemdunits.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection frequency. | 1 | no |\n| | autodetection_retry | Recheck interval in seconds. Zero means no recheck will be scheduled. | 0 | no |\n| | timeout | System bus requests timeout. | 1 | no |\n| **Units** | [include](#option-units-include) | Systemd units selector. | *.service | no |\n| | skip_transient | If set, skip data collection for systemd transient units. | false | no |\n| **Unit Files** | collect_unit_files | If set to true, collect the state of installed unit files. Enabling this may increase system overhead. | false | no |\n| | collect_unit_files_every | Interval for querying systemd about unit files and their enablement state, measured in seconds. Data is cached for this interval to reduce system overhead. | 300 | no |\n| | [include_unit_files](#option-unit-files-include-unit-files) | Systemd unit files selector. | *.service | no |\n\n<a id="option-units-include"></a>\n##### include\n\nSystemd units matching the selector will be monitored.\n\n- Logic: (pattern1 OR pattern2)\n- Pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match)\n- Syntax:\n\n```yaml\nincludes:\n - pattern1\n - pattern2\n```\n\n\n<a id="option-unit-files-include-unit-files"></a>\n##### include_unit_files\n\nSystemd unit files matching the selector will be monitored.\n\n- Logic: (pattern1 OR pattern2)\n- Pattern syntax: [shell file name pattern](https://golang.org/pkg/path/filepath/#Match)\n- Syntax:\n\n```yaml\nincludes:\n - pattern1\n - pattern2\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **systemdunits** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the systemdunits data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _systemdunits_ (or scroll the list) to locate the **systemdunits** collector.\n5. Click the **+** next to the **systemdunits** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/systemdunits.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/systemdunits.conf\n```\n\n##### Examples\n\n###### Service units\n\nCollect state of all service type units.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: service\n include:\n - \'*.service\'\n\n```\n{% /details %}\n###### One specific unit\n\nCollect state of one specific unit.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: my-specific-service\n include:\n - \'my-specific.service\'\n\n```\n{% /details %}\n###### All unit types\n\nCollect state of all units.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: my-specific-service-unit\n include:\n - \'*\'\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollect state of all service and socket type units.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: service\n include:\n - \'*.service\'\n\n - name: socket\n include:\n - \'*.socket\'\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `systemdunits` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m systemdunits\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m systemdunits -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `systemdunits` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep systemdunits\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep systemdunits /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep systemdunits\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ systemd_service_unit_failed_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/systemdunits.conf) | systemd.service_unit_state | systemd service unit in the failed state |\n| [ systemd_socket_unit_failed_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/systemdunits.conf) | systemd.socket_unit_state | systemd socket unit in the failed state |\n| [ systemd_target_unit_failed_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/systemdunits.conf) | systemd.target_unit_state | systemd target unit in the failed state |\n| [ systemd_path_unit_failed_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/systemdunits.conf) | systemd.path_unit_state | systemd path unit in the failed state |\n| [ systemd_device_unit_failed_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/systemdunits.conf) | systemd.device_unit_state | systemd device unit in the failed state |\n| [ systemd_mount_unit_failed_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/systemdunits.conf) | systemd.mount_unit_state | systemd mount unit in the failed state |\n| [ systemd_automount_unit_failed_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/systemdunits.conf) | systemd.automount_unit_state | systemd automount unit in the failed state |\n| [ systemd_swap_unit_failed_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/systemdunits.conf) | systemd.swap_unit_state | systemd swap unit in the failed state |\n| [ systemd_scope_unit_failed_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/systemdunits.conf) | systemd.scope_unit_state | systemd scope unit in the failed state |\n| [ systemd_slice_unit_failed_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/systemdunits.conf) | systemd.slice_unit_state | systemd slice unit in the failed state |\n| [ systemd_timer_unit_failed_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/systemdunits.conf) | systemd.timer_unit_state | systemd timer unit in the failed state |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per unit\n\nThese metrics refer to the systemd unit.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| unit_name | systemd unit name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| systemd.service_unit_state | active, inactive, activating, deactivating, failed | state |\n| systemd.socket_unit_state | active, inactive, activating, deactivating, failed | state |\n| systemd.target_unit_state | active, inactive, activating, deactivating, failed | state |\n| systemd.path_unit_state | active, inactive, activating, deactivating, failed | state |\n| systemd.device_unit_state | active, inactive, activating, deactivating, failed | state |\n| systemd.mount_unit_state | active, inactive, activating, deactivating, failed | state |\n| systemd.automount_unit_state | active, inactive, activating, deactivating, failed | state |\n| systemd.swap_unit_state | active, inactive, activating, deactivating, failed | state |\n| systemd.timer_unit_state | active, inactive, activating, deactivating, failed | state |\n| systemd.scope_unit_state | active, inactive, activating, deactivating, failed | state |\n| systemd.slice_unit_state | active, inactive, activating, deactivating, failed | state |\n\n### Per unit file\n\nThese metrics refer to the systemd unit file.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| unit_file_name | systemd unit file name |\n| unit_file_type | systemd unit file type |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| systemd.unit_file_state | enabled, enabled-runtime, linked, linked-runtime, alias, masked, masked-runtime, static, disabled, indirect, generated, transient, bad | state |\n\n",integration_type:"collector",id:"go.d.plugin-systemdunits-Systemd_Units",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/systemdunits/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-tengine",plugin_name:"go.d.plugin",module_name:"tengine",monitored_instance:{name:"Tengine",link:"https://tengine.taobao.org/",icon_filename:"tengine.jpeg",categories:["data-collection.web-servers-and-proxies"]},keywords:["tengine","web","webserver"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Tengine\n\nPlugin: go.d.plugin\nModule: tengine\n\n## Overview\n\nThis collector monitors Tengine servers.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **tengine** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **tengine**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/tengine.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable ngx_http_reqstat_module module.\n\nTo enable the module, see the [official documentation](ngx_http_reqstat_module](https://tengine.taobao.org/document/http_reqstat.html).\nThe default line format is the only supported format.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1/us | yes |\n| | timeout | HTTP request timeout (seconds). | 2 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **tengine** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the tengine data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _tengine_ (or scroll the list) to locate the **tengine** collector.\n5. Click the **+** next to the **tengine** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/tengine.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/tengine.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/us\n\n```\n{% /details %}\n###### HTTP authentication\n\nLocal server with basic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/us\n username: foo\n password: bar\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nTengine with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1/us\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1/us\n\n - name: remote\n url: http://203.0.113.10/us\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `tengine` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m tengine\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m tengine -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `tengine` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep tengine\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep tengine /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep tengine\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Tengine instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| tengine.bandwidth_total | in, out | B/s |\n| tengine.connections_total | accepted | connections/s |\n| tengine.requests_total | processed | requests/s |\n| tengine.requests_per_response_code_family_total | 2xx, 3xx, 4xx, 5xx, other | requests/s |\n| tengine.requests_per_response_code_detailed_total | 200, 206, 302, 304, 403, 404, 419, 499, 500, 502, 503, 504, 508, other | requests/s |\n| tengine.requests_upstream_total | requests | requests/s |\n| tengine.tries_upstream_total | calls | calls/s |\n| tengine.requests_upstream_per_response_code_family_total | 4xx, 5xx | requests/s |\n\n",integration_type:"collector",id:"go.d.plugin-tengine-Tengine",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/tengine/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"tomcat",monitored_instance:{name:"Tomcat",link:"https://tomcat.apache.org/",categories:["data-collection.web-servers-and-proxies"],icon_filename:"tomcat.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["apache","tomcat","webserver","websocket","jakarta","javaEE"]},overview:"# Tomcat\n\nPlugin: go.d.plugin\nModule: tomcat\n\n## Overview\n\nThis collector monitors Tomcat metrics about bandwidth, processing time, threads and more.\n\n\nIt parses the information provided by the [Server Status](https://tomcat.apache.org/tomcat-10.0-doc/manager-howto.html#Server_Status) HTTP endpoint.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nBy default, this Tomcat collector cannot access the server's status page. To enable data collection, you will need to configure access credentials with appropriate permissions.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nIf the Netdata Agent and Tomcat are on the same host, the collector will attempt to connect to the Tomcat server's status page at `http://localhost:8080/manager/status?XML=true`.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **tomcat** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **tomcat**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/tomcat.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Access to Tomcat Status Endpoint\n\nThe Netdata Agent needs read-only access to its status endpoint to collect data from the Tomcat server.\n\nYou can achieve this by creating a dedicated user named `netdata` with read-only permissions specifically for accessing the [Server Status](https://tomcat.apache.org/tomcat-10.0-doc/manager-howto.html#Server_Status) endpoint.\n\nOnce you\'ve created the `netdata` user, you\'ll need to configure the username and password in the collector configuration file.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8080 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **tomcat** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the tomcat data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _tomcat_ (or scroll the list) to locate the **tomcat** collector.\n5. Click the **+** next to the **tomcat** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/tomcat.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/tomcat.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8080\n username: John\n password: Doe\n\n```\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8080\n username: admin1\n password: hackme1\n\n - name: remote\n url: http://192.0.2.1:8080\n username: admin2\n password: hackme2\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `tomcat` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m tomcat\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m tomcat -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `tomcat` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep tomcat\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep tomcat /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep tomcat\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Tomcat instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| tomcat.jvm_memory_usage | free, used | bytes |\n\n### Per jvm memory pool\n\nThese metrics refer to the JVM memory pool.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| mempool_name | Memory Pool name. |\n| mempool_type | Memory Pool type. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| tomcat.jvm_mem_pool_memory_usage | commited, used, max | bytes |\n\n### Per connector\n\nThese metrics refer to the connector.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| connector_name | Connector name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| tomcat.connector_requests | requests | requests/s |\n| tomcat.connector_bandwidth | received, sent | bytes/s |\n| tomcat.connector_requests_processing_time | processing_time | milliseconds |\n| tomcat.connector_errors | errors | errors/s |\n| tomcat.connector_request_threads | idle, busy | threads |\n\n",integration_type:"collector",id:"go.d.plugin-tomcat-Tomcat",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/tomcat/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-tor",plugin_name:"go.d.plugin",module_name:"tor",monitored_instance:{name:"Tor",link:"https://www.torproject.org/",categories:["data-collection.networking"],icon_filename:"tor.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["tor","traffic","vpn"]},overview:"# Tor\n\nPlugin: go.d.plugin\nModule: tor\n\n## Overview\n\nTracks Tor's download and upload traffic, as well as its uptime.\n\n\nIt reads the server's response to the [GETINFO](https://spec.torproject.org/control-spec/commands.html#getinfo) command.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects Tor instances running on localhost that are listening on port 9051.\nOn startup, it tries to collect metrics from:\n\n- 127.0.0.1:9051\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **tor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **tor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/tor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable Control Port\n\nEnable `ControlPort` in `/etc/tor/torrc`.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection frequency. | 1 | no |\n| | autodetection_retry | Recheck interval in seconds. Zero means no recheck will be scheduled. | 0 | no |\n| **Target** | address | The IP address and port where the Tor Control Port listens for connections. | 127.0.0.1:9051 | yes |\n| | timeout | Connection, read, and write timeout duration in seconds. The timeout includes name resolution. | 1 | no |\n| **Auth** | password | Password for authentication. | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **tor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the tor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _tor_ (or scroll the list) to locate the **tor** collector.\n5. Click the **+** next to the **tor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/tor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/tor.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:9051\n password: somePassword\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:9051\n password: somePassword\n\n - name: remote\n address: 203.0.113.0:9051\n password: somePassword\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `tor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m tor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m tor -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `tor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep tor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep tor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep tor\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Tor instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| tor.traffic | read, write | KiB/s |\n| tor.uptime | uptime | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-tor-Tor",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/tor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-traefik",plugin_name:"go.d.plugin",module_name:"traefik",monitored_instance:{name:"Traefik",link:"https://traefik.io/",icon_filename:"traefik.svg",categories:["data-collection.web-servers-and-proxies"]},keywords:["traefik","proxy","webproxy"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Traefik\n\nPlugin: go.d.plugin\nModule: traefik\n\n## Overview\n\nThis collector monitors Traefik servers.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **traefik** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **traefik**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/traefik.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable built-in Prometheus exporter\n\nTo enable see [Prometheus exporter](https://doc.traefik.io/traefik/observability/metrics/prometheus/) documentation.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="All options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8082/metrics | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **traefik** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the traefik data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _traefik_ (or scroll the list) to locate the **traefik** collector.\n5. Click the **+** next to the **traefik** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/traefik.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/traefik.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8082/metrics\n\n```\n{% /details %}\n###### Basic HTTP auth\n\nLocal server with basic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8082/metrics\n username: foo\n password: bar\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n http://127.0.0.1:8082/metrics\n\n - name: remote\n http://192.0.2.0:8082/metrics\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `traefik` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m traefik\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m traefik -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `traefik` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep traefik\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep traefik /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep traefik\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per entrypoint, protocol\n\nThese metrics refer to the endpoint.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| traefik.entrypoint_requests | 1xx, 2xx, 3xx, 4xx, 5xx | requests/s |\n| traefik.entrypoint_request_duration_average | 1xx, 2xx, 3xx, 4xx, 5xx | milliseconds |\n| traefik.entrypoint_open_connections | a dimension per HTTP method | connections |\n\n",integration_type:"collector",id:"go.d.plugin-traefik-Traefik",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/traefik/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-typesense",plugin_name:"go.d.plugin",module_name:"typesense",monitored_instance:{name:"Typesense",link:"https://typesense.org/",categories:["data-collection.databases"],icon_filename:"typesense.svg"},related_resources:{integrations:{list:[]}},alternative_monitored_instances:[],info_provided_to_referring_integrations:{description:""},keywords:["typesense","search engine"]},overview:"# Typesense\n\nPlugin: go.d.plugin\nModule: typesense\n\n## Overview\n\nThis collector monitors the overall health status and performance of your Typesense servers.\nIt gathers detailed metrics, including the total number of requests processed, the breakdown of different request types, and the average latency experienced by each request.\n\n\nIt gathers metrics by periodically issuing HTTP GET requests to the Typesense server:\n\n- [/health](https://typesense.org/docs/27.0/api/cluster-operations.html#health) endpoint to check server health.\n- [/stats.json](https://typesense.org/docs/27.0/api/cluster-operations.html#api-stats) endpoint to collect data on requests and latency.\n\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector can automatically detect Typesense instances running on:\n\n- localhost that are listening on port 8108\n- within Docker containers\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **typesense** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **typesense**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/typesense.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### API Key Configuration\n\nWhile optional, configuring an [API key](https://typesense.org/docs/0.20.0/api/api-keys.html#api-keys) is highly recommended to enable the collector to gather [stats metrics](https://typesense.org/docs/27.0/api/cluster-operations.html#api-stats), including request counts and latency.\nWithout an API key, the collector will only collect health status information.\n\n> If you\'re running Typesense with the API key provided as a command-line parameter (e.g., `--api-key=XYZ`), Netdata can automatically detect and use this key for queries.\n> In this case, no additional configuration is required.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8108 | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | api_key | Typesense API key (`X-TYPESENSE-API-KEY`). See [API Keys](https://typesense.org/docs/0.20.0/api/api-keys.html#api-keys). | | no |\n| | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **typesense** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the typesense data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _typesense_ (or scroll the list) to locate the **typesense** collector.\n5. Click the **+** next to the **typesense** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/typesense.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/typesense.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8108\n api_key: XYZ\n\n```\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8108\n api_key: XYZ\n\n - name: remote\n url: http://192.0.2.1:8108\n api_key: XYZ\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `typesense` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m typesense\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m typesense -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `typesense` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep typesense\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep typesense /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep typesense\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Typesense instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| typesense.health_status | ok, out_of_disk, out_of_memory | status |\n| typesense.total_requests | requests | requests/s |\n| typesense.requests_by_operation | search, write, import, delete | requests/s |\n| typesense.latency_by_operation | search, write, import, delete | milliseconds |\n| typesense.overloaded_requests | overloaded | requests/s |\n\n",integration_type:"collector",id:"go.d.plugin-typesense-Typesense",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/typesense/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-unbound",plugin_name:"go.d.plugin",module_name:"unbound",monitored_instance:{name:"Unbound",link:"https://nlnetlabs.nl/projects/unbound/about/",icon_filename:"unbound.png",categories:["data-collection.networking"]},keywords:["unbound","dns"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Unbound\n\nPlugin: go.d.plugin\nModule: unbound\n\n## Overview\n\nThis collector monitors Unbound servers.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **unbound** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **unbound**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/unbound.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable remote control interface\n\nSet `control-enable` to yes in [unbound.conf](https://nlnetlabs.nl/documentation/unbound/unbound.conf).\n\n\n#### Check permissions and adjust if necessary\n\nIf using unix socket:\n\n- socket should be readable and writeable by `netdata` user\n\nIf using ip socket and TLS is disabled:\n\n- socket should be accessible via network\n\nIf TLS is enabled, in addition:\n\n- `control-key-file` should be readable by `netdata` user\n- `control-cert-file` should be readable by `netdata` user\n\nFor auto-detection parameters from `unbound.conf`:\n\n- `unbound.conf` should be readable by `netdata` user\n- if you have several configuration files (include feature) all of them should be readable by `netdata` user\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection frequency. | 5 | no |\n| | autodetection_retry | Recheck interval in seconds. Zero means no recheck will be scheduled. | 0 | no |\n| **Target** | address | Server address in IP:PORT format. | 127.0.0.1:8953 | yes |\n| | timeout | Connection/read/write/SSL handshake timeout. | 1 | no |\n| | conf_path | Absolute path to the Unbound configuration file. Used to adjust behavior based on the `remote-control` section. | /etc/unbound/unbound.conf | no |\n| **Customization** | cumulative_stats | Statistics collection mode. Should match the `statistics-cumulative` parameter in the Unbound configuration file. | no | no |\n| **TLS** | use_tls | Whether to use TLS or not. | yes | no |\n| | tls_skip_verify | Server certificate chain and hostname validation policy. Controls whether the client performs this check. | yes | no |\n| | tls_ca | Certificate authority that the client uses when verifying server certificates. | | no |\n| | tls_cert | Client TLS certificate. | /etc/unbound/unbound_control.pem | no |\n| | tls_key | Client TLS key. | /etc/unbound/unbound_control.key | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **unbound** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the unbound data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _unbound_ (or scroll the list) to locate the **unbound** collector.\n5. Click the **+** next to the **unbound** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/unbound.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/unbound.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:8953\n\n```\n{% /details %}\n###### Unix socket\n\nConnecting through Unix socket.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: socket\n address: /var/run/unbound.sock\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:8953\n\n - name: remote\n address: 203.0.113.11:8953\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `unbound` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m unbound\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m unbound -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `unbound` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep unbound\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep unbound /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep unbound\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Unbound instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| unbound.queries | queries | queries |\n| unbound.queries_ip_ratelimited | ratelimited | queries |\n| unbound.dnscrypt_queries | crypted, cert, cleartext, malformed | queries |\n| unbound.cache | hits, miss | events |\n| unbound.cache_percentage | hits, miss | percentage |\n| unbound.prefetch | prefetches | prefetches |\n| unbound.expired | expired | replies |\n| unbound.zero_ttl_replies | zero_ttl | replies |\n| unbound.recursive_replies | recursive | replies |\n| unbound.recursion_time | avg, median | milliseconds |\n| unbound.request_list_usage | avg, max | queries |\n| unbound.current_request_list_usage | all, users | queries |\n| unbound.request_list_jostle_list | overwritten, dropped | queries |\n| unbound.tcpusage | usage | buffers |\n| unbound.uptime | time | seconds |\n| unbound.cache_memory | message, rrset, dnscrypt_nonce, dnscrypt_shared_secret | KB |\n| unbound.mod_memory | iterator, respip, validator, subnet, ipsec | KB |\n| unbound.mem_streamwait | streamwait | KB |\n| unbound.cache_count | infra, key, msg, rrset, dnscrypt_nonce, shared_secret | items |\n| unbound.type_queries | a dimension per query type | queries |\n| unbound.class_queries | a dimension per query class | queries |\n| unbound.opcode_queries | a dimension per query opcode | queries |\n| unbound.flag_queries | qr, aa, tc, rd, ra, z, ad, cd | queries |\n| unbound.rcode_answers | a dimension per reply rcode | replies |\n\n### Per thread\n\nThese metrics refer to threads.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| unbound.thread_queries | queries | queries |\n| unbound.thread_queries_ip_ratelimited | ratelimited | queries |\n| unbound.thread_dnscrypt_queries | crypted, cert, cleartext, malformed | queries |\n| unbound.thread_cache | hits, miss | events |\n| unbound.thread_cache_percentage | hits, miss | percentage |\n| unbound.thread_prefetch | prefetches | prefetches |\n| unbound.thread_expired | expired | replies |\n| unbound.thread_zero_ttl_replies | zero_ttl | replies |\n| unbound.thread_recursive_replies | recursive | replies |\n| unbound.thread_recursion_time | avg, median | milliseconds |\n| unbound.thread_request_list_usage | avg, max | queries |\n| unbound.thread_current_request_list_usage | all, users | queries |\n| unbound.thread_request_list_jostle_list | overwritten, dropped | queries |\n| unbound.thread_tcpusage | usage | buffers |\n\n",integration_type:"collector",id:"go.d.plugin-unbound-Unbound",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/unbound/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-upsd",plugin_name:"go.d.plugin",module_name:"upsd",monitored_instance:{name:"UPS (NUT)",link:"",icon_filename:"plug-circle-bolt.svg",categories:["data-collection.hardware-and-sensors"]},keywords:["ups","nut"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# UPS (NUT)\n\nPlugin: go.d.plugin\nModule: upsd\n\n## Overview\n\nThis collector monitors Uninterruptible Power Supplies by polling the UPS daemon using the NUT network protocol.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **upsd** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **upsd**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/upsd.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection frequency. | 1 | no |\n| | autodetection_retry | Recheck interval in seconds. Zero means no recheck will be scheduled. | 0 | no |\n| **Target** | address | UPS daemon address in IP:PORT format. | 127.0.0.1:3493 | yes |\n| | timeout | Connection/read/write timeout in seconds. The timeout includes name resolution, if required. | 2 | no |\n| **Auth** | username | Username for authentication. | | no |\n| | password | Password for authentication. | | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **upsd** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the upsd data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _upsd_ (or scroll the list) to locate the **upsd** collector.\n5. Click the **+** next to the **upsd** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/upsd.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/upsd.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:3493\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:3493\n\n - name: remote\n address: 203.0.113.0:3493\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `upsd` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m upsd\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m upsd -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `upsd` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep upsd\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep upsd /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep upsd\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ upsd_10min_ups_load ](https://github.com/netdata/netdata/blob/master/src/health/health.d/upsd.conf) | upsd.ups_load | UPS ${label:ups_name} average load over the last 10 minutes |\n| [ upsd_ups_battery_charge ](https://github.com/netdata/netdata/blob/master/src/health/health.d/upsd.conf) | upsd.ups_battery_charge | UPS ${label:ups_name} average battery charge over the last minute |\n| [ upsd_ups_last_collected_secs ](https://github.com/netdata/netdata/blob/master/src/health/health.d/upsd.conf) | upsd.ups_load | UPS ${label:ups_name} number of seconds since the last successful data collection |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per ups\n\nThese metrics refer to the UPS unit.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| ups_name | UPS name. |\n| battery_type | Battery type (chemistry). "battery.type" variable value. |\n| device_model | Device model. "device.mode" variable value. |\n| device_serial | Device serial number. "device.serial" variable value. |\n| device_manufacturer | Device manufacturer. "device.mfr" variable value. |\n| device_type | Device type (ups, pdu, scd, psu, ats). "device.type" variable value. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| upsd.ups_load | load | percentage |\n| upsd.ups_load_usage | load_usage | Watts |\n| upsd.ups_status | on_line, on_battery, low_battery, high_battery, replace_battery, charging, discharging, bypass, calibration, offline, overloaded, trim_input_voltage, boost_input_voltage, forced_shutdown, other | status |\n| upsd.ups_temperature | temperature | Celsius |\n| upsd.ups_battery_charge | charge | percentage |\n| upsd.ups_battery_estimated_runtime | runtime | seconds |\n| upsd.ups_battery_voltage | voltage | Volts |\n| upsd.ups_battery_voltage_nominal | nominal_voltage | Volts |\n| upsd.ups_input_voltage | voltage | Volts |\n| upsd.ups_input_voltage_nominal | nominal_voltage | Volts |\n| upsd.ups_input_current | current | Ampere |\n| upsd.ups_input_current_nominal | nominal_current | Ampere |\n| upsd.ups_input_frequency | frequency | Hz |\n| upsd.ups_input_frequency_nominal | nominal_frequency | Hz |\n| upsd.ups_output_voltage | voltage | Volts |\n| upsd.ups_output_voltage_nominal | nominal_voltage | Volts |\n| upsd.ups_output_current | current | Ampere |\n| upsd.ups_output_current_nominal | nominal_current | Ampere |\n| upsd.ups_output_frequency | frequency | Hz |\n| upsd.ups_output_frequency_nominal | nominal_frequency | Hz |\n\n',integration_type:"collector",id:"go.d.plugin-upsd-UPS_(NUT)",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/upsd/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-uwsgi",plugin_name:"go.d.plugin",module_name:"uwsgi",monitored_instance:{name:"uWSGI",link:"https://uwsgi-docs.readthedocs.io/en/latest/",categories:["data-collection.web-servers-and-proxies"],icon_filename:"uwsgi.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["application server","python","web applications"]},overview:"# uWSGI\n\nPlugin: go.d.plugin\nModule: uwsgi\n\n## Overview\n\nMonitors UWSGI worker health and performance by collecting metrics like requests, transmitted data, exceptions, and harakiris.\n\n\nIt fetches [Stats Server](https://uwsgi-docs.readthedocs.io/en/latest/StatsServer.html) statistics over TCP.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAutomatically discovers and collects UWSGI statistics from the following default locations:\n\n- localhost:1717\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **uwsgi** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **uwsgi**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/uwsgi.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Enable the uWSGI Stats Server\n\nSee [Stats Server](https://uwsgi-docs.readthedocs.io/en/latest/StatsServer.html) for details.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection frequency. | 1 | no |\n| | autodetection_retry | Recheck interval in seconds. Zero means no recheck will be scheduled. | 0 | no |\n| **Target** | address | The IP address and port where the UWSGI [Stats Server](https://uwsgi-docs.readthedocs.io/en/latest/StatsServer.html) listens for connections. | 127.0.0.1:1717 | yes |\n| | timeout | Connection, read, and write timeout duration in seconds. The timeout includes name resolution. | 1 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **uwsgi** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the uwsgi data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _uwsgi_ (or scroll the list) to locate the **uwsgi** collector.\n5. Click the **+** next to the **uwsgi** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/uwsgi.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/uwsgi.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:1717\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:1717\n\n - name: remote\n address: 203.0.113.0:1717\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `uwsgi` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m uwsgi\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m uwsgi -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `uwsgi` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep uwsgi\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep uwsgi /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep uwsgi\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per uWSGI instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| uwsgi.transmitted_data | tx | bytes/s |\n| uwsgi.requests | requests | requests/s |\n| uwsgi.harakiris | harakiris | harakiris/s |\n| uwsgi.respawns | respawns | respawns/s |\n\n### Per worker\n\nThese metrics refer to the Worker process.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| worker_id | Worker ID. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| uwsgi.worker_transmitted_data | tx | bytes/s |\n| uwsgi.worker_requests | requests | requests/s |\n| uwsgi.worker_delta_requests | delta_requests | requests/s |\n| uwsgi.worker_average_request_time | avg | milliseconds |\n| uwsgi.worker_harakiris | harakiris | harakiris/s |\n| uwsgi.worker_exceptions | exceptions | exceptions/s |\n| uwsgi.worker_status | idle, busy, cheap, pause, sig | status |\n| uwsgi.worker_request_handling_status | accepting, not_accepting | status |\n| uwsgi.worker_respawns | respawns | respawns/s |\n| uwsgi.worker_memory_rss | rss | bytes |\n| uwsgi.worker_memory_vsz | vsz | bytes |\n\n",integration_type:"collector",id:"go.d.plugin-uwsgi-uWSGI",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/uwsgi/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"varnish",monitored_instance:{name:"Varnish",link:"https://varnish-cache.org/",categories:["data-collection.web-servers-and-proxies"],icon_filename:"varnish.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["varnish","varnishstat","varnishd","cache","web server","web cache"]},overview:"# Varnish\n\nPlugin: go.d.plugin\nModule: varnish\n\n## Overview\n\nThis collector monitors Varnish instances, supporting both the open-source Varnish-Cache and the commercial Varnish-Plus.\n\nIt tracks key performance metrics, along with detailed statistics for Backends (VBE) and Storages (SMF, SMA, MSE).\n\nIt relies on the [`varnishstat`](https://varnish-cache.org/docs/trunk/reference/varnishstat.html) CLI tool but avoids directly executing the binary.\nInstead, it utilizes `ndsudo`, a Netdata helper specifically designed to run privileged commands securely within the Netdata environment.\nThis approach eliminates the need to use `sudo`, improving security and potentially simplifying permission management.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAutomatically detects and monitors Varnish instances running on the host or inside Docker containers.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **varnish** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **varnish**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/varnish.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection frequency. | 10 | no |\n| | timeout | Timeout for executing the binary, specified in seconds. | 2 | no |\n| **Target** | instance_name | Specifies the name of the Varnish instance to collect metrics from. This corresponds to the `-n` argument used with the [varnishstat](https://varnish-cache.org/docs/trunk/reference/varnishstat.html) command. | | no |\n| | docker_container | Specifies the name of the Docker container where the Varnish instance is running. If set, the `varnishstat` command will be executed within this container. | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **varnish** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the varnish data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _varnish_ (or scroll the list) to locate the **varnish** collector.\n5. Click the **+** next to the **varnish** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/varnish.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/varnish.conf\n```\n\n##### Examples\n\n###### Custom update_every\n\nAllows you to override the default data collection interval.\n\n```yaml\njobs:\n - name: varnish\n update_every: 5\n\n```\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `varnish` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m varnish\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m varnish -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `varnish` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep varnish\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep varnish /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep varnish\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Varnish instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| varnish.client_session_connections | accepted, dropped | connections/s |\n| varnish.client_requests | received | requests/s |\n| varnish.cache_hit_ratio_total | hit, miss, hitpass, hitmiss | percent |\n| varnish.cache_hit_ratio_delta | hit, miss, hitpass, hitmiss | percent |\n| varnish.cache_expired_objects | expired | objects/s |\n| varnish.cache_lru_activity | nuked, moved | objects/s |\n| varnish.threads | threads | threads |\n| varnish.thread_management_activity | created, failed, destroyed, limited | threads/s |\n| varnish.thread_queue_len | queue_length | threads |\n| varnish.backends_requests | sent | requests/s |\n| varnish.esi_parsing_issues | errors, warnings | issues/s |\n| varnish.mgmt_process_uptime | uptime | seconds |\n| varnish.child_process_uptime | uptime | seconds |\n\n### Per Backend\n\nThese metrics refer to the Backend (VBE).\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| varnish.backend_data_transfer | req_header, req_body, resp_header, resp_body | bytes/s |\n\n### Per Storage\n\nThese metrics refer to the Storage (SMA, SMF, MSE).\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| varnish.storage_space_usage | free, used | bytes |\n| varnish.storage_allocated_objects | allocated | objects |\n\n",integration_type:"collector",id:"go.d.plugin-varnish-Varnish",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/varnish/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-vcsa",plugin_name:"go.d.plugin",module_name:"vcsa",monitored_instance:{name:"vCenter Server Appliance",link:"https://docs.vmware.com/en/VMware-vSphere/6.5/com.vmware.vsphere.vcsa.doc/GUID-223C2821-BD98-4C7A-936B-7DBE96291BA4.html",icon_filename:"vmware.svg",categories:["data-collection.containers-and-vms"]},keywords:["vmware"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# vCenter Server Appliance\n\nPlugin: go.d.plugin\nModule: vcsa\n\n## Overview\n\nThis collector monitors [health statistics](https://developer.vmware.com/apis/vsphere-automation/latest/appliance/health/) of vCenter Server Appliance servers.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **vcsa** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **vcsa**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/vcsa.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | | yes |\n| | timeout | HTTP request timeout (seconds). | 5 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | yes |\n| | password | Password for Basic HTTP authentication. | | yes |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **vcsa** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the vcsa data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _vcsa_ (or scroll the list) to locate the **vcsa** collector.\n5. Click the **+** next to the **vcsa** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/vcsa.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/vcsa.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: vcsa1\n url: https://203.0.113.1\n username: admin@vsphere.local\n password: password\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nTwo instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: vcsa1\n url: https://203.0.113.1\n username: admin@vsphere.local\n password: password\n\n - name: vcsa2\n url: https://203.0.113.10\n username: admin@vsphere.local\n password: password\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `vcsa` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m vcsa\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m vcsa -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `vcsa` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep vcsa\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep vcsa /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep vcsa\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ vcsa_system_health_warn ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vcsa.conf) | vcsa.system_health_status | VCSA overall system status is orange. One or more components are degraded. |\n| [ vcsa_system_health_crit ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vcsa.conf) | vcsa.system_health_status | VCSA overall system status is red. One or more components are unavailable or will stop functioning soon. |\n| [ vcsa_applmgmt_health_warn ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vcsa.conf) | vcsa.applmgmt_health_status | VCSA ApplMgmt component status is orange. It is degraded, and may have serious problems. |\n| [ vcsa_applmgmt_health_crit ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vcsa.conf) | vcsa.applmgmt_health_status | VCSA ApplMgmt component status is red. It is unavailable, or will stop functioning soon. |\n| [ vcsa_load_health_warn ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vcsa.conf) | vcsa.load_health_status | VCSA Load component status is orange. It is degraded, and may have serious problems. |\n| [ vcsa_load_health_crit ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vcsa.conf) | vcsa.load_health_status | VCSA Load component status is red. It is unavailable, or will stop functioning soon. |\n| [ vcsa_mem_health_warn ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vcsa.conf) | vcsa.mem_health_status | VCSA Memory component status is orange. It is degraded, and may have serious problems. |\n| [ vcsa_mem_health_crit ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vcsa.conf) | vcsa.mem_health_status | VCSA Memory component status is red. It is unavailable, or will stop functioning soon. |\n| [ vcsa_swap_health_warn ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vcsa.conf) | vcsa.swap_health_status | VCSA Swap component status is orange. It is degraded, and may have serious problems. |\n| [ vcsa_swap_health_crit ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vcsa.conf) | vcsa.swap_health_status | VCSA Swap component status is red. It is unavailable, or will stop functioning soon. |\n| [ vcsa_database_storage_health_warn ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vcsa.conf) | vcsa.database_storage_health_status | VCSA Database Storage component status is orange. It is degraded, and may have serious problems. |\n| [ vcsa_database_storage_health_crit ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vcsa.conf) | vcsa.database_storage_health_status | VCSA Database Storage component status is red. It is unavailable, or will stop functioning soon. |\n| [ vcsa_storage_health_warn ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vcsa.conf) | vcsa.storage_health_status | VCSA Storage component status is orange. It is degraded, and may have serious problems. |\n| [ vcsa_storage_health_crit ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vcsa.conf) | vcsa.storage_health_status | VCSA Storage component status is red. It is unavailable, or will stop functioning soon. |\n| [ vcsa_software_packages_health_warn ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vcsa.conf) | vcsa.software_packages_health_status | VCSA software packages security updates are available. |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per vCenter Server Appliance instance\n\nThese metrics refer to the entire monitored application.\n<details>\n<summary>See health statuses</summary>\nOverall System Health:\n\n| Status | Description |\n|:-------:|:-------------------------------------------------------------------------------------------------------------------------|\n| green | All components in the appliance are healthy. |\n| yellow | One or more components in the appliance might become overloaded soon. |\n| orange | One or more components in the appliance might be degraded. |\n| red | One or more components in the appliance might be in an unusable status and the appliance might become unresponsive soon. |\n| gray | No health data is available. |\n| unknown | Collector failed to decode status. |\n\nComponents Health:\n\n| Status | Description |\n|:-------:|:-------------------------------------------------------------|\n| green | The component is healthy. |\n| yellow | The component is healthy, but may have some problems. |\n| orange | The component is degraded, and may have serious problems. |\n| red | The component is unavailable, or will stop functioning soon. |\n| gray | No health data is available. |\n| unknown | Collector failed to decode status. |\n\nSoftware Updates Health:\n\n| Status | Description |\n|:-------:|:-----------------------------------------------------|\n| green | No updates available. |\n| orange | Non-security patches might be available. |\n| red | Security patches might be available. |\n| gray | An error retrieving information on software updates. |\n| unknown | Collector failed to decode status. |\n\n</details>\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| vcsa.system_health_status | green, red, yellow, orange, gray, unknown | status |\n| vcsa.applmgmt_health_status | green, red, yellow, orange, gray, unknown | status |\n| vcsa.load_health_status | green, red, yellow, orange, gray, unknown | status |\n| vcsa.mem_health_status | green, red, yellow, orange, gray, unknown | status |\n| vcsa.swap_health_status | green, red, yellow, orange, gray, unknown | status |\n| vcsa.database_storage_health_status | green, red, yellow, orange, gray, unknown | status |\n| vcsa.storage_health_status | green, red, yellow, orange, gray, unknown | status |\n| vcsa.software_packages_health_status | green, red, orange, gray, unknown | status |\n\n",integration_type:"collector",id:"go.d.plugin-vcsa-vCenter_Server_Appliance",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/vcsa/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-vernemq",plugin_name:"go.d.plugin",module_name:"vernemq",monitored_instance:{name:"VerneMQ",link:"https://vernemq.com",icon_filename:"vernemq.svg",categories:["data-collection.databases"]},keywords:["vernemq","message brokers"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# VerneMQ\n\nPlugin: go.d.plugin\nModule: vernemq\n\n## Overview\n\nThis collector monitors VerneMQ instances.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **vernemq** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **vernemq**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/vernemq.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:8888/metrics | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **vernemq** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the vernemq data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _vernemq_ (or scroll the list) to locate the **vernemq** collector.\n5. Click the **+** next to the **vernemq** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/vernemq.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/vernemq.conf\n```\n\n##### Examples\n\n###### Basic\n\nAn example configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8888/metrics\n\n```\n{% /details %}\n###### HTTP authentication\n\nLocal instance with basic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8888/metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nLocal and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:8888/metrics\n\n - name: remote\n url: http://203.0.113.10:8888/metrics\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `vernemq` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m vernemq\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m vernemq -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `vernemq` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep vernemq\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep vernemq /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep vernemq\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ vernemq_socket_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_socket_errors | Node ${label:node} socket errors in the last minute |\n| [ vernemq_queue_message_drop ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_queue_undelivered_messages | Node ${label:node} dropped messages due to full queues in the last minute |\n| [ vernemq_queue_message_expired ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_queue_undelivered_messages | Node ${label:node} expired before delivery messages in the last minute |\n| [ vernemq_queue_message_unhandled ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_queue_undelivered_messages | Node ${label:node} unhandled messages in the last minute |\n| [ vernemq_average_scheduler_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_average_scheduler_utilization | Node ${label:node} scheduler utilization over the last 10 minutes |\n| [ vernemq_cluster_dropped ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_cluster_dropped | Node ${label:node} traffic dropped during communication with the cluster nodes in the last minute |\n| [ vernemq_netsplits ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_netsplits | Node ${label:node} detected netsplits (split brain) in the last minute |\n| [ vernemq_mqtt_connack_sent_reason_unsuccessful ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_connack_sent_by_reason_code | Node ${label:node} unsuccessful sent v5 CONNACK packets in the last minute |\n| [ vernemq_mqtt_disconnect_received_reason_not_normal ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_disconnect_received_by_reason_code | Node ${label:node} received not normal v5 DISCONNECT packets in the last minute |\n| [ vernemq_mqtt_disconnect_sent_reason_not_normal ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_disconnect_sent_by_reason_code | Node ${label:node} sent not normal v5 DISCONNECT packets in the last minute |\n| [ vernemq_mqtt_subscribe_error ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_subscribe_error | Node ${label:node} mqtt v${label:mqtt_version} failed SUBSCRIBE operations in the last minute |\n| [ vernemq_mqtt_subscribe_auth_error ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_subscribe_auth_error | Node ${label:node} mqtt v${label:mqtt_version} unauthorized SUBSCRIBE attempts in the last minute |\n| [ vernemq_mqtt_unsubscribe_error ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_unsubscribe_error | Node ${label:node} mqtt v${label:mqtt_version} failed UNSUBSCRIBE operations in the last minute |\n| [ vernemq_mqtt_publish_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_publish_errors | Node ${label:node} mqtt v${label:mqtt_version} failed PUBLISH operations in the last minute |\n| [ vernemq_mqtt_publish_auth_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_publish_auth_errors | Node ${label:node} mqtt v${label:mqtt_version} unauthorized PUBLISH attempts in the last minute |\n| [ vernemq_mqtt_puback_received_reason_unsuccessful ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_puback_received_by_reason_code | Node ${label:node} mqtt v5 received unsuccessful PUBACK packets in the last minute |\n| [ vernemq_mqtt_puback_sent_reason_unsuccessful ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_puback_sent_by_reason_code | Node ${label:node} mqtt v5 unsuccessful sent PUBACK packets in the last minute |\n| [ vernemq_mqtt_puback_unexpected ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_puback_invalid_error | Node ${label:node} mqtt v${label:mqtt_version} received unexpected PUBACK messages in the last minute |\n| [ vernemq_mqtt_pubrec_received_reason_unsuccessful ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_pubrec_received_by_reason_code | Node ${label:node} mqtt v5 received unsuccessful PUBREC packets in the last minute |\n| [ vernemq_mqtt_pubrec_sent_reason_unsuccessful ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_pubrec_sent_by_reason_code | Node ${label:node} mqtt v5 unsuccessful sent PUBREC packets in the last minute |\n| [ vernemq_mqtt_pubrec_invalid_error ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_pubrec_invalid_error | Node ${label:node} mqtt v${label:mqtt_version} received invalid PUBREC packets in the last minute |\n| [ vernemq_mqtt_pubrel_received_reason_unsuccessful ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_pubrel_received_by_reason_code | Node ${label:node} mqtt v5 received unsuccessful PUBREL packets in the last minute |\n| [ vernemq_mqtt_pubrel_sent_reason_unsuccessful ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_pubrel_sent_by_reason_code | Node ${label:node} mqtt v5 unsuccessful sent PUBREL packets in the last minute |\n| [ vernemq_mqtt_pubcomp_received_reason_unsuccessful ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_pubcomp_received_by_reason_code | Node ${label:node} mqtt v5 received unsuccessful PUBCOMP packets in the last minute |\n| [ vernemq_mqtt_pubcomp_sent_reason_unsuccessful ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_pubcomp_sent_by_reason_code | Node ${label:node} mqtt v5 unsuccessful sent PUBCOMP packets in the last minute |\n| [ vernemq_mqtt_pubcomp_unexpected ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vernemq.conf) | vernemq.node_mqtt_pubcomp_invalid_error | Node ${label:node} mqtt v${label:mqtt_version} received unexpected PUBCOMP packets in the last minute |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per node\n\nThese metrics refer to the VerneMQ node.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | The value of this label is identical to the value of the "node" label exposed by VerneMQ. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| vernemq.node_socket | open | sockets |\n| vernemq.node_socket_operations | open, close | sockets/s |\n| vernemq.node_client_keepalive_expired | closed | sockets/s |\n| vernemq.node_socket_close_timeout | closed | sockets/s |\n| vernemq.node_socket_errors | errors | errors/s |\n| vernemq.node_queue_processes | queue_processes | queue processes |\n| vernemq.node_queue_processes_operations | setup, teardown | events/s |\n| vernemq.node_queue_process_init_from_storage | queue_processes | queue processes/s |\n| vernemq.node_queue_messages | received, sent | messages/s |\n| vernemq.node_queued_messages | queued | messages |\n| vernemq.node_queue_undelivered_messages | dropped, expired, unhandled | messages/s |\n| vernemq.node_router_subscriptions | subscriptions | subscriptions |\n| vernemq.node_router_matched_subscriptions | local, remote | subscriptions/s |\n| vernemq.node_router_memory | used | bytes |\n| vernemq.node_average_scheduler_utilization | utilization | percentage |\n| vernemq.node_system_processes | processes | processes |\n| vernemq.node_system_reductions | reductions | ops/s |\n| vernemq.node_system_context_switches | context_switches | ops/s |\n| vernemq.node_system_io | received, sent | bytes/s |\n| vernemq.node_system_run_queue | ready | processes |\n| vernemq.node_system_gc_count | gc | ops/s |\n| vernemq.node_system_gc_words_reclaimed | words_reclaimed | ops/s |\n| vernemq.node_system_allocated_memory | processes, system | bytes |\n| vernemq.node_traffic | received, sent | bytes/s |\n| vernemq.node_retain_messages | messages | messages |\n| vernemq.node_retain_memory | used | bytes |\n| vernemq.node_cluster_traffic | received, sent | bytes/s |\n| vernemq.node_cluster_dropped | dropped | bytes/s |\n| vernemq.node_netsplit_unresolved | unresolved | netsplits |\n| vernemq.node_netsplits | resolved, detected | netsplits/s |\n| vernemq.node_uptime | time | seconds |\n\n### Per mqtt\n\nThese metrics are specific to the used MQTT protocol version.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | The value of this label is identical to the value of the "node" label exposed by VerneMQ. |\n| mqtt_version | MQTT version. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| vernemq.node_mqtt_auth | received, sent | packets/s |\n| vernemq.node_mqtt_auth_received_by_reason_code | success, continue_authentication, reauthenticate | packets/s |\n| vernemq.node_mqtt_auth_sent_by_reason_code | success, continue_authentication, reauthenticate | packets/s |\n| vernemq.node_mqtt_connect | connect, connack | packets/s |\n| vernemq.node_mqtt_connack_sent_by_return_code | success, unsupported_protocol_version, client_identifier_not_valid, server_unavailable, bad_username_or_password, not_authorized | packets/s |\n| vernemq.node_mqtt_connack_sent_by_reason_code | success, unspecified_error, malformed_packet, protocol_error, impl_specific_error, unsupported_protocol_version, client_identifier_not_valid, bad_username_or_password, not_authorized, server_unavailable, server_busy, banned, bad_authentication_method, topic_name_invalid, packet_too_large, quota_exceeded, payload_format_invalid, retain_not_supported, qos_not_supported, use_another_server, server_moved, connection_rate_exceeded | packets/s |\n| vernemq.node_mqtt_disconnect | received, sent | packets/s |\n| vernemq.node_mqtt_disconnect_received_by_reason_code | normal_disconnect, disconnect_with_will_msg, unspecified_error, malformed_packet, protocol_error, impl_specific_error, topic_name_invalid, receive_max_exceeded, topic_alias_invalid, packet_too_large, message_rate_too_high, quota_exceeded, administrative_action, payload_format_invalid | packets/s |\n| node_mqtt_disconnect_sent_by_reason_code | normal_disconnect, unspecified_error, malformed_packet, protocol_error, impl_specific_error, not_authorized, server_busy, server_shutting_down, keep_alive_timeout, session_taken_over, topic_filter_invalid, topic_name_invalid, receive_max_exceeded, topic_alias_invalid, packet_too_large, message_rate_too_high, quota_exceeded, administrative_action, payload_format_invalid, retain_not_supported, qos_not_supported, use_another_server, server_moved, shared_subs_not_supported, connection_rate_exceeded, max_connect_time, subscription_ids_not_supported, wildcard_subs_not_supported | packets/s |\n| vernemq.node_mqtt_subscribe | subscribe, suback | packets/s |\n| vernemq.node_mqtt_subscribe_error | subscribe | errors/s |\n| vernemq.node_mqtt_subscribe_auth_error | subscribe_auth | errors/s |\n| vernemq.node_mqtt_unsubscribe | unsubscribe, unsuback | packets/s |\n| vernemq.node_mqtt_unsubscribe_error | unsubscribe | errors/s |\n| vernemq.node_mqtt_publish | received, sent | packets/s |\n| vernemq.node_mqtt_publish_errors | publish | errors/s |\n| vernemq.node_mqtt_publish_auth_errors | publish_auth | errors/s |\n| vernemq.node_mqtt_puback | received, sent | packets/s |\n| vernemq.node_mqtt_puback_received_by_reason_code | success, no_matching_subscribers, unspecified_error, impl_specific_error, not_authorized, topic_name_invalid, packet_id_in_use, quota_exceeded, payload_format_invalid | packets/s |\n| vernemq.node_mqtt_puback_sent_by_reason_code | success, no_matching_subscribers, unspecified_error, impl_specific_error, not_authorized, topic_name_invalid, packet_id_in_use, quota_exceeded, payload_format_invalid | packets/s |\n| vernemq.node_mqtt_puback_invalid_error | unexpected | messages/s |\n| vernemq.node_mqtt_pubrec | received, sent | packets/s |\n| vernemq.node_mqtt_pubrec_received_by_reason_code | success, no_matching_subscribers, unspecified_error, impl_specific_error, not_authorized, topic_name_invalid, packet_id_in_use, quota_exceeded, payload_format_invalid | packets/s |\n| vernemq.node_mqtt_pubrec_sent_by_reason_code | success, no_matching_subscribers, unspecified_error, impl_specific_error, not_authorized, topic_name_invalid, packet_id_in_use, quota_exceeded, payload_format_invalid | packets/s |\n| vernemq.node_mqtt_pubrec_invalid_error | unexpected | messages/s |\n| vernemq.node_mqtt_pubrel | received, sent | packets/s |\n| vernemq.node_mqtt_pubrel_received_by_reason_code | success, packet_id_not_found | packets/s |\n| vernemq.node_mqtt_pubrel_sent_by_reason_code | success, packet_id_not_found | packets/s |\n| vernemq.node_mqtt_pubcomp | received, sent | packets/s |\n| vernemq.node_mqtt_pubcomp_received_by_reason_code | success, packet_id_not_found | packets/s |\n| vernemq.node_mqtt_pubcomp_sent_by_reason_cod | success, packet_id_not_found | packets/s |\n| vernemq.node_mqtt_pubcomp_invalid_error | unexpected | messages/s |\n| vernemq.node_mqtt_ping | pingreq, pingresp | packets/s |\n\n',integration_type:"collector",id:"go.d.plugin-vernemq-VerneMQ",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/vernemq/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-vsphere",plugin_name:"go.d.plugin",module_name:"vsphere",monitored_instance:{name:"VMware vCenter Server",link:"https://www.vmware.com/products/vcenter-server.html",icon_filename:"vmware.svg",categories:["data-collection.containers-and-vms"]},keywords:["vmware","esxi","vcenter"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# VMware vCenter Server\n\nPlugin: go.d.plugin\nModule: vsphere\n\n## Overview\n\nMonitors vSphere resources from `vCenter` servers.\n\nIncludes hosts, VMs, datastores, clusters, resource pools,\nand inventory counts.\n\nUse the `vcsa` collector for vCenter Server Appliance health.\n\nUse the `snmp` collector with the `vmware-esx` profile for\nESXi hardware, HBA, and environment sensors.\n\nThose surfaces are intentionally not duplicated here by default.\n\n> **Warning**: The `vsphere` collector cannot re-login and continue collecting metrics after a vCenter reboot.\n> go.d.plugin needs to be restarted.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default `update_every` is 20 seconds, and it doesn't make sense to decrease the value.\n**VMware real-time statistics are generated at the 20-second specificity**.\n\n**Note**: Datastore and cluster performance metrics use 300-second (5-minute) historical intervals because VMware does not support real-time statistics for these entity types. Datastore capacity/status, cluster properties, and resource pool statistics are updated every collection cycle. Host and VM metrics use real-time 20-second intervals.\n\nIt is likely that 20 seconds is not enough for big installations and the value should be tuned.\n\nTo size a job, run the collector in debug mode and compare the discovery and collection timing lines. Discovery runs in a separate goroutine, while collection timing must stay comfortably below `update_every`.\n\nUseful log lines include:\n\n- `discovering : discovered ... the whole process took ...`\n- `scraping : scraped metrics for ... hosts, process took ...`\n- `scraping : scraped metrics for ... vms, process took ...`\n- `metrics collected, process took ...`\n\nAdjust `update_every` and `timeout` based on those timings and on the number of enabled optional surfaces.\n\n",setup:'## Setup\n\n\nYou can configure the **vsphere** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **vsphere**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/vsphere.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### vCenter read-only access\n\nConfigure a vCenter account that can read inventory objects, properties, and performance counters for the datacenters, clusters, ESXi hosts, VMs, datastores, and resource pools selected by the include filters.\n\n\n#### Optional vSphere metadata permissions\n\n`tag_categories` requires access to the vSphere Automation/CIS tagging APIs for the selected categories. `custom_attributes` requires access to custom field definitions and values for the selected inventory objects.\n\n\n#### Optional datastore cluster, vSAN, and network data\n\n`collect_datastore_clusters` requires read access to StoragePod objects. `collect_vsan` requires vSAN Management API access and the vSAN Performance Service on the target clusters. `collect_network_topology` requires read access to Network and Distributed Virtual Port Group inventory objects.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 20 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). | 60 | no |\n| **Target** | url | Target endpoint URL. | https://vcenter.local | yes |\n| | timeout | HTTP request timeout (seconds). | 20 | no |\n| **Discovery** | discovery_interval | Hosts, VMs, datastores, clusters, and resource pools discovery interval (seconds). | 300 | no |\n| **Labels** | [tag_categories](#option-labels-tag-categories) | vSphere tag category allowlist. | | no |\n| | [custom_attributes](#option-labels-custom-attributes) | vSphere custom attribute allowlist. | | no |\n| **High Cardinality** | [collect_datastore_clusters](#option-high-cardinality-collect-datastore-clusters) | Collect datastore cluster capacity and Storage DRS status. | no | no |\n| | [datastore_cluster_include](#option-high-cardinality-datastore-cluster-include) | Datastore cluster selector. | /* | no |\n| | [collect_vsan](#option-high-cardinality-collect-vsan) | Collect vSAN metrics. | no | no |\n| | [vsan_cluster_include](#option-high-cardinality-vsan-cluster-include) | vSAN cluster selector. | /* | no |\n| | [vsan_host_include](#option-high-cardinality-vsan-host-include) | vSAN host selector. | /* | no |\n| | [vsan_vm_include](#option-high-cardinality-vsan-vm-include) | vSAN VM selector. | /* | no |\n| **Collection** | [collect_network_topology](#option-collection-collect-network-topology) | Discover networks for the vSphere Topology function. | no | no |\n| **Filters** | [host_include](#option-filters-host-include) | Hosts selector (filter). | /* | no |\n| | [vm_include](#option-filters-vm-include) | VM selector (filter). | /* | no |\n| | [datastore_include](#option-filters-datastore-include) | Datastore selector (filter). | /* | no |\n| | [cluster_include](#option-filters-cluster-include) | Cluster selector (filter). Resource pools follow their owning cluster. | /* | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | yes |\n| | password | Password for Basic HTTP authentication. | | yes |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n<a id="option-labels-tag-categories"></a>\n##### tag_categories\n\nDisabled by default because vSphere tags are user-defined metadata\nand can expose internal names, ownership, business unit, or\nenvironment details. Each list item is one glob pattern matching\nvSphere tag category names, so names with spaces are supported.\nUse `*` only when every tag category is intentional.\n\nMatching categories are exposed as labels named\n`vsphere_tag_<sanitized_category>`. When a resource has multiple\ntags in the same category, values are sorted and joined with the\npipe character.\n\n```yaml\ntag_categories:\n - "Environment"\n - "Business Unit"\n```\n\n\n<a id="option-labels-custom-attributes"></a>\n##### custom_attributes\n\nDisabled by default because vSphere custom attributes are\nuser-defined metadata and can expose internal names, ownership,\nbusiness unit, operational data, or secrets stored by administrators.\nCustom attribute values are sent verbatim as labels. Each list\nitem is one glob pattern matching custom attribute names, so names\nwith spaces are supported. Use `*` only when every custom attribute\nis intentional and none of the matched values contain secrets.\n\nMatching attributes are exposed as labels named\n`vsphere_custom_attribute_<sanitized_name>`.\n\n```yaml\ncustom_attributes:\n - "Owner"\n - "Cost Center"\n```\n\n\n<a id="option-high-cardinality-collect-datastore-clusters"></a>\n##### collect_datastore_clusters\n\nDisabled by default because it adds a separate vSphere resource\nclass (`StoragePod`) to the collector output. When enabled, the\ncollector emits aggregate datastore-cluster capacity, utilization,\nand Storage DRS status.\n\n\n<a id="option-high-cardinality-datastore-cluster-include"></a>\n##### datastore_cluster_include\n\nApplies only when `collect_datastore_clusters` is enabled. Values\nuse Netdata simple patterns and match\n`/Datacenter/DatastoreCluster`, the datastore-cluster name, or\nthe vSphere managed object ID. Matching datastore clusters are\nincluded in metrics, labels, cached discovery state, and topology\nfunction output.\n\n```yaml\ndatastore_cluster_include:\n - "/*"\n```\n\n\n<a id="option-high-cardinality-collect-vsan"></a>\n##### collect_vsan\n\nDisabled by default because it uses the vSAN Management API and\nvSAN Performance Service, and adds extra vCenter queries. When\nenabled, it emits vSAN cluster capacity, vSAN cluster health, and\nvSAN cluster, host, and VM performance metrics for discovered\nvSAN-enabled clusters. Use the vSAN selectors below to choose the\nconcrete vSAN performance entity refs queried. vSAN events are\nnot collected by this option.\n\n\n<a id="option-high-cardinality-vsan-cluster-include"></a>\n##### vsan_cluster_include\n\nApplies only when `collect_vsan` is enabled. Values use Netdata\nsimple patterns and match `/Datacenter/Cluster`, the cluster\nname, the vSphere managed object ID, or `vsan_uuid:<uuid>`.\n\n```yaml\nvsan_cluster_include:\n - "/*"\n - "vsan_uuid:52b..."\n```\n\n\n<a id="option-high-cardinality-vsan-host-include"></a>\n##### vsan_host_include\n\nApplies only when `collect_vsan` is enabled. Values use Netdata\nsimple patterns and match `/Datacenter/Cluster/Host`, the host\nname, the vSphere managed object ID, or\n`vsan_node_uuid:<uuid>`.\n\n```yaml\nvsan_host_include:\n - "/*"\n - "vsan_node_uuid:52b..."\n```\n\n\n<a id="option-high-cardinality-vsan-vm-include"></a>\n##### vsan_vm_include\n\nApplies only when `collect_vsan` is enabled. Values use Netdata\nsimple patterns and match `/Datacenter/Cluster/Host/VM`, the VM\nname, the vSphere managed object ID, or\n`instance_uuid:<uuid>`.\n\n```yaml\nvsan_vm_include:\n - "/*"\n - "instance_uuid:52b..."\n```\n\n\n<a id="option-collection-collect-network-topology"></a>\n##### collect_network_topology\n\nDisabled by default to avoid extra vCenter discovery calls for\nexisting users. When enabled, the collector discovers vSphere\nNetwork and Distributed Virtual Port Group objects and includes\ntheir cached accessibility/status and host/VM relationships in\nthe vSphere Topology function. It does not create charts or\nmetrics.\n\n\n<a id="option-filters-host-include"></a>\n##### host_include\n\nMetrics of hosts matching the selector will be collected.\n\n- Include pattern syntax: "/Datacenter pattern/Cluster pattern/Host pattern".\n- Match pattern syntax: [simple patterns](https://github.com/netdata/netdata/blob/master/src/libnetdata/simple_pattern/README.md#simple-patterns).\n- Syntax:\n\n ```yaml\n host_include:\n - \'/DC1/*\' # all hosts from datacenter DC1\n - \'/DC2/*/!Host2 *\' # all hosts from datacenter DC2 except HOST2\n - \'/DC3/Cluster3/*\' # all hosts from DC3, cluster Cluster3\n ```\n\n\n<a id="option-filters-vm-include"></a>\n##### vm_include\n\nMetrics of VMs matching the selector will be collected.\n\n- Include pattern syntax: "/Datacenter pattern/Cluster pattern/Host pattern/VM pattern".\n- Match pattern syntax: [simple patterns](https://github.com/netdata/netdata/blob/master/src/libnetdata/simple_pattern/README.md#simple-patterns).\n- Syntax:\n\n ```yaml\n vm_include:\n - \'/DC1/*\' # all VMs from datacenter DC1\n - \'/DC2/*/*/!VM2 *\' # all VMs from DC2 except VM2\n - \'/DC3/Cluster3/*\' # all VMs from DC3, cluster Cluster3\n ```\n\n\n<a id="option-filters-datastore-include"></a>\n##### datastore_include\n\nMetrics of datastores matching the selector will be collected.\n\n- Include pattern syntax: "/Datacenter pattern/Datastore pattern".\n- Match pattern syntax: [simple patterns](https://github.com/netdata/netdata/blob/master/src/libnetdata/simple_pattern/README.md#simple-patterns).\n- Syntax:\n\n ```yaml\n datastore_include:\n - \'/DC1/*\' # all datastores from datacenter DC1\n - \'/DC2/!DS2 *\' # all datastores from DC2 except DS2\n ```\n\n\n<a id="option-filters-cluster-include"></a>\n##### cluster_include\n\nMetrics of clusters and their resource pools matching the selector will be collected.\n\n- Include pattern syntax: "/Datacenter pattern/Cluster pattern".\n- Match pattern syntax: [simple patterns](https://github.com/netdata/netdata/blob/master/src/libnetdata/simple_pattern/README.md#simple-patterns).\n- Syntax:\n\n ```yaml\n cluster_include:\n - \'/DC1/*\' # all clusters from datacenter DC1\n - \'/DC2/!Cluster2 *\' # all clusters from DC2 except Cluster2\n ```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **vsphere** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the vsphere data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _vsphere_ (or scroll the list) to locate the **vsphere** collector.\n5. Click the **+** next to the **vsphere** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/vsphere.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/vsphere.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name : vcenter1\n url : https://203.0.113.1\n username : admin@vsphere.local\n password : somepassword\n\n```\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name : vcenter1\n url : https://203.0.113.1\n username : admin@vsphere.local\n password : somepassword\n\n - name : vcenter2\n url : https://203.0.113.10\n username : admin@vsphere.local\n password : somepassword\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `vsphere` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m vsphere\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m vsphere -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `vsphere` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep vsphere\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep vsphere /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep vsphere\n```\n\n### Missing performance samples\n\nIf the logs show `vsphere:host-no-perf-samples` or `vsphere:vm-no-perf-samples`, verify that the configured account can read vCenter performance counters for the selected hosts and VMs, and that the entities are powered on when performance metrics are expected.\n\n\n### Periodic discovery errors\n\nIf the logs show `vsphere:periodic-discovery-error`, check vCenter reachability, account permissions for the enabled optional surfaces, and whether the configured `timeout` is large enough for the inventory size.\n\n\n### vCenter reboot recovery\n\nThe collector cannot always recover an existing session after a vCenter reboot. Restart `go.d.plugin` if collection does not resume after vCenter becomes available again.\n\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ vsphere_vm_cpu_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vsphere.conf) | vsphere.vm_cpu_utilization | Virtual Machine CPU utilization |\n| [ vsphere_vm_mem_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vsphere.conf) | vsphere.vm_mem_utilization | Virtual Machine memory utilization |\n| [ vsphere_vm_snapshot_chain_depth ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vsphere.conf) | vsphere.vm_snapshot_max_chain_depth | Virtual Machine snapshot maximum chain depth |\n| [ vsphere_vm_snapshot_age ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vsphere.conf) | vsphere.vm_snapshot_max_age | Virtual Machine oldest snapshot age |\n| [ vsphere_host_cpu_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vsphere.conf) | vsphere.host_cpu_utilization | ESXi Host CPU utilization |\n| [ vsphere_host_mem_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/vsphere.conf) | vsphere.host_mem_utilization | ESXi Host memory utilization |\n",functions:"## Live Data\n\nThis collector exposes read-only readiness and topology functions for interactive troubleshooting in the Live tab. Both functions require selecting a configured vSphere collector job.\n\n\n### vSphere Readiness\n\nReports the collector's current readiness from cached local state:\n\n- the selected vSphere collector job\n- whether the target URL and credentials are configured\n- whether the vSphere client, discovery cache, and performance-counter lists are initialized\n- discovered inventory counts\n- enabled or disabled optional metric, label, and vSAN groups\n- cached vSAN result counts when `collect_vsan` is enabled\n\nThe function does not expose the configured vCenter URL or credentials, and it does not issue extra vCenter API calls.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Vsphere:readiness` |\n| Require Cloud | yes |\n| Performance | Uses cached collector state only:<br/>\u2022 No additional vCenter or ESXi API requests are triggered<br/>\u2022 Response size is bounded by the number of configured optional groups and cached inventory summary rows |\n| Security | Does not expose the configured vCenter URL, username, password, or per-object inventory names:<br/>\u2022 Shows only configuration presence, resource counts, enabled feature flags, include pattern counts, and cached vSAN result counts<br/>\u2022 Access should still be restricted to authorized operators because it reveals enabled collection surfaces |\n| Availability | Available when:<br/>\u2022 The vSphere collector job is running<br/>\u2022 Returns not_ready rows while the collector is not initialized or discovery has not completed<br/>\u2022 Uses the last cached discovery and vSAN scrape state |\n\n#### Prerequisites\n\nNo additional configuration is required.\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Job | select | Select which configured vSphere collector job to inspect. | yes | | |\n\n#### Returns\n\nCollector readiness checks from cached local state. Each row represents one target, discovery, label, scope, metric, or vSAN readiness check.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| check | string | | | Stable readiness check identifier. |\n| scope | string | | | Area covered by the check, such as target, discovery, labels, scope, or metrics. |\n| status | string | | | Readiness status. Possible values are ok, warning, disabled, and not_ready. |\n| details | string | | | Human-readable explanation of the current cached state for the check. |\n\n### vSphere Topology\n\nReports cached vSphere inventory topology for datacenters, clusters, ESXi hosts, VMs, datastores, networks, datastore clusters, and resource pools.\n\nThe public topology function is `topology:vsphere`. The function builds actors and links from the selected job's cached discovery state. It does not issue extra vCenter API calls. vSphere Network and Distributed Virtual Port Group actors are included only when `collect_network_topology` is enabled.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Vsphere:topology:vsphere` |\n| Require Cloud | yes |\n| Performance | Uses cached collector state only:<br/>\u2022 No additional vCenter or ESXi API requests are triggered by the function<br/>\u2022 Response size grows with discovered inventory object count<br/>\u2022 `collect_network_topology` adds Network discovery during normal collector discovery cycles when enabled |\n| Security | Exposes discovered inventory object names and status attributes already visible through vSphere chart labels and metrics:<br/>\u2022 Does not expose the configured vCenter URL, username, or password |\n| Availability | Available when:<br/>\u2022 The vSphere collector job is running<br/>\u2022 Initial discovery has completed successfully<br/>\u2022 Returns HTTP 503 while topology data is not cached yet |\n\n#### Prerequisites\n\nNo additional configuration is required.\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Job | select | Select which configured vSphere collector job provides the cached topology. | yes | | |\n\n#### Returns\n\nCached vSphere inventory topology payload using the netdata.topology.v1 schema. Actors represent discovered inventory objects, links represent inventory ownership, VM-to-host runtime placement, and host/VM network attachment relationships, and overlays expose refreshable datastore utilization metrics.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| schema_version | string | | | Topology payload schema version. |\n| producer | object | | | Producer metadata identifying the vSphere topology source, selected collector job, plugin, and local node when available. |\n| collected_at | datetime | | | Time when the cached topology response was built. |\n| view | object | | | Topology view metadata. |\n| dictionaries | object | | | Compact-table dictionaries used by actors, links, evidence, and detail tables. |\n| types | object | | | Actor, link, evidence, table, and presentation type registry. |\n| presentation | object | | | Graph-level presentation metadata. |\n| actors | object | | | Compact actor table for vSphere inventory objects, including datacenters, clusters, ESXi hosts, VMs, datastores, optional networks, datastore clusters, and resource pools. |\n| links | object | | | Compact link table for relationships between vSphere inventory actors. |\n| evidence | object | | | Relationship evidence tables backing the rendered links. |\n| tables | object | | | Actor detail and label tables used by topology modals. |\n| overlays | object | | | Telemetry overlay refs for refreshable metrics, including datastore used-space utilization selected by collector job and vSphere managed object ID. |\n| stats | object | | | Counts of discovered inventory objects, actors, links, and overlay refs included in the response. |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per inventory\n\nThese metrics refer to the discovered vSphere inventory for this collector job.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| id | Static inventory instance ID |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| vsphere.inventory_objects | datacenters, folders, clusters, hosts, vms, datastores, resource_pools | objects |\n\n### Per virtual machine\n\nThese metrics refer to the Virtual Machine.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| id | vSphere managed object reference ID |\n| datacenter | Datacenter name |\n| cluster | Cluster name |\n| host | Host name |\n| vm | Virtual Machine name |\n| vsphere_tag_\\<category> | vSphere tag label; present only for categories matched by `tag_categories`; category names are sanitized for label keys and multiple tags in one category are sorted and joined with the pipe character |\n| vsphere_custom_attribute_\\<name> | vSphere custom attribute label; present only for attributes matched by `custom_attributes`; attribute names are sanitized for label keys |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| vsphere.vm_cpu_utilization | used | percentage |\n| vsphere.vm_mem_utilization | used | percentage |\n| vsphere.vm_mem_usage | granted, consumed, active, shared | KiB |\n| vsphere.vm_mem_swap_usage | swapped | KiB |\n| vsphere.vm_mem_swap_io | in, out | KiB/s |\n| vsphere.vm_disk_io | read, write | KiB/s |\n| vsphere.vm_disk_max_latency | latency | milliseconds |\n| vsphere.vm_net_traffic | received, sent | KiB/s |\n| vsphere.vm_net_packets | received, sent | packets |\n| vsphere.vm_net_drops | received, sent | drops |\n| vsphere.vm_overall_status | green, red, yellow, gray | status |\n| vsphere.vm_power_state | powered_on, powered_off, suspended | status |\n| vsphere.vm_connection_state | connected, disconnected, orphaned, inaccessible, invalid | status |\n| vsphere.vm_tools_running_status | running, not_running, executing_scripts, unknown | status |\n| vsphere.vm_tools_version_status | current, need_upgrade, not_installed, unmanaged, too_old, supported_old, supported_new, too_new, blacklisted, unknown | status |\n| vsphere.vm_consolidation_needed | needed, not_needed | status |\n| vsphere.vm_system_uptime | uptime | seconds |\n| vsphere.vm_config_cpu | vcpus | vCPUs |\n| vsphere.vm_config_memory | memory | MiB |\n| vsphere.vm_config_devices | disks, nics | devices |\n| vsphere.vm_storage_usage | committed, uncommitted, unshared | bytes |\n| vsphere.vm_snapshot_count | count | snapshots |\n| vsphere.vm_snapshot_max_age | age | seconds |\n| vsphere.vm_snapshot_max_chain_depth | depth | snapshots |\n\n### Per virtual machine power\n\nThese aggregate metrics refer to VM power and energy and are collected for discovered powered-on VMs when vSphere exposes the corresponding power counters.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| id | vSphere managed object reference ID of the VM |\n| datacenter | Datacenter name |\n| cluster | Cluster name |\n| host | Host name |\n| vm | Virtual Machine name |\n| vsphere_tag_\\<category> | vSphere tag label; present only for categories matched by `tag_categories`; category names are sanitized for label keys and multiple tags in one category are sorted and joined with the pipe character |\n| vsphere_custom_attribute_\\<name> | vSphere custom attribute label; present only for attributes matched by `custom_attributes`; attribute names are sanitized for label keys |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| vsphere.vm_power_usage | power | watts |\n| vsphere.vm_energy_usage | energy | joules |\n\n### Per vSAN virtual machine\n\nThese optional metrics refer to VM vSAN performance and are collected only when `collect_vsan` is enabled.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| id | vSphere managed object reference ID of the VM |\n| datacenter | Datacenter name |\n| cluster | Cluster name |\n| host | Host name |\n| vm | Virtual Machine name |\n| vm_instance_uuid | VM instance UUID used by vSAN performance entity references |\n| vsphere_tag_\\<category> | vSphere tag label; present only for categories matched by `tag_categories`; category names are sanitized for label keys and multiple tags in one category are sorted and joined with the pipe character |\n| vsphere_custom_attribute_\\<name> | vSphere custom attribute label; present only for attributes matched by `custom_attributes`; attribute names are sanitized for label keys |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| vsphere.vsan_vm_operations | read, write | operations/s |\n| vsphere.vsan_vm_throughput | read, write | bytes/s |\n| vsphere.vsan_vm_latency | read, write | microseconds |\n\n### Per host power\n\nThese aggregate metrics refer to ESXi host power, energy, and power capacity and are collected for discovered powered-on hosts when vSphere exposes the corresponding power counters.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| id | vSphere managed object reference ID of the host |\n| datacenter | Datacenter name |\n| cluster | Cluster name |\n| host | Host name |\n| vsphere_tag_\\<category> | vSphere tag label; present only for categories matched by `tag_categories`; category names are sanitized for label keys and multiple tags in one category are sorted and joined with the pipe character |\n| vsphere_custom_attribute_\\<name> | vSphere custom attribute label; present only for attributes matched by `custom_attributes`; attribute names are sanitized for label keys |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| vsphere.host_power_usage | power, cap | watts |\n| vsphere.host_power_capacity_usage | used, usable, idle, system, vm | watts |\n| vsphere.host_power_capacity_utilization | used | percentage |\n| vsphere.host_energy_usage | energy | joules |\n\n### Per vSAN host\n\nThese optional metrics refer to ESXi host vSAN performance and are collected only when `collect_vsan` is enabled.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| id | vSphere managed object reference ID of the host |\n| datacenter | Datacenter name |\n| cluster | Cluster name |\n| host | Host name |\n| vsan_node_uuid | vSAN host node UUID used by vSAN performance entity references |\n| vsphere_tag_\\<category> | vSphere tag label; present only for categories matched by `tag_categories`; category names are sanitized for label keys and multiple tags in one category are sorted and joined with the pipe character |\n| vsphere_custom_attribute_\\<name> | vSphere custom attribute label; present only for attributes matched by `custom_attributes`; attribute names are sanitized for label keys |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| vsphere.vsan_host_operations | read, write | operations/s |\n| vsphere.vsan_host_throughput | read, write | bytes/s |\n| vsphere.vsan_host_latency | read, write | microseconds |\n| vsphere.vsan_host_congestions | congestions | congestions/s |\n| vsphere.vsan_host_cache_hit_rate | hit_rate | percentage |\n\n### Per host\n\nThese metrics refer to the ESXi host.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| id | vSphere managed object reference ID |\n| datacenter | Datacenter name |\n| cluster | Cluster name |\n| host | Host name |\n| vsphere_tag_\\<category> | vSphere tag label; present only for categories matched by `tag_categories`; category names are sanitized for label keys and multiple tags in one category are sorted and joined with the pipe character |\n| vsphere_custom_attribute_\\<name> | vSphere custom attribute label; present only for attributes matched by `custom_attributes`; attribute names are sanitized for label keys |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| vsphere.host_cpu_utilization | used | percentage |\n| vsphere.host_mem_utilization | used | percentage |\n| vsphere.host_mem_usage | granted, consumed, active, shared, sharedcommon | KiB |\n| vsphere.host_mem_swap_io | in, out | KiB/s |\n| vsphere.host_disk_io | read, write | KiB/s |\n| vsphere.host_disk_max_latency | latency | milliseconds |\n| vsphere.host_net_traffic | received, sent | KiB/s |\n| vsphere.host_net_packets | received, sent | packets |\n| vsphere.host_net_drops | received, sent | drops |\n| vsphere.host_net_errors | received, sent | errors |\n| vsphere.host_overall_status | green, red, yellow, gray | status |\n| vsphere.host_power_state | powered_on, powered_off, standby, unknown | status |\n| vsphere.host_connection_state | connected, not_responding, disconnected | status |\n| vsphere.host_maintenance_status | normal, in_maintenance | status |\n| vsphere.host_system_uptime | uptime | seconds |\n\n### Per datastore\n\nThese metrics refer to the Datastore.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| id | vSphere managed object reference ID |\n| datacenter | Datacenter name |\n| datastore | Datastore name |\n| type | Datastore type (VMFS, NFS, NFS41, vsan, VVOL, PMEM) |\n| vsphere_tag_\\<category> | vSphere tag label; present only for categories matched by `tag_categories`; category names are sanitized for label keys and multiple tags in one category are sorted and joined with the pipe character |\n| vsphere_custom_attribute_\\<name> | vSphere custom attribute label; present only for attributes matched by `custom_attributes`; attribute names are sanitized for label keys |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| vsphere.datastore_disk_io | read, write | KiB/s |\n| vsphere.datastore_disk_iops | reads, writes | operations/s |\n| vsphere.datastore_disk_latency | read, write | milliseconds |\n| vsphere.datastore_space_utilization | used | percentage |\n| vsphere.datastore_space_usage | capacity, free, used, uncommitted | bytes |\n| vsphere.datastore_overall_status | green, red, yellow, gray | status |\n| vsphere.datastore_accessibility_status | accessible, inaccessible | status |\n| vsphere.datastore_maintenance_status | normal, entering_maintenance, in_maintenance, unknown | status |\n| vsphere.datastore_multiple_host_access | enabled, disabled, unknown | status |\n\n### Per datastore cluster\n\nThese optional metrics refer to datastore clusters (StoragePod objects) and are collected only when `collect_datastore_clusters` is enabled.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| id | vSphere managed object reference ID |\n| datacenter | Datacenter name |\n| datastore_cluster | Datastore cluster name |\n| vsphere_tag_\\<category> | vSphere tag label; present only for categories matched by `tag_categories`; category names are sanitized for label keys and multiple tags in one category are sorted and joined with the pipe character |\n| vsphere_custom_attribute_\\<name> | vSphere custom attribute label; present only for attributes matched by `custom_attributes`; attribute names are sanitized for label keys |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| vsphere.datastore_cluster_space_utilization | used | percentage |\n| vsphere.datastore_cluster_space_usage | capacity, free, used | bytes |\n| vsphere.datastore_cluster_storage_drs_status | enabled, disabled | status |\n| vsphere.datastore_cluster_overall_status | green, red, yellow, gray | status |\n\n### Per vSAN cluster\n\nThese optional metrics refer to vSAN cluster capacity, health, and performance and are collected only when `collect_vsan` is enabled.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| id | vSphere managed object reference ID of the cluster |\n| datacenter | Datacenter name |\n| cluster | Cluster name |\n| vsan_uuid | vSAN cluster UUID used by vSAN performance entity references |\n| vsphere_tag_\\<category> | vSphere tag label; present only for categories matched by `tag_categories`; category names are sanitized for label keys and multiple tags in one category are sorted and joined with the pipe character |\n| vsphere_custom_attribute_\\<name> | vSphere custom attribute label; present only for attributes matched by `custom_attributes`; attribute names are sanitized for label keys |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| vsphere.vsan_cluster_space_usage | used, free, total | bytes |\n| vsphere.vsan_cluster_space_utilization | used | percentage |\n| vsphere.vsan_cluster_health_status | green, yellow, red, unknown | status |\n| vsphere.vsan_cluster_operations | read, write | operations/s |\n| vsphere.vsan_cluster_throughput | read, write | bytes/s |\n| vsphere.vsan_cluster_latency | read, write | microseconds |\n| vsphere.vsan_cluster_congestions | congestions | congestions/s |\n\n### Per cluster\n\nThese metrics refer to the vSphere Cluster.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| id | vSphere managed object reference ID |\n| datacenter | Datacenter name |\n| cluster | Cluster name |\n| vsphere_tag_\\<category> | vSphere tag label; present only for categories matched by `tag_categories`; category names are sanitized for label keys and multiple tags in one category are sorted and joined with the pipe character |\n| vsphere_custom_attribute_\\<name> | vSphere custom attribute label; present only for attributes matched by `custom_attributes`; attribute names are sanitized for label keys |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| vsphere.cluster_hosts | total, effective | hosts |\n| vsphere.cluster_cpu_capacity | total, effective | MHz |\n| vsphere.cluster_mem_capacity | total, effective | bytes |\n| vsphere.cluster_cpu_topology | cores, threads | count |\n| vsphere.cluster_drs_config | enabled | status |\n| vsphere.cluster_drs_mode | manual, partially_automated, fully_automated, unknown | status |\n| vsphere.cluster_drs_vmotion_rate | rate | level |\n| vsphere.cluster_ha_config | enabled, admission_control | status |\n| vsphere.cluster_ha_host_monitoring | enabled, disabled, unknown | status |\n| vsphere.cluster_ha_vm_monitoring | disabled, vm_monitoring_only, vm_and_app_monitoring, unknown | status |\n| vsphere.cluster_ha_vm_component_protection | enabled, disabled, unknown | status |\n| vsphere.cluster_overall_status | green, red, yellow, gray | status |\n| vsphere.cluster_vmotions | vmotions | migrations |\n| vsphere.cluster_drs_score | score | percentage |\n| vsphere.cluster_drs_balance | current, target | score |\n| vsphere.cluster_vm_count | total, powered_off | VMs |\n| vsphere.cluster_usage_cpu | demand, entitled, reserved | MHz |\n| vsphere.cluster_usage_mem | demand, entitled, reserved | MB |\n| vsphere.cluster_cpu_utilization | used | percentage |\n| vsphere.cluster_cpu_usage | used, total | MHz |\n| vsphere.cluster_mem_utilization | used | percentage |\n| vsphere.cluster_mem_usage | consumed, active, granted, shared, overhead, swap_used | KiB |\n| vsphere.cluster_services_fairness | cpu, memory | score |\n| vsphere.cluster_services_effective_cpu | effective_cpu | MHz |\n| vsphere.cluster_services_effective_mem | effective_mem | MB |\n| vsphere.cluster_services_failover | failures_tolerable | failures |\n| vsphere.cluster_vm_migrations | vmotion, svmotion, xvmotion | operations |\n| vsphere.cluster_vm_lifecycle | poweron, poweroff, create, destroy, clone, deploy | operations |\n| vsphere.cluster_vm_management | reconfigure, reset, suspend, register, unregister | operations |\n| vsphere.cluster_vm_guest_ops | reboot, shutdown, standby | operations |\n| vsphere.cluster_vm_cold_migrations | change_ds, change_host, change_host_ds | operations |\n\n### Per resource pool\n\nThese metrics refer to the vSphere Resource Pool.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| id | vSphere managed object reference ID |\n| datacenter | Datacenter name |\n| cluster | Cluster name |\n| resource_pool | Resource Pool name |\n| vsphere_tag_\\<category> | vSphere tag label; present only for categories matched by `tag_categories`; category names are sanitized for label keys and multiple tags in one category are sorted and joined with the pipe character |\n| vsphere_custom_attribute_\\<name> | vSphere custom attribute label; present only for attributes matched by `custom_attributes`; attribute names are sanitized for label keys |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| vsphere.resource_pool_cpu_usage | usage, demand | MHz |\n| vsphere.resource_pool_cpu_entitlement | distributed | MHz |\n| vsphere.resource_pool_cpu_allocation | reservation_used, unreserved_for_vm, max_usage | MHz |\n| vsphere.resource_pool_mem_usage | host, guest | MB |\n| vsphere.resource_pool_mem_entitlement | distributed | MB |\n| vsphere.resource_pool_mem_allocation | reservation_used, unreserved_for_vm, max_usage | bytes |\n| vsphere.resource_pool_mem_breakdown | private, shared, swapped, ballooned, overhead, consumed_overhead, compressed | MB |\n| vsphere.resource_pool_cpu_config | reservation, limit | MHz |\n| vsphere.resource_pool_mem_config | reservation, limit | MB |\n| vsphere.resource_pool_overall_status | green, red, yellow, gray | status |\n\n",integration_type:"collector",id:"go.d.plugin-vsphere-VMware_vCenter_Server",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/vsphere/metadata.yaml",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"w1sensor",monitored_instance:{name:"1-Wire Sensors",link:"https://www.analog.com/en/product-category/1wire-temperature-sensors.html",categories:["data-collection.hardware-and-sensors"],icon_filename:"1-wire.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["temperature","sensor","1-wire"]},overview:"# 1-Wire Sensors\n\nPlugin: go.d.plugin\nModule: w1sensor\n\n## Overview\n\nMonitor 1-Wire Sensors metrics with Netdata for optimal environmental conditions monitoring. Enhance your environmental monitoring with real-time insights and alerts.\n\n\nThe collector uses the wire, w1_gpio, and w1_therm kernel modules. Currently temperature sensors are supported and automatically detected.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector will try to auto detect available 1-Wire devices.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **w1sensor** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **w1sensor**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/w1sensor.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Required Linux kernel modules\n\nMake sure `wire`, `w1_gpio`, and `w1_therm` kernel modules are loaded.\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 1 | no |\n| sensors_path | Directory path containing sensor folders with w1_slave files. | /sys/bus/w1/devices | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **w1sensor** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the w1sensor data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _w1sensor_ (or scroll the list) to locate the **w1sensor** collector.\n5. Click the **+** next to the **w1sensor** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/w1sensor.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/w1sensor.conf\n```\n\n##### Examples\n\n###### Custom sensor device path\n\nMonitors a virtual sensor when the w1_slave file is located in a custom directory instead of the default location.\n\n```yaml\njobs:\n - name: custom_sensors_path\n sensors_path: /custom/path/devices\n\n```\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `w1sensor` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m w1sensor\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m w1sensor -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `w1sensor` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep w1sensor\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep w1sensor /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep w1sensor\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per sensor\n\nThese metrics refer to the 1-Wire Sensor.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| w1sensor.temperature | temperature | Celsius |\n\n",integration_type:"collector",id:"go.d.plugin-w1sensor-1-Wire_Sensors",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/w1sensor/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-web_log",plugin_name:"go.d.plugin",module_name:"web_log",monitored_instance:{name:"Web server log files",link:"",categories:["data-collection.web-servers-and-proxies"],icon_filename:"webservers.svg"},keywords:["webserver","apache","httpd","nginx","lighttpd","logs"],info_provided_to_referring_integrations:{description:""},related_resources:{integrations:{list:[]}}},overview:"# Web server log files\n\nPlugin: go.d.plugin\nModule: web_log\n\n## Overview\n\nThis collector monitors web servers by parsing their log files.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nIt automatically detects log files of web servers running on localhost.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **web_log** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **web_log**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/web_log.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nWeblog is aware of how to parse and interpret the following fields (**known fields**):\n\n> [nginx](https://nginx.org/en/docs/varindex.html)\n>\n> [apache](https://httpd.apache.org/docs/current/mod/mod_log_config.html)\n\n| nginx | apache | description |\n|-------------------------|----------|------------------------------------------------------------------------------------------|\n| $host ($http_host) | %v | Name of the server which accepted a request. |\n| $server_port | %p | Port of the server which accepted a request. |\n| $scheme | - | Request scheme. "http" or "https". |\n| $remote_addr | %a (%h) | Client address. |\n| $request | %r | Full original request line. The line is "$request_method $request_uri $server_protocol". |\n| $request_method | %m | Request method. Usually "GET" or "POST". |\n| $request_uri | %U | Full original request URI. |\n| $server_protocol | %H | Request protocol. Usually "HTTP/1.0", "HTTP/1.1", or "HTTP/2.0". |\n| $status | %s (%>s) | Response status code. |\n| $request_length | %I | Bytes received from a client, including request and headers. |\n| $bytes_sent | %O | Bytes sent to a client, including request and headers. |\n| $body_bytes_sent | %B (%b) | Bytes sent to a client, not counting the response header. |\n| $request_time | %D | Request processing time. |\n| $upstream_response_time | - | Time spent on receiving the response from the upstream server. |\n| $ssl_protocol | - | Protocol of an established SSL connection. |\n| $ssl_cipher | - | String of ciphers used for an established SSL connection. |\n\nNotes:\n\n- Apache `%h` logs the IP address if [HostnameLookups](https://httpd.apache.org/docs/2.4/mod/core.html#hostnamelookups) is Off. The web log collector counts hostnames as IPv4 addresses. We recommend either to disable HostnameLookups or use `%a` instead of `%h`.\n- Since httpd 2.0, unlike 1.3, the `%b` and `%B` format strings do not represent the number of bytes sent to the client, but simply the size in bytes of the HTTP response. It will differ, for instance, if the connection is aborted, or if SSL is used. The `%O` format provided by [`mod_logio`](https://httpd.apache.org/docs/2.4/mod/mod_logio.html) will log the actual number of bytes sent over the network.\n- To get `%I` and `%O` working you need to enable `mod_logio` on Apache.\n- NGINX logs URI with query parameters, Apache doesnt.\n- `$request` is parsed into `$request_method`, `$request_uri` and `$server_protocol`. If you have `$request` in your log format, there is no sense to have others.\n- Don\'t use both `$bytes_sent` and `$body_bytes_sent` (`%O` and `%B` or `%b`). The module does not distinguish between these parameters.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection frequency. | 1 | no |\n| | autodetection_retry | Recheck interval in seconds. Zero means no recheck will be scheduled. | 0 | no |\n| **Target** | path | Path to the web server log file. | | yes |\n| | exclude_path | Path to exclude. | *.gz | no |\n| **Customization** | [url_patterns](#option-customization-url-patterns) | List of URL patterns. | [] | no |\n| | url_patterns.name | Used as a dimension name. | | yes |\n| | url_patterns.match | Used to match against full original request URI. Match syntax in [matcher](https://github.com/netdata/netdata/blob/master/src/go/pkg/matcher/README.md#supported-format). | | yes |\n| **Parser** | [log_type](#option-parser-log-type) | Log parser type. | auto | no |\n| | csv_config | CSV log parser config. | | no |\n| | csv_config.delimiter | CSV field delimiter. | , | no |\n| | csv_config.format | CSV log format. | | no |\n| | ltsv_config | LTSV log parser config. | | no |\n| | ltsv_config.field_delimiter | LTSV field delimiter. | \\t | no |\n| | ltsv_config.value_delimiter | LTSV value delimiter. | : | no |\n| | [ltsv_config.mapping](#option-parser-ltsv-config-mapping) | LTSV fields mapping to **known fields**. | | yes |\n| | json_config | JSON log parser config. | | no |\n| | [json_config.mapping](#option-parser-json-config-mapping) | JSON fields mapping to **known fields**. | | yes |\n| | regexp_config | RegExp log parser config. | | no |\n| | [regexp_config.pattern](#option-parser-regexp-config-pattern) | RegExp pattern with named groups. | | yes |\n\n<a id="option-customization-url-patterns"></a>\n##### url_patterns\n\n"URL pattern" scope metrics will be collected for each URL pattern.\n\nOption syntax:\n\n```yaml\nurl_patterns:\n - name: name1\n match: pattern1\n - name: name2\n match: pattern2\n```\n\nExamples:\n\n```yaml\nurl_patterns:\n - name: api\n match: \'* /api/*\'\n - name: api_versioned\n match: \'~ ^/api/v[0-9]+/.*\'\n - name: health_endpoint\n match: \'= /health\'\n - name: not_static_css\n match: \'!* *.css\'\n```\n\nPattern values use the [matcher library](https://github.com/netdata/netdata/blob/master/src/go/pkg/matcher/README.md#supported-format) syntax:\n\n- `=` \u2014 string (exact match)\n- `*` \u2014 glob patterns\n- `~` \u2014 regular expressions\n- `!` \u2014 negates either short syntax (`!* ...`) or long syntax (`!simple_patterns:...`)\n- `simple_patterns` \u2014 simple patterns (long syntax only)\n\nPatterns are matched against the full original request URI (`$request_uri`).\n\n\n<a id="option-parser-log-type"></a>\n##### log_type\n\nWeblog supports 5 different log parsers:\n\n| Parser type | Description |\n|-------------|-------------------------------------------|\n| auto | Use CSV and auto-detect format |\n| csv | A comma-separated values |\n| json | [JSON](https://www.json.org/json-en.html) |\n| ltsv | [LTSV](http://ltsv.org/) |\n| regexp | Regular expression with named groups |\n\nSyntax:\n\n```yaml\nlog_type: auto\n```\n\nIf `log_type` parameter set to `auto` (which is default), weblog will try to auto-detect appropriate log parser and log format using the last line of the log file.\n\n- checks if format is `CSV` (using regexp).\n- checks if format is `JSON` (using regexp).\n- assumes format is `CSV` and tries to find appropriate `CSV` log format using predefined list of formats. It tries to parse the line using each of them in the following order (the first one matches is used later):\n\n ```sh\n $host:$server_port $remote_addr - - [$time_local] "$request" $status $body_bytes_sent - - $request_length $request_time $upstream_response_time\n $host:$server_port $remote_addr - - [$time_local] "$request" $status $body_bytes_sent - - $request_length $request_time\n $host:$server_port $remote_addr - - [$time_local] "$request" $status $body_bytes_sent $request_length $request_time $upstream_response_time\n $host:$server_port $remote_addr - - [$time_local] "$request" $status $body_bytes_sent $request_length $request_time\n $host:$server_port $remote_addr - - [$time_local] "$request" $status $body_bytes_sent\n $remote_addr - - [$time_local] "$request" $status $body_bytes_sent - - $request_length $request_time $upstream_response_time\n $remote_addr - - [$time_local] "$request" $status $body_bytes_sent - - $request_length $request_time\n $remote_addr - - [$time_local] "$request" $status $body_bytes_sent $request_length $request_time $upstream_response_time\n $remote_addr - - [$time_local] "$request" $status $body_bytes_sent $request_length $request_time\n $remote_addr - - [$time_local] "$request" $status $body_bytes_sent\n ```\n\n If you\'re using the default Apache/NGINX log format, auto-detect will work for you. If it doesn\'t work you need to set the format manually.\n\n\n<a id="option-parser-ltsv-config-mapping"></a>\n##### ltsv_config.mapping\n\nThe mapping is a dictionary where the key is a field, as in logs, and the value is the corresponding **known field**.\n\n> **Note**: don\'t use `$` and `%` prefixes for mapped field names.\n\n```yaml\nlog_type: ltsv\nltsv_config:\n mapping:\n label1: field1\n label2: field2\n```\n\n\n<a id="option-parser-json-config-mapping"></a>\n##### json_config.mapping\n\nThe mapping is a dictionary where the key is a field, as in logs, and the value is the corresponding **known field**.\n\n> **Note**: don\'t use `$` and `%` prefixes for mapped field names.\n\n```yaml\nlog_type: json\njson_config:\n mapping:\n label1: field1\n label2: field2\n```\n\n\n<a id="option-parser-regexp-config-pattern"></a>\n##### regexp_config.pattern\n\nUse pattern with subexpressions names. These names should be **known fields**.\n\n> **Note**: don\'t use `$` and `%` prefixes for mapped field names.\n\nSyntax:\n\n```yaml\nlog_type: regexp\nregexp_config:\n pattern: PATTERN\n```\n\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **web_log** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the web_log data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _web_log_ (or scroll the list) to locate the **web_log** collector.\n5. Click the **+** next to the **web_log** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/web_log.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/web_log.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `web_log` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m web_log\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m web_log -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `web_log` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep web_log\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep web_log /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep web_log\n```\n\n### High percentage of unparsed log lines (web_log_1m_unmatched alert)\n\nThis alert indicates that more than 1% of log lines could not be parsed by the web_log collector over the last minute.\n\n**Common causes:**\n- Custom log format not matching any of the predefined formats\n- Log format has changed on the web server\n- Using a non-standard log format without proper configuration\n\n**Diagnostic steps:**\n\n1. Run the collector in debug mode to see unparsed lines:\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n sudo -u netdata -s\n ./go.d.plugin -d -m web_log\n ```\n\n2. Check the debug output for lines marked as unmatched to understand what format they have.\n\n**Resolution:**\n\n- If using a custom log format, configure `log_type` and the appropriate parser config:\n - For CSV formats: set `log_type: csv` and configure `csv_config.format` to match your log format\n - For custom patterns: set `log_type: regexp` and configure `regexp_config.pattern` with a regex containing named groups matching the known fields\n - For JSON logs: set `log_type: json` and configure `json_config.mapping`\n - For LTSV logs: set `log_type: ltsv` and configure `ltsv_config.mapping`\n\n\n### Unmatched lines due to non-standard log fields or extra columns\n\nPersistent unmatched entries appear even with auto-detection enabled.\n\n**Cause:**\nThe log format includes fields not in the known-fields list (for example, custom headers, upstream timing, or unique IDs), preventing CSV auto-detection from matching any predefined format.\n\n**Resolution:**\nSet `log_type: csv` explicitly and specify `csv_config.format` using the known field variables that match the log's column order. Alternatively, use `log_type: regexp` with a `regexp_config.pattern` that captures only the known fields and ignores extras.\n\n\n### Suppressing the alert for known benign unmatched lines\n\nThe web_log_1m_unmatched alert fires continuously but the unmatched lines are intentional (for example, health check logs in a different format).\n\n**Resolution:**\nCustomize the alert threshold in `health.d/web_log.conf` by copying the web_log_1m_unmatched template and adjusting the warn condition, or silence notifications via Netdata Cloud alert configuration.\n\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ web_log_1m_unmatched ](https://github.com/netdata/netdata/blob/master/src/health/health.d/web_log.conf) | web_log.excluded_requests | percentage of unparsed log lines over the last minute |\n| [ web_log_1m_requests ](https://github.com/netdata/netdata/blob/master/src/health/health.d/web_log.conf) | web_log.type_requests | ratio of successful HTTP requests over the last minute (1xx, 2xx, 304, 401) |\n| [ web_log_1m_redirects ](https://github.com/netdata/netdata/blob/master/src/health/health.d/web_log.conf) | web_log.type_requests | ratio of redirection HTTP requests over the last minute (3xx except 304) |\n| [ web_log_1m_bad_requests ](https://github.com/netdata/netdata/blob/master/src/health/health.d/web_log.conf) | web_log.type_requests | ratio of client error HTTP requests over the last minute (4xx except 401) |\n| [ web_log_1m_internal_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/web_log.conf) | web_log.type_requests | ratio of server error HTTP requests over the last minute (5xx) |\n| [ web_log_web_slow ](https://github.com/netdata/netdata/blob/master/src/health/health.d/web_log.conf) | web_log.request_processing_time | average HTTP response time over the last 1 minute |\n| [ web_log_5m_requests_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/web_log.conf) | web_log.type_requests | ratio of successful HTTP requests over over the last 5 minutes, compared with the previous 5 minutes |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Web server log files instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| web_log.requests | requests | requests/s |\n| web_log.excluded_requests | unmatched | requests/s |\n| web_log.type_requests | success, bad, redirect, error | requests/s |\n| web_log.status_code_class_responses | 1xx, 2xx, 3xx, 4xx, 5xx | responses/s |\n| web_log.status_code_class_1xx_responses | a dimension per 1xx code | responses/s |\n| web_log.status_code_class_2xx_responses | a dimension per 2xx code | responses/s |\n| web_log.status_code_class_3xx_responses | a dimension per 3xx code | responses/s |\n| web_log.status_code_class_4xx_responses | a dimension per 4xx code | responses/s |\n| web_log.status_code_class_5xx_responses | a dimension per 5xx code | responses/s |\n| web_log.bandwidth | received, sent | kilobits/s |\n| web_log.request_processing_time | min, max, avg | milliseconds |\n| web_log.requests_processing_time_histogram | a dimension per bucket | requests/s |\n| web_log.upstream_response_time | min, max, avg | milliseconds |\n| web_log.upstream_responses_time_histogram | a dimension per bucket | requests/s |\n| web_log.current_poll_uniq_clients | ipv4, ipv6 | clients |\n| web_log.vhost_requests | a dimension per vhost | requests/s |\n| web_log.port_requests | a dimension per port | requests/s |\n| web_log.scheme_requests | http, https | requests/s |\n| web_log.http_method_requests | a dimension per HTTP method | requests/s |\n| web_log.http_version_requests | a dimension per HTTP version | requests/s |\n| web_log.ip_proto_requests | ipv4, ipv6 | requests/s |\n| web_log.ssl_proto_requests | a dimension per SSL protocol | requests/s |\n| web_log.ssl_cipher_suite_requests | a dimension per SSL cipher suite | requests/s |\n| web_log.url_pattern_requests | a dimension per URL pattern | requests/s |\n| web_log.custom_field_pattern_requests | a dimension per custom field pattern | requests/s |\n\n### Per custom time field\n\nTBD\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| web_log.custom_time_field_summary | min, max, avg | milliseconds |\n| web_log.custom_time_field_histogram | a dimension per bucket | observations |\n\n### Per custom numeric field\n\nTBD\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| web_log.custom_numeric_field_{{field_name}}_summary | min, max, avg | {{units}} |\n\n### Per URL pattern\n\nTBD\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| web_log.url_pattern_status_code_responses | a dimension per pattern | responses/s |\n| web_log.url_pattern_http_method_requests | a dimension per HTTP method | requests/s |\n| web_log.url_pattern_bandwidth | received, sent | kilobits/s |\n| web_log.url_pattern_request_processing_time | min, max, avg | milliseconds |\n\n",integration_type:"collector",id:"go.d.plugin-web_log-Web_server_log_files",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/weblog/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-whoisquery",plugin_name:"go.d.plugin",module_name:"whoisquery",monitored_instance:{name:"Domain expiration date",link:"",icon_filename:"globe.svg",categories:["data-collection.synthetic-testing"]},keywords:["whois"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Domain expiration date\n\nPlugin: go.d.plugin\nModule: whoisquery\n\n## Overview\n\nThis collector monitors the remaining time before the domain expires.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **whoisquery** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **whoisquery**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/whoisquery.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection frequency. | 60 | no |\n| | autodetection_retry | Recheck interval in seconds. Zero means no recheck will be scheduled. | 0 | no |\n| **Target** | source | Domain address. | | yes |\n| | timeout | The query timeout in seconds. | 5 | no |\n| **Customization** | days_until_expiration_warning | Number of days before the alarm status is warning. | 30 | no |\n| | days_until_expiration_critical | Number of days before the alarm status is critical. | 15 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **whoisquery** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the whoisquery data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _whoisquery_ (or scroll the list) to locate the **whoisquery** collector.\n5. Click the **+** next to the **whoisquery** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/whoisquery.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/whoisquery.conf\n```\n\n##### Examples\n\n###### Basic\n\nBasic configuration example\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: my_site\n source: my_site.com\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define more than one job, their names must be unique.\n\nCheck the expiration status of the multiple domains.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: my_site1\n source: my_site1.com\n\n - name: my_site2\n source: my_site2.com\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `whoisquery` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m whoisquery\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m whoisquery -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `whoisquery` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep whoisquery\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep whoisquery /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep whoisquery\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ whoisquery_days_until_expiration ](https://github.com/netdata/netdata/blob/master/src/health/health.d/whoisquery.conf) | whoisquery.time_until_expiration | time until the domain name registration expires |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per domain\n\nThese metrics refer to the configured source.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| domain | Configured source |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| whoisquery.time_until_expiration | expiry | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-whoisquery-Domain_expiration_date",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/whoisquery/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-wireguard",plugin_name:"go.d.plugin",module_name:"wireguard",monitored_instance:{name:"WireGuard",link:"https://www.wireguard.com/",categories:["data-collection.networking"],icon_filename:"wireguard.svg"},keywords:["wireguard","vpn","security"],info_provided_to_referring_integrations:{description:""},related_resources:{integrations:{list:[]}}},overview:"# WireGuard\n\nPlugin: go.d.plugin\nModule: wireguard\n\n## Overview\n\nThis collector monitors WireGuard VPN devices and peers traffic.\n\n\nIt connects to the local WireGuard instance using [wireguard-go client](https://github.com/WireGuard/wireguard-go).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThis collector requires the CAP_NET_ADMIN capability, but it is set automatically during installation, so no manual configuration is needed.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nIt automatically detects instances running on localhost.\n\n\n#### Limits\n\nDoesn't work if Netdata or WireGuard is installed in the container.\n\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **wireguard** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **wireguard**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/wireguard.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 1 | no |\n| autodetection_retry | Recheck interval in seconds. Zero means no recheck will be scheduled. | 0 | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **wireguard** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the wireguard data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _wireguard_ (or scroll the list) to locate the **wireguard** collector.\n5. Click the **+** next to the **wireguard** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/wireguard.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/wireguard.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `wireguard` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m wireguard\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m wireguard -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `wireguard` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep wireguard\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep wireguard /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep wireguard\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per device\n\nThese metrics refer to the VPN network interface.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device | VPN network interface |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| wireguard.device_network_io | receive, transmit | B/s |\n| wireguard.device_peers | peers | peers |\n\n### Per peer\n\nThese metrics refer to the VPN peer.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device | VPN network interface |\n| public_key | Public key of a peer |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| wireguard.peer_network_io | receive, transmit | B/s |\n| wireguard.peer_latest_handshake_ago | time | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-wireguard-WireGuard",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/wireguard/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-x509check",plugin_name:"go.d.plugin",module_name:"x509check",monitored_instance:{name:"X.509 certificate",link:"",categories:["data-collection.synthetic-testing"],icon_filename:"lock.svg"},keywords:["x509","certificate"],info_provided_to_referring_integrations:{description:""},related_resources:{integrations:{list:[]}}},overview:"# X.509 certificate\n\nPlugin: go.d.plugin\nModule: x509check\n\n## Overview\n\n\n\nThis collectors monitors x509 certificates expiration time and revocation status.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **x509check** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **x509check**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/x509check.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | source | Certificate source. Allowed schemes: https, tcp, tcp4, tcp6, udp, udp4, udp6, file, smtp. | | no |\n| | timeout | SSL connection timeout (seconds). | 2 | no |\n| **Validation** | check_full_chain | Monitor expiration time for all certificates in the chain (including intermediates and root). | no | no |\n| | check_revocation_status | Check the revocation status of the certificate. | no | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **x509check** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the x509check data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _x509check_ (or scroll the list) to locate the **x509check** collector.\n5. Click the **+** next to the **x509check** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/x509check.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/x509check.conf\n```\n\n##### Examples\n\n###### Website certificate\n\nWebsite certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: my_site_cert\n source: https://my_site.org:443\n\n```\n{% /details %}\n###### Local file certificate\n\nLocal file certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: my_file_cert\n source: file:///home/me/cert.pem\n\n```\n{% /details %}\n###### SMTP certificate\n\nSMTP certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: my_smtp_cert\n source: smtp://smtp.my_mail.org:587\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define more than one job, their names must be unique.\n\nCheck the expiration status of the multiple websites\' certificates.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: my_site_cert1\n source: https://my_site1.org:443\n\n - name: my_site_cert2\n source: https://my_site1.org:443\n\n - name: my_site_cert3\n source: https://my_site3.org:443\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `x509check` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m x509check\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m x509check -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `x509check` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep x509check\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep x509check /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep x509check\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ x509check_days_until_expiration ](https://github.com/netdata/netdata/blob/master/src/health/health.d/x509check.conf) | x509check.time_until_expiration | SSL cert expiring soon (${label:source} cn:${label:common_name}) |\n| [ x509check_revocation_status ](https://github.com/netdata/netdata/blob/master/src/health/health.d/x509check.conf) | x509check.revocation_status | SSL cert revoked (${label:source}) |\n",metrics:'## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per source\n\nThese metrics refer to the SSL certificate.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| source | Same as the "source" configuration option. |\n| common_name | The common name (CN) extracted from the certificate. |\n| depth | The depth of the certificate within the certificate chain. The leaf certificate has a depth of 0, and subsequent certificates (intermediate certificates) have increasing depth values. The root certificate is at the highest depth. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| x509check.time_until_expiration | expiry | seconds |\n| x509check.revocation_status | not_revoked, revoked | boolean |\n\n',integration_type:"collector",id:"go.d.plugin-x509check-X.509_certificate",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/x509check/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-yugabytedb",plugin_name:"go.d.plugin",module_name:"yugabytedb",monitored_instance:{name:"YugabyteDB",link:"https://www.yugabyte.com/yugabytedb",categories:["data-collection.databases"],icon_filename:"yugabytedb.svg"},related_resources:{integrations:{list:[]}},alternative_monitored_instances:[],info_provided_to_referring_integrations:{description:""},keywords:["db","database","yb","yugabyte"]},overview:"# YugabyteDB\n\nPlugin: go.d.plugin\nModule: yugabytedb\n\n## Overview\n\nThis collector monitors the activity and performance of YugabyteDB servers.\n\n\nIt sends HTTP requests to the YugabyteDB [metric endpoints](https://docs.yugabyte.com/preview/launch-and-manage/monitor-and-alert/metrics/#metric-endpoints).\n\nIt also provides `top-queries` and `running-queries` functions using `pg_stat_statements` and `pg_stat_activity` from YSQL.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe `top-queries` function requires the `pg_stat_statements` extension to be installed in the target database.\n\nViewing all running queries via `pg_stat_activity` may require elevated privileges (e.g., `pg_read_all_stats`).\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects YugabyteDB instances running on localhost.\nOn startup, it tries to collect metrics from:\n\n- http://127.0.0.1:7000/prometheus-metrics (Master)\n- http://127.0.0.1:9000/prometheus-metrics (Tablet Server)\n- http://127.0.0.1:12000/prometheus-metrics (YCQL)\n- http://127.0.0.1:13000/prometheus-metrics (YSQL)\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **yugabytedb** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **yugabytedb**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/yugabytedb.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 5 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | url | Target endpoint URL. | http://127.0.0.1:7000/prometheus-metrics | yes |\n| | timeout | HTTP request timeout (seconds). | 1 | no |\n| **HTTP Auth** | username | Username for Basic HTTP authentication. | | no |\n| | password | Password for Basic HTTP authentication. | | no |\n| | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no |\n| **TLS** | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Proxy** | proxy_url | HTTP proxy URL. | | no |\n| | proxy_username | Username for proxy Basic HTTP authentication. | | no |\n| | proxy_password | Password for proxy Basic HTTP authentication. | | no |\n| **Request** | method | HTTP method to use. | GET | no |\n| | body | Request body (e.g., for POST/PUT). | | no |\n| | headers | Additional HTTP headers (one per line as key: value). | | no |\n| | not_follow_redirects | Do not follow HTTP redirects. | no | no |\n| | force_http2 | Force HTTP/2 (including h2c over TCP). | no | no |\n| **Functions** | functions.dsn | SQL DSN (required for query functions). | | no |\n| | functions.top_queries.disabled | Disable the [top-queries](#top-queries) function. | no | no |\n| | functions.top_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.top_queries.limit | Maximum number of queries to return. | 500 | no |\n| | functions.running_queries.disabled | Disable the [running-queries](#running-queries) function. | no | no |\n| | functions.running_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no |\n| | functions.running_queries.limit | Maximum number of queries to return. | 500 | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **yugabytedb** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the yugabytedb data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _yugabytedb_ (or scroll the list) to locate the **yugabytedb** collector.\n5. Click the **+** next to the **yugabytedb** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/yugabytedb.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/yugabytedb.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration.\n\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:7000/prometheus-metrics # Master\n # url: http://127.0.0.1:9000/prometheus-metrics # Tablet Server\n # url: http://127.0.0.1:12000/prometheus-metrics # YCQL\n # url: http://127.0.0.1:13000/prometheus-metrics # YSQL\n\n```\n###### Top queries\n\nEnable SQL query functions (YSQL).\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:7000/prometheus-metrics\n functions:\n dsn: postgres://yugabyte@127.0.0.1:5433/yugabyte?sslmode=disable\n\n```\n{% /details %}\n###### HTTP authentication\n\nBasic HTTP authentication.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:7000/prometheus-metrics\n username: username\n password: password\n\n```\n{% /details %}\n###### HTTPS with self-signed certificate\n\nNGINX with enabled HTTPS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: https://127.0.0.1:7000/prometheus-metrics\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n url: http://127.0.0.1:7000/prometheus-metrics\n\n - name: remote\n url: http://192.0.2.1:7000/prometheus-metrics\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `yugabytedb` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m yugabytedb\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m yugabytedb -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `yugabytedb` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep yugabytedb\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep yugabytedb /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep yugabytedb\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",functions:"## Live Data\n\nThis collector exposes real-time functions for interactive troubleshooting in the Live tab.\n\n\n### Top Queries\n\nRetrieves aggregated query statistics from the PostgreSQL-compatible [pg_stat_statements](https://docs.yugabyte.com/preview/explore/query-1-performance/pg-stat-statements/) extension in YSQL.\n\nThis function queries the `pg_stat_statements` view which tracks execution statistics for all SQL statements executed on the YSQL layer. It provides timing metrics, execution counts, and row statistics for each unique query pattern.\n\nUse cases:\n- Identify slow queries consuming excessive total execution time\n- Find high-frequency queries that may benefit from optimization\n- Analyze query patterns by database and user\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Yugabytedb:top-queries` |\n| Require Cloud | yes |\n| Performance | Queries the `pg_stat_statements` view via YSQL connection:<br/>\u2022 Default limit of 500 rows balances completeness with performance<br/>\u2022 Use `sql_timeout` to prevent long-running queries |\n| Security | Query text may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Personal information in WHERE clauses or INSERT values<br/>\u2022 Business data embedded in queries<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to YSQL<br/>\u2022 The `pg_stat_statements` extension is installed<br/>\u2022 Returns HTTP 503 if the SQL connection cannot be established or extension is not installed<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Enable pg_stat_statements extension\n\nThe `pg_stat_statements` extension must be installed in the target YSQL database.\n\n1. Install the extension:\n\n ```sql\n CREATE EXTENSION IF NOT EXISTS pg_stat_statements;\n ```\n\n2. Verify access:\n\n ```sql\n SELECT * FROM pg_stat_statements LIMIT 1;\n ```\n\n:::info\n\n- The extension tracks statistics for all SQL statements executed\n- Statistics can be reset with `SELECT pg_stat_statements_reset()`\n- YugabyteDB uses PostgreSQL-compatible extensions\n\n:::\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. Options include total time, mean time, max time, calls, and rows. Defaults to total time to focus on most resource-intensive queries. | yes | totalTime | |\n\n#### Returns\n\nAggregated query statistics from `pg_stat_statements`. Each row represents a unique query pattern with cumulative metrics across all executions.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| Query ID | string | | hidden | Internal hash identifier for the normalized query pattern. |\n| Query | string | | | Normalized SQL query text with literals replaced by parameter placeholders. Truncated to 4096 characters. |\n| Database | string | | | Database name where the query was executed. Useful for multi-database workload analysis. |\n| User | string | | | YSQL user who executed the query. Useful for identifying workload by user or application. |\n| Calls | integer | | | Total number of times this query pattern has been executed. High values indicate frequently run queries. |\n| Total Time | duration | milliseconds | | Cumulative execution time across all calls. Primary metric for identifying resource-intensive queries. |\n| Mean Time | duration | milliseconds | | Average execution time per call. Compare with total time to distinguish slow queries from frequently called ones. |\n| Min Time | duration | milliseconds | hidden | Minimum execution time observed for this query pattern. |\n| Max Time | duration | milliseconds | hidden | Maximum execution time observed. Large gaps between min and max may indicate parameter sensitivity or lock contention. |\n| Rows | integer | | | Total number of rows retrieved or affected by the query across all executions. |\n| Stddev Time | duration | milliseconds | hidden | Standard deviation of execution times. High values indicate inconsistent query performance. |\n\n### Running Queries\n\nRetrieves currently executing statements from the PostgreSQL-compatible [pg_stat_activity](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW) view in YSQL.\n\nThis function queries `pg_stat_activity` to show all non-idle backend processes with their current query, state, and timing information. It excludes idle connections to focus on active workload.\n\nUse cases:\n- Identify long-running queries that may need investigation\n- Monitor active connections and their current state\n- Investigate blocked or waiting queries\n\nQuery text is truncated at 4096 characters for display purposes.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Yugabytedb:running-queries` |\n| Require Cloud | yes |\n| Performance | Queries the `pg_stat_activity` view via YSQL connection:<br/>\u2022 Returns only non-idle connections to reduce result size<br/>\u2022 Default limit of 500 rows balances completeness with performance<br/>\u2022 Use `sql_timeout` to prevent long-running queries |\n| Security | Query text may contain unmasked literal values including potentially sensitive data:<br/>\u2022 Personal information in WHERE clauses or INSERT values<br/>\u2022 Business data embedded in queries<br/>\u2022 Access should be restricted to authorized personnel only |\n| Availability | Available when:<br/>\u2022 The collector has successfully connected to YSQL<br/>\u2022 Returns HTTP 503 if the SQL connection cannot be established<br/>\u2022 Returns HTTP 500 if the query fails<br/>\u2022 Returns HTTP 504 if the query times out |\n\n#### Prerequisites\n\n##### Grant access to all queries (optional)\n\nBy default, users can only see their own queries in `pg_stat_activity`. To view all users' queries, grant the `pg_read_all_stats` role:\n\n```sql\nGRANT pg_read_all_stats TO your_user;\n```\n\n:::info\n\n- The `yugabyte` superuser can see all queries by default\n- Without elevated privileges, only the user's own queries are visible\n- Idle connections are filtered out from results\n\n:::\n\n\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Filter By | select | Select the primary sort column. Defaults to elapsed time to focus on longest-running queries. | yes | elapsedMs | |\n\n#### Returns\n\nCurrently running SQL statements from `pg_stat_activity`. Each row represents an active backend process with its current query and execution context.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| PID | string | | hidden | Backend process ID. Can be used with pg_terminate_backend() to cancel a query. |\n| Query | string | | | The SQL statement currently being executed. Truncated to 4096 characters. |\n| Database | string | | | Database name the backend is connected to. |\n| User | string | | | YSQL user name of the backend process. |\n| State | string | | | Current state of the backend (active, idle in transaction, fastpath function call, etc.). |\n| Wait Event Type | string | | hidden | Type of event the backend is waiting for (Lock, LWLock, IO, etc.). Null if not waiting. |\n| Wait Event | string | | hidden | Specific wait event name. Useful for diagnosing lock contention or I/O bottlenecks. |\n| Application | string | | hidden | Application name set by the client connection. Useful for identifying which application is running the query. |\n| Client Address | string | | hidden | IP address of the client connection. |\n| Query Start | string | | hidden | Timestamp when the current query began execution. |\n| Elapsed | duration | milliseconds | | Time elapsed since the query started. High values indicate long-running queries that may need investigation. |\n\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Master Client operations (Master)\n\nMetrics tracking latency and counts of Master Client RPC operations.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| operation | The specific MasterClient RPC operation name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| yugabytedb.master_client_operations | operations | ops/s |\n| yugabytedb.master_client_operations_latency | latency | microseconds |\n\n### Per Master DDL operations\n\nMetrics tracking Data Definition Language (DDL) operations performed on the Master server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| operation | The specific DDL operation handler name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| yugabytedb.master_ddl_operations | operations | ops/s |\n| yugabytedb.master_ddl_operations_latency | latency | microseconds |\n\n### Per TabletServerService (Master)\n\nMetrics tracking latency and counts of TabletServer RPC operations on the Master server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| op | The specific TabletServer RPC operation name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| yugabytedb.master_tabletserverservice_operations | operations | ops/s |\n| yugabytedb.master_tabletserverservice_operations_latency | latency | microseconds |\n| yugabytedb.master_tabletserverservice_traffic | received, sent | bytes/s |\n\n### Per PgClientService (Master)\n\nMetrics tracking latency and counts of PostgreSQL client service RPC operations on the Master server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| operation | The specific PgClientService RPC operation name that handles PostgreSQL protocol requests and responses. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| yugabytedb.master_pgclientservice_operations | operations | ops/s |\n| yugabytedb.master_pgclientservice_operations_latency | latency | microseconds |\n| yugabytedb.master_pgclientservice_traffic | received, sent | bytes/s |\n\n### Per RemoteBootstrapService (Master)\n\nMetrics tracking latency and counts of RemoteBootstrap RPC operations on the Master server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| operation | The specific RemoteBootstrap RPC operation name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| yugabytedb.master_remotebootstrapservice_operations | operations | ops/s |\n| yugabytedb.master_remotebootstrapservice_operations_latency | latency | microseconds |\n| yugabytedb.master_remotebootstrapservice_traffic | received, sent | bytes/s |\n\n### Per Raft operations (Master)\n\nMetrics tracking latency and counts of Raft consensus protocol operations on the Master server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| operation | The specific Raft protocol operation name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| yugabytedb.master_consensus_operations | operations | ops/s |\n| yugabytedb.master_consensus_operations_latency | latency | microseconds |\n| yugabytedb.master_consensus_traffic | received, sent | bytes/s |\n\n### Per TabletServerService (Tablet Server)\n\nMetrics tracking latency and counts of TabletServer RPC operations on the Tablet server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| op | The specific TabletServer RPC operation name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| yugabytedb.tserver_tabletserverservice_operations | operations | ops/s |\n| yugabytedb.tserver_tabletserverservice_operations_latency | latency | microseconds |\n| yugabytedb.tserver_tabletserverservice_traffic | received, sent | bytes/s |\n\n### Per TabletServerAdminService (Tablet Server)\n\nMetrics tracking latency and counts of TabletServerAdmin RPC operations on the Tablet server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| op | The specific TabletServerAdmin RPC operation name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| yugabytedb.tserver_tabletserveradminservice_operations | operations | ops/s |\n| yugabytedb.tserver_tabletserveradminservice_operations_latency | latency | microseconds |\n| yugabytedb.tserver_tabletserveradminservice_traffic | received, sent | bytes/s |\n\n### Per TabletServerBackupService (Tablet Server)\n\nMetrics tracking latency and counts of TabletServerBackup RPC operations on the Tablet server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| op | The specific TabletServerBackup RPC operation name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| yugabytedb.tserver_tabletserverbackupservice_operations | operations | ops/s |\n| yugabytedb.tserver_tabletserverbackupservice_operations_latency | latency | microseconds |\n| yugabytedb.tserver_tabletserverbackupservice_traffic | received, sent | bytes/s |\n\n### Per PgClientService (Tablet Server)\n\nMetrics tracking latency and counts of PostgreSQL client service RPC operations on the Tablet server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| operation | The specific PgClientService RPC operation name that handles PostgreSQL protocol requests and responses. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| yugabytedb.tserver_pgclientservice_operations | operations | ops/s |\n| yugabytedb.tserver_pgclientservice_operations_latency | latency | microseconds |\n| yugabytedb.tserver_pgclientservice_traffic | received, sent | bytes/s |\n\n### Per RemoteBootstrapService (Tablet Server)\n\nMetrics tracking latency and counts of RemoteBootstrap RPC operations on the Tablet server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| operation | The specific RemoteBootstrap RPC operation name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| yugabytedb.tserver_remotebootstrapservice_operations | operations | ops/s |\n| yugabytedb.tserver_remotebootstrapservice_operations_latency | latency | microseconds |\n| yugabytedb.tserver_remotebootstrapservice_traffic | received, sent | bytes/s |\n\n### Per Raft operations (Tablet Server)\n\nMetrics tracking latency and counts of Raft consensus protocol operations on the Tablet server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| operation | The specific Raft protocol operation name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| yugabytedb.tserver_consensus_operations | operations | ops/s |\n| yugabytedb.tserver_consensus_operations_latency | latency | microseconds |\n| yugabytedb.tserver_consensus_traffic | received, sent | bytes/s |\n\n### Per SQL Statements (YCQL)\n\nMetrics tracking latency and counts of SQL statements on the YCQL server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| statement | The specific SQL statement name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| yugabytedb.ycql_sql_statements | statements | statements/s |\n| yugabytedb.yCql_sql_statements_latency | latency | microseconds |\n\n### Per YSQL server\n\nMetrics tracking connections on the YSQL server.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| yugabytedb.ysql_connection_usage | available, used | connections |\n| yugabytedb.ysql_active_connections | active | connections |\n| yugabytedb.ysql_established_connections | established | connections/s |\n| yugabytedb.ysql_over_limit_connections | over_limit | rejects/s |\n\n### Per SQL Statements (YSQL)\n\nMetrics tracking latency and counts of SQL statements on the YSQL server.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| statement | The specific SQL statement name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| yugabytedb.ysql_sql_statements | statements | statements/s |\n| yugabytedb.ysql_sql_statements_latency | latency | microseconds |\n\n",integration_type:"collector",id:"go.d.plugin-yugabytedb-YugabyteDB",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/yugabytedb/metadata.yaml",related_resources:""},{meta:{id:"collector-go.d.plugin-zfspool",plugin_name:"go.d.plugin",module_name:"zfspool",monitored_instance:{name:"ZFS Pools",link:"",icon_filename:"filesystem.svg",categories:["data-collection.storage"]},keywords:["zfs pools","pools","zfs","filesystem"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# ZFS Pools\n\nPlugin: go.d.plugin\nModule: zfspool\n\n## Overview\n\nThis collector monitors the health and space usage of ZFS pools using the command line tool [zpool](https://openzfs.github.io/openzfs-docs/man/master/8/zpool-list.8.html).\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n- BSD\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\nYou can configure the **zfspool** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **zfspool**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/zfspool.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 10 | no |\n| binary_path | Path to the `zpool` binary. If an absolute path is provided, the collector will use it directly; otherwise, it will search for the binary in directories specified in the PATH environment variable. | /usr/bin/zpool | yes |\n| timeout | Timeout for executing the binary, specified in seconds. | 2 | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **zfspool** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the zfspool data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _zfspool_ (or scroll the list) to locate the **zfspool** collector.\n5. Click the **+** next to the **zfspool** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/zfspool.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/zfspool.conf\n```\n\n##### Examples\n\n###### Custom binary path\n\nThe executable is not in the directories specified in the PATH environment variable.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: zfspool\n binary_path: /usr/local/sbin/zpool\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `zfspool` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m zfspool\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m zfspool -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `zfspool` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep zfspool\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep zfspool /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep zfspool\n```\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ zfs_pool_space_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/zfs.conf) | zfspool.pool_space_utilization | ZFS pool ${label:pool} is nearing capacity. Current space usage is above the threshold. |\n| [ zfs_pool_health_state_warn ](https://github.com/netdata/netdata/blob/master/src/health/health.d/zfs.conf) | zfspool.pool_health_state | ZFS pool ${label:pool} state is degraded |\n| [ zfs_pool_health_state_crit ](https://github.com/netdata/netdata/blob/master/src/health/health.d/zfs.conf) | zfspool.pool_health_state | ZFS pool ${label:pool} state is faulted or unavail |\n| [ zfs_vdev_health_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/zfs.conf) | zfspool.vdev_health_state | ZFS vdev ${label:vdev} state is faulted or degraded |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per zfs pool\n\nThese metrics refer to the ZFS pool.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| pool | Zpool name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| zfspool.pool_space_utilization | utilization | % |\n| zfspool.pool_space_usage | free, used | bytes |\n| zfspool.pool_fragmentation | fragmentation | % |\n| zfspool.pool_health_state | online, degraded, faulted, offline, unavail, removed, suspended | state |\n\n### Per zfs pool vdev\n\nThese metrics refer to the ZFS pool virtual device.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| pool | Zpool name |\n| vdev | Unique identifier for a virtual device (vdev) within a ZFS pool. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| zfspool.vdev_health_state | online, degraded, faulted, offline, unavail, removed, suspended | state |\n\n",integration_type:"collector",id:"go.d.plugin-zfspool-ZFS_Pools",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/zfspool/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-go.d.plugin-zookeeper",plugin_name:"go.d.plugin",module_name:"zookeeper",monitored_instance:{name:"ZooKeeper",link:"https://zookeeper.apache.org/",categories:["data-collection.applications"],icon_filename:"zookeeper.svg"},keywords:["zookeeper"],info_provided_to_referring_integrations:{description:""},related_resources:{integrations:{list:[{plugin_name:"apps.plugin",module_name:"apps"}]}}},overview:'# ZooKeeper\n\nPlugin: go.d.plugin\nModule: zookeeper\n\n## Overview\n\n\n\nIt connects to the Zookeeper instance via a TCP and executes the following commands:\n\n- [mntr](https://zookeeper.apache.org/doc/r3.4.8/zookeeperAdmin.html#sc_zkCommands).\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\nZooKeeper can be monitored further using the following other integrations:\n\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nBy default, it detects instances running on localhost by attempting to connect using known ZooKeeper TCP sockets:\n\n- 127.0.0.1:2181\n- 127.0.0.1:2182\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\nYou can configure the **zookeeper** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **zookeeper**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/zookeeper.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### Whitelist `mntr` command\n\nAdd `mntr` to Zookeeper\'s [4lw.commands.whitelist](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_4lw).\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined globally: update_every, autodetection_retry.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Data collection interval (seconds). | 1 | no |\n| | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no |\n| **Target** | address | Zookeeper server address (`IP:PORT`). | 127.0.0.1:2181 | yes |\n| | timeout | Connection, read, write, and TLS handshake timeout (seconds). | 1 | no |\n| **TLS** | use_tls | Enable TLS for the connection. | no | no |\n| | tls_skip_verify | Skip TLS certificate and hostname verification (insecure). | no | no |\n| | tls_ca | Path to CA bundle used to validate the server certificate. | | no |\n| | tls_cert | Path to client TLS certificate (for mTLS). | | no |\n| | tls_key | Path to client TLS private key (for mTLS). | | no |\n| **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |\n\n\n{% /details %}\n\n#### via UI\n\nConfigure the **zookeeper** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the zookeeper data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _zookeeper_ (or scroll the list) to locate the **zookeeper** collector.\n5. Click the **+** next to the **zookeeper** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/zookeeper.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/zookeeper.conf\n```\n\n##### Examples\n\n###### Basic\n\nLocal server.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:2181\n\n```\n{% /details %}\n###### TLS with self-signed certificate\n\nZookeeper with TLS and self-signed certificate.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:2181\n use_tls: yes\n tls_skip_verify: yes\n\n```\n{% /details %}\n###### Multi-instance\n\n> **Note**: When you define multiple jobs, their names must be unique.\n\nCollecting metrics from local and remote instances.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n address: 127.0.0.1:2181\n\n - name: remote\n address: 192.0.2.1:2181\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.\n\nTo troubleshoot issues with the `zookeeper` collector, run the `go.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `go.d.plugin` to debug the collector:\n\n ```bash\n ./go.d.plugin -d -m zookeeper\n ```\n\n To debug a specific job:\n\n ```bash\n ./go.d.plugin -d -m zookeeper -j jobName\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `zookeeper` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep zookeeper\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep zookeeper /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep zookeeper\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per ZooKeeper server\n\nThese metrics refer to ZooKeeper servers.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| zookeeper.requests | outstanding | requests |\n| zookeeper.requests_latency | min, avg, max | ms |\n| zookeeper.stale_requests | stale | requests/s |\n| zookeeper.stale_requests_dropped | dropped | requests/s |\n| zookeeper.connections | alive | connections |\n| zookeeper.connections_dropped | dropped | connections/s |\n| zookeeper.connections_rejected | rejected | connections/s |\n| zookeeper.auth_fails | auth | fails/s |\n| zookeeper.global_sessions | global | sessions |\n| zookeeper.server_state | leader, follower, observer, standalone | state |\n| zookeeper.throttled_ops | throttled | ops/s |\n| zookeeper.packets | received, sent | pps |\n| zookeeper.file_descriptor | open | file descriptors |\n| zookeeper.nodes | znode, ephemerals | nodes |\n| zookeeper.watches | watches | watches |\n| zookeeper.approximate_data_size | size | KiB |\n| zookeeper.uptime | uptime | seconds |\n\n",integration_type:"collector",id:"go.d.plugin-zookeeper-ZooKeeper",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/zookeeper/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"guides",module_name:"proxmox",monitored_instance:{name:"Proxmox VE Monitoring",link:"https://www.proxmox.com/",icon_filename:"proxmox.png",categories:["data-collection.containers-and-vms"]},keywords:["proxmox","proxmox ve","pve","kvm","qemu","lxc","virtualization","hypervisor","virtual machines","containers","ceph","zfs","corosync","cluster"],related_resources:{integrations:{list:[{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Proxmox VMs and Containers"},{plugin_name:"cgroups.plugin",module_name:"/sys/fs/cgroup",monitored_instance_name:"Systemd Services"},{plugin_name:"apps.plugin",module_name:"apps",monitored_instance_name:"Applications"},{plugin_name:"go.d.plugin",module_name:"zfspool"},{plugin_name:"go.d.plugin",module_name:"ceph"},{plugin_name:"go.d.plugin",module_name:"smartctl"},{plugin_name:"go.d.plugin",module_name:"sensors"},{plugin_name:"proc.plugin",module_name:"/proc/net/dev"},{plugin_name:"proc.plugin",module_name:"/proc/diskstats"},{plugin_name:"proc.plugin",module_name:"/proc/stat"},{plugin_name:"proc.plugin",module_name:"/proc/meminfo"},{plugin_name:"proc.plugin",module_name:"/proc/spl/kstat/zfs/arcstats"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# Proxmox VE Monitoring\n\nPlugin: guides\nModule: proxmox\n\n## Overview\n\nThis guide describes how Netdata monitors Proxmox VE hypervisors. Netdata provides comprehensive, zero-configuration monitoring of Proxmox hosts, including per-VM and per-container resource utilization, host system metrics, storage health, and cluster components.\n\nWhen installed on a Proxmox host, Netdata automatically discovers and monitors all KVM/QEMU virtual machines and LXC containers through Linux cgroups, resolving friendly names for each VM and container.\n\n\nNetdata uses multiple collectors working together to provide full Proxmox visibility:\n\n- **cgroups.plugin** monitors per-VM and per-container CPU, memory, disk I/O, and network via Linux cgroups. It automatically resolves VM names from `/etc/pve/qemu-server/<VMID>.conf` and container hostnames from `/etc/pve/lxc/<CTID>.conf`.\n- **proc.plugin** monitors host-level system metrics (CPU, memory, network interfaces, disk I/O).\n- **apps.plugin** monitors Proxmox-specific process groups (`proxmox-ve`, `libvirt`, `qemu-guest-agent`).\n- **go.d/zfspool** monitors ZFS pool health, space utilization, and fragmentation (ZFS is common on Proxmox).\n- **go.d/ceph** monitors Ceph cluster health and performance (for Proxmox clusters using Ceph storage).\n- **go.d/smartctl** monitors physical disk SMART health data.\n- **go.d/sensors** monitors hardware temperature, fan speed, and voltage.\n- **ebpf.plugin** provides kernel-level visibility into VM/container syscalls, file I/O, and network activity.\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\nProxmox VE Monitoring can be monitored further using the following other integrations:\n\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Proxmox_VMs_and_Containers" %}Proxmox VMs and Containers{% /relatedResource %}\n- {% relatedResource id="cgroups.plugin-/sys/fs/cgroup-Systemd_Services" %}Systemd Services{% /relatedResource %}\n- {% relatedResource id="apps.plugin-apps-Applications" %}Applications{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-zfspool-ZFS_Pools" %}ZFS Pools{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-ceph-Ceph" %}Ceph{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-smartctl-S.M.A.R.T." %}S.M.A.R.T.{% /relatedResource %}\n- {% relatedResource id="go.d.plugin-sensors-Linux_Sensors" %}Linux Sensors{% /relatedResource %}\n- {% relatedResource id="proc.plugin-/proc/net/dev-Network_interfaces" %}Network interfaces{% /relatedResource %}\n- {% relatedResource id="proc.plugin-/proc/diskstats-Disk_Statistics" %}Disk Statistics{% /relatedResource %}\n- {% relatedResource id="proc.plugin-/proc/stat-System_statistics" %}System statistics{% /relatedResource %}\n- {% relatedResource id="proc.plugin-/proc/meminfo-Memory_Usage" %}Memory Usage{% /relatedResource %}\n- {% relatedResource id="proc.plugin-/proc/spl/kstat/zfs/arcstats-ZFS_Adaptive_Replacement_Cache" %}ZFS Adaptive Replacement Cache{% /relatedResource %}\n\n### Default Behavior\n\n#### Auto-Detection\n\nWhen Netdata is installed on a Proxmox VE host, it automatically detects and monitors:\n\n- All running KVM/QEMU virtual machines\n- All running LXC containers\n- Host system resources (CPU, memory, network, disks)\n- Systemd services (pveproxy, pvedaemon, pvestatd, corosync, etc.)\n- ZFS pools (if ZFS is used)\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:"## Setup\n\n\n### Prerequisites\n\n#### Install Netdata on the Proxmox host\n\nNetdata must be installed directly on the Proxmox VE host (not inside a VM or container) to access cgroups for all VMs and containers.\n\n```bash\nwget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh\n```\n\n\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"## Troubleshooting\n\n### VM or container names not resolved\n\nIf VMs or containers show raw cgroup paths instead of friendly names, verify that:\n\n1. Netdata is installed on the Proxmox host (not inside a VM)\n2. The `/etc/pve/` directory is accessible to the netdata user\n3. The `cgroup-name.sh` script can read VM/container configuration files\n\n\n### Missing ZFS metrics\n\nIf ZFS pool metrics are not showing, ensure the `zfspool` collector is enabled and the `zpool` command is available to the netdata user.\n\n\n### Missing Ceph metrics\n\nCeph metrics require the Ceph collector to be configured with the Ceph REST API endpoint. See the Ceph integration page for details.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis guide does not collect metrics directly. Metrics are collected by the related integrations listed above. See each integration's page for detailed metric documentation.\n\n",integration_type:"collector",id:"guides-proxmox-Proxmox_VE_Monitoring",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/guides/proxmox/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ibm.d.plugin",module_name:"as400",monitored_instance:{name:"IBM i (AS/400)",link:"https://www.ibm.com/products/power-systems",categories:["data-collection.operating-systems"],icon_filename:"ibm-i.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["as400"]},overview:'# IBM i (AS/400)\n\nPlugin: ibm.d.plugin\nModule: as400\n\n## Overview\n\nMonitors IBM i (AS/400) systems using SQL services and CL commands to\nexpose CPU, memory, storage, job, and subsystem activity.\n\n**Dependencies:**\n- unixODBC 2.3+ with IBM i Access ODBC driver\n- IBM i 7.2 or later with SQL services enabled\n\n**Required Libraries:**\n- libodbc.so (provided by unixODBC)\n- IBM i Access Client Solutions\n\n**Collection paths**\n\nThe collector executes queries in multiple tracks:\n\n- **Fast path (5s)**: lightweight system status queries remain sequential on the main plugin thread.\n- **Slow path (10s beat)**: heavier queries (per-queue metrics, subsystems, plan cache, etc.) run in a background worker with bounded concurrency.\n- **Batch path (\u226560s beat)**: optional long-period worker used for expensive aggregate queries such as queue totals. Disabled by default unless queue totals are explicitly enabled.\n\n**CPU Collection Methods:**\n\nThe collector uses a hybrid approach for CPU utilization metrics to handle IBM i 7.4+ where\n`AVERAGE_CPU_*` columns were deprecated:\n\n1. **Primary Method - TOTAL_CPU_TIME**: Uses the monotonic `TOTAL_CPU_TIME` counter from\n `QSYS2.SYSTEM_STATUS()` to calculate CPU utilization via delta-based calculation. This is\n the most accurate method but requires `*JOBCTL` special authority. TOTAL_CPU_TIME is a\n cumulative counter in nanoseconds representing CPU-seconds consumed, naturally in per-core\n scale.\n\n2. **Fallback Method - ELAPSED_CPU_USED**: If `*JOBCTL` authority is not available, falls back\n to `ELAPSED_CPU_USED` with automatic reset detection. This method tracks when IBM i statistics\n are reset (either manually or via `reset_statistics` configuration) and re-establishes a\n baseline after detecting resets. The values are already in per-core scale.\n\n3. **Legacy Method - AVERAGE_CPU_UTILIZATION**: For IBM i versions before 7.4, uses the now-\n deprecated `AVERAGE_CPU_UTILIZATION` column, which IBM reports in the same per-core scale.\n\nThe collector automatically selects the appropriate method based on available permissions and\nlogs which method is being used.\n\n**CPU Metric Scale:**\n\nCPU utilization is reported using the "100% = 1 CPU core" semantic. This means:\n- 100% indicates one CPU core is fully utilized\n- 400% indicates four CPU cores are fully utilized\n- Values are limited to 100% \xd7 ConfiguredCPUs, matching the partition\'s configured capacity\n\nFor shared LPARs, the metrics show absolute CPU consumption in per-core scale, not relative to\nentitled capacity. For example, a shared LPAR entitled to 0.20 cores can show 150% utilization\nwhen bursting above entitlement.\n\n**Statistics Reset Behavior:**\n\nThe `reset_statistics` configuration option controls whether the collector resets IBM i system\nstatistics on each query via `SYSTEM_STATUS(RESET_STATISTICS=>\'YES\')`. When enabled:\n\n- System-level statistics (CPU, memory pools, etc.) are reset after each collection cycle\n- Matches legacy behavior but clears global statistics that other tools may rely on\n- The ELAPSED_CPU_USED fallback method will detect and handle these resets automatically\n- **Caution**: Enabling this affects all users and applications on the IBM i system\n\nDefault: `false` (statistics are not reset, using `RESET_STATISTICS=>\'NO\'`)\n\n**Chart Gaps During Baseline Resets:**\n\nThe `as400.system_activity_cpu_rate` and `as400.system_activity_cpu_utilization` charts rely on\ndelta calculations. When the collector detects that IBM i reset these statistics\u2014or when it is\nstill establishing the initial baseline\u2014it intentionally skips a sample instead of emitting a zero\nor spike. Netdata renders those skipped samples as small gaps, which is expected behaviour.\n\n**Cardinality Management:**\n\nTo prevent performance issues from excessive metric creation, the collector enforces cardinality\nlimits on per-instance metrics (disks, subsystems, job queues, message queues, output queues,\nactive jobs, network interfaces, HTTP servers).\n\n**How Limits Work:**\n- The collector counts instances before collecting metrics\n- If count exceeds the configured `max_*` limit, **collection is skipped entirely** for that category\n- The collector logs a warning: `"[category] count (X) exceeds limit (Y), skipping collection"`\n- No metrics are collected for that category until you adjust the configuration\n\n**Configuration Options:**\n\nUse **both** limit and selector options together to manage high-cardinality environments:\n\n| Option | Purpose | Default |\n|--------|---------|---------|\n| `max_disks` | Maximum disk units to monitor | 100 |\n| `max_subsystems` | Maximum subsystems to monitor | 100 |\n| `max_job_queues` | Maximum job queues to monitor | 100 |\n| `max_message_queues` | Maximum message queues to monitor | 100 |\n| `max_output_queues` | Maximum output queues to monitor | 100 |\n| `active_jobs` | Fully qualified active jobs to monitor (`JOB_NUMBER/USER/JOB_NAME`) | `[]` |\n| `collect_disks_matching` | Glob pattern to filter disks (e.g., `"001* 002*"`) | `""` (match all) |\n| `collect_subsystems_matching` | Glob pattern to filter subsystems (e.g., `"QINTER QBATCH"`) | `""` (match all) |\n| `collect_job_queues_matching` | Glob pattern to filter job queues (e.g., `"QSYS/*"`) | `""` (match all) |\n\nOptional batch-path controls:\n\n| Option | Purpose | Default |\n|--------|---------|---------|\n| `batch_path` | Enables the long-period batch worker for aggregate queries | `false` |\n| `batch_path_update_every` | Batch worker cadence (minimum 60s, recommend \u2265600s in production) | `60s` |\n| `batch_path_max_connections` | Maximum concurrent connections for batch queries | `1` |\n| `collect_message_queue_totals` | Enables full-scan counting of all message queues and messages | `auto` (off) |\n| `collect_job_queue_totals` | Enables aggregate counting of job queues and queued jobs | `auto` (off) |\n| `collect_output_queue_totals` | Enables aggregate counting of output queues and spooled files | `auto` (off) |\n\n> **Warning:** queue totals require scanning IBM i catalog views and can be very expensive on large systems. Leave these options disabled unless aggregate counts are absolutely necessary.\n\n\n**Example Workflow:**\n\n1. System has 500 disks, collector skips disk metrics (exceeds default limit of 100)\n2. Check logs: `"disk count (500) exceeds limit (100), skipping per-disk metrics"`\n3. Two options:\n - **Option A**: Increase limit: `max_disks: 500` (collects all 500 disks)\n - **Option B**: Use selector: `collect_disks_matching: "00[1-5]*"` (cherry-pick specific disks)\n\n**Best Practices:**\n- Use selectors to monitor only business-critical objects in large environments\n- Set limits based on your Netdata server\'s capacity (each instance = multiple charts)\n- Start with defaults and adjust based on actual usage patterns\n\n**IBM i 7.2\u20137.3 Behavior Note (Message Queues):**\n\nIBM i 7.4 introduced a message-queue table function that returns only the live backlog. On\n7.2\u20137.3 systems we fall back to the `QSYS2.MESSAGE_QUEUE_INFO` view, which includes *all*\nrecorded messages (even those already processed/cleared from the queue). Aggregations\u2014especially\n`MAX(SEVERITY)`\u2014therefore reflect the historical log, not just the outstanding backlog. This\nbehaviour is inherent to the IBM SQL service and can lead to higher-than-expected max severity\nvalues on pre-7.4 systems.\n\nNetwork interface metrics have a fixed internal limit of 50 instances, and HTTP server metrics are capped at 200 instances; these limits are currently not configurable.\n\n\nThe collector connects to IBM i (AS/400) and collects metrics via its monitoring interface.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn\'t support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\n### Prerequisites\n\n#### Enable monitoring interface\n\nEnsure the IBM i (AS/400) monitoring interface is accessible.\n\n\n\n### Configuration\n\n#### Options\n\nConfiguration options for the as400 collector.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 1 | no |\n| endpoint | Connection endpoint. | dummy://localhost | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ibm.d/as400.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ibm.d/as400.conf\n```\n\n##### Examples\n\n###### Basic\n\nBasic configuration example.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n endpoint: dummy://localhost\n\n```\n{% /details %}\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per activejob\n\nThese metrics refer to activejob instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| job_name | Job_name identifier |\n| job_status | Job_status identifier |\n| subsystem | Subsystem identifier |\n| job_type | Job_type identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| as400.activejob_cpu | cpu | percentage |\n| as400.activejob_resources | temp_storage | MiB |\n| as400.activejob_time | cpu_time, total_time | seconds |\n| as400.activejob_activity | disk_io, interactive_transactions | operations/s |\n| as400.activejob_threads | threads | threads |\n\n### Per disk\n\nThese metrics refer to disk instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| disk_unit | Disk_unit identifier |\n| disk_type | Disk_type identifier |\n| disk_model | Disk_model identifier |\n| hardware_status | Hardware_status identifier |\n| disk_serial_number | Disk_serial_number identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| as400.disk_busy | busy | percentage |\n| as400.disk_io_requests | read, write | requests/s |\n| as400.disk_space_usage | used | percentage |\n| as400.disk_capacity | available, used | gigabytes |\n| as400.disk_blocks | read, write | blocks/s |\n| as400.disk_ssd_health | life_remaining | percentage |\n| as400.disk_ssd_age | power_on_days | days |\n\n### Per httpserver\n\nThese metrics refer to httpserver instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| server | Server identifier |\n| function | Function identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| as400.http_server_connections | normal, ssl | connections |\n| as400.http_server_threads | active, idle | threads |\n| as400.http_server_requests | requests, responses, rejected | requests/s |\n| as400.http_server_bytes | received, sent | bytes/s |\n\n### Per jobqueue\n\nThese metrics refer to jobqueue instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| job_queue | Job_queue identifier |\n| library | Library identifier |\n| status | Status identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| as400.jobqueue_length | jobs | jobs |\n\n### Per messagequeue\n\nThese metrics refer to messagequeue instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| library | Library identifier |\n| queue | Queue identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| as400.message_queue_messages | total, informational, inquiry, diagnostic, escape, notify, sender_copy | messages |\n| as400.message_queue_severity | max | severity |\n\n### Per networkinterface\n\nThese metrics refer to networkinterface instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| interface | Interface identifier |\n| interface_type | Interface_type identifier |\n| connection_type | Connection_type identifier |\n| internet_address | Internet_address identifier |\n| network_address | Network_address identifier |\n| subnet_mask | Subnet_mask identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| as400.network_interface_status | active | status |\n| as400.network_interface_mtu | mtu | bytes |\n\n### Per IBM i (AS/400) instance\n\nThese metrics refer to the entire monitored instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| netdata.plugin_ibm.as400_query_latency_fast | count_disks, count_http_servers, count_network_interfaces, detect_ibmi_version_primary, detect_ibmi_version_fallback, disk_instances, disk_instances_enhanced, disk_status, http_server_info, job_info, memory_pools, network_connections, network_interfaces, serial_number, system_name, system_activity, system_model, system_status, temp_storage_named, temp_storage_total, technology_refresh_level, active_job | ms |\n| netdata.plugin_ibm.as400_query_latency_slow | analyze_plan_cache, count_subsystems, subsystems, message_queue_aggregates, job_queues, output_queue_info, plan_cache_summary | ms |\n| netdata.plugin_ibm.as400_query_latency_batch | message_queue_totals, job_queue_totals, output_queue_totals | ms |\n\n### Per outputqueue\n\nThese metrics refer to outputqueue instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| library | Library identifier |\n| queue | Queue identifier |\n| status | Status identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| as400.output_queue_files | files | files |\n| as400.output_queue_writers | writers | writers |\n| as400.output_queue_status | released | state |\n\n### Per plancache\n\nThese metrics refer to plancache instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| metric | Metric identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| as400.plan_cache_summary | value | value |\n\n### Per queueoverview\n\nThese metrics refer to queueoverview instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| queue_type | Queue_type identifier |\n| item_type | Item_type identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| as400.queues_count | queues | queues |\n| as400.queued_items | items | items |\n\n### Per subsystem\n\nThese metrics refer to subsystem instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| subsystem | Subsystem identifier |\n| library | Library identifier |\n| status | Status identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| as400.subsystem_jobs | active, maximum | jobs |\n\n### Per IBM i (AS/400) instance\n\nThese metrics refer to the entire monitored instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| as400.cpu_utilization | utilization | percentage |\n| as400.cpu_utilization_entitled | utilization | percentage |\n| as400.cpu_configuration | configured | cpus |\n| as400.cpu_capacity | capacity | percentage |\n| as400.total_jobs | total | jobs |\n| as400.active_jobs_by_type | batch, interactive, active | jobs |\n| as400.job_queue_length | waiting | jobs |\n| as400.main_storage_size | total | bytes |\n| as400.temporary_storage | current, maximum | MiB |\n| as400.memory_pool_usage | machine, base, interactive, spool | bytes |\n| as400.memory_pool_defined | machine, base | bytes |\n| as400.memory_pool_reserved | machine, base | bytes |\n| as400.memory_pool_threads | machine, base | threads |\n| as400.memory_pool_max_threads | machine, base | threads |\n| as400.disk_busy_average | busy | percentage |\n| as400.system_asp_usage | used | percentage |\n| as400.system_asp_storage | total | MiB |\n| as400.total_auxiliary_storage | total | MiB |\n| as400.system_threads | active, per_processor | threads |\n| as400.network_connections | remote, total | connections |\n| as400.network_connection_states | listen, close_wait | connections |\n| as400.temp_storage_total | current, peak | bytes |\n| as400.system_activity_cpu_rate | average | percentage |\n| as400.system_activity_cpu_utilization | average, minimum, maximum | percentage |\n\n### Per tempstoragebucket\n\nThese metrics refer to tempstoragebucket instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| bucket | Bucket identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| as400.temp_storage_bucket | current, peak | bytes |\n\n",integration_type:"collector",id:"ibm.d.plugin-as400-IBM_i_(AS/400)",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/ibm.d/modules/as400/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ibm.d.plugin",module_name:"db2",monitored_instance:{name:"IBM DB2",link:"https://www.ibm.com/products/db2",categories:["data-collection.databases"],icon_filename:"ibm.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["db2"]},overview:'# IBM DB2\n\nPlugin: ibm.d.plugin\nModule: db2\n\n## Overview\n\nMonitors IBM DB2 databases using system catalog views and MON_GET_* table\nfunctions to expose connections, locking, buffer pool efficiency, tablespace\ncapacity, and workload performance metrics.\n\nDetailed charts are opt-in per object family through include/exclude lists.\nDefaults focus on engine activity (system connections, core buffer pools,\ncatalog tablespaces). Matching uses glob patterns that can target schema or\napplication names, with include rules taking precedence over excludes.\n\nWhen the number of matching objects exceeds the configured `max_*` limits,\nthe collector publishes deterministic top-N per-instance charts, aggregates\nthe remainder under `group="__other__"`, and logs a throttled warning so you\ncan refine selectors before cardinality runs away. Group charts (by schema,\napplication prefix, or buffer pool family) are always emitted so high-level\nvisibility is preserved even when individual instances are trimmed.\n\n\nThe collector connects to IBM DB2 and collects metrics via its monitoring interface.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn\'t support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n',setup:'## Setup\n\n\n### Prerequisites\n\n#### Enable monitoring interface\n\nEnsure the IBM DB2 monitoring interface is accessible.\n\n\n\n### Configuration\n\n#### Options\n\nConfiguration options for the db2 collector.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 1 | no |\n| endpoint | Connection endpoint. | dummy://localhost | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ibm.d/db2.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ibm.d/db2.conf\n```\n\n##### Examples\n\n###### Basic\n\nBasic configuration example.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n endpoint: dummy://localhost\n\n```\n{% /details %}\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per bufferpool\n\nThese metrics refer to bufferpool instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| bufferpool | Bufferpool identifier |\n| page_size | Page_size identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| db2.bufferpool_instance_hit_ratio | overall | percentage |\n| db2.bufferpool_instance_detailed_hit_ratio | data, index, xda, column | percentage |\n| db2.bufferpool_instance_reads | logical, physical | reads/s |\n| db2.bufferpool_instance_data_reads | logical, physical | reads/s |\n| db2.bufferpool_instance_index_reads | logical, physical | reads/s |\n| db2.bufferpool_instance_pages | used, total | pages |\n| db2.bufferpool_instance_writes | writes | writes/s |\n\n### Per bufferpoolgroup\n\nThese metrics refer to bufferpoolgroup instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| group | Group identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| db2.bufferpool_group_hit_ratio | overall | percentage |\n| db2.bufferpool_group_detailed_hit_ratio | data, index, xda, column | percentage |\n| db2.bufferpool_group_reads | logical, physical | reads/s |\n| db2.bufferpool_group_data_reads | logical, physical | reads/s |\n| db2.bufferpool_group_index_reads | logical, physical | reads/s |\n| db2.bufferpool_group_pages | used, total | pages |\n| db2.bufferpool_group_writes | writes | writes/s |\n\n### Per connection\n\nThese metrics refer to connection instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| application_id | Application_id identifier |\n| application_name | Application_name identifier |\n| client_hostname | Client_hostname identifier |\n| client_ip | Client_ip identifier |\n| client_user | Client_user identifier |\n| state | State identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| db2.connection_state | state | state |\n| db2.connection_activity | read, written | rows/s |\n| db2.connection_wait_time | lock, log_disk, log_buffer, pool_read, pool_write, direct_read, direct_write, fcm_recv, fcm_send | milliseconds |\n| db2.connection_processing_time | routine, compile, section, commit, rollback | milliseconds |\n\n### Per connectiongroup\n\nThese metrics refer to connectiongroup instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| group | Group identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| db2.connection_group.count | count | connections |\n| db2.connection_group.state | state | state |\n| db2.connection_group.activity | read, written | rows/s |\n| db2.connection_group.wait_time | lock, log_disk, log_buffer, pool_read, pool_write, direct_read, direct_write, fcm_recv, fcm_send | milliseconds |\n| db2.connection_group.processing_time | routine, compile, section, commit, rollback | milliseconds |\n\n### Per database\n\nThese metrics refer to database instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| database | Database identifier |\n| status | Status identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| db2.database_instance_status | status | status |\n| db2.database_applications | applications | applications |\n\n### Per index\n\nThese metrics refer to index instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| index | Index identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| db2.index_usage | index, full | scans/s |\n\n### Per indexgroup\n\nThese metrics refer to indexgroup instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| group | Group identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| db2.index_group_usage | index, full | scans/s |\n\n### Per memorypool\n\nThese metrics refer to memorypool instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| pool_type | Pool_type identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| db2.memory_pool_usage | used | bytes |\n| db2.memory_pool_hwm | hwm | bytes |\n\n### Per memoryset\n\nThese metrics refer to memoryset instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| host | Host identifier |\n| database | Database identifier |\n| set_type | Set_type identifier |\n| member | Member identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| db2.memory_set_usage | used | bytes |\n| db2.memory_set_committed | committed | bytes |\n| db2.memory_set_high_water_mark | hwm | bytes |\n| db2.memory_set_additional_committed | additional | bytes |\n| db2.memory_set_percent_used_hwm | used_hwm | percentage |\n\n### Per prefetcher\n\nThese metrics refer to prefetcher instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| bufferpool | Bufferpool identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| db2.prefetcher_prefetch_ratio | ratio | percentage |\n| db2.prefetcher_cleaner_ratio | ratio | percentage |\n| db2.prefetcher_physical_reads | reads | reads/s |\n| db2.prefetcher_async_reads | reads | reads/s |\n| db2.prefetcher_wait_time | wait_time | milliseconds |\n| db2.prefetcher_unread_pages | unread | pages/s |\n\n### Per IBM DB2 instance\n\nThese metrics refer to the entire monitored instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| db2.service_health | connection, database | status |\n| db2.connections | total, active, executing, idle, max_allowed | connections |\n| db2.locking | waits, timeouts, escalations | events/s |\n| db2.deadlocks | deadlocks | deadlocks/s |\n| db2.lock_details | active, waiting_agents, memory_pages | locks |\n| db2.lock_wait_time | wait_time | milliseconds |\n| db2.sorting | sorts, overflows | sorts/s |\n| db2.row_activity | read, returned, modified | rows/s |\n| db2.bufferpool_hit_ratio | hits, misses | percentage |\n| db2.bufferpool_data_hit_ratio | hits, misses | percentage |\n| db2.bufferpool_index_hit_ratio | hits, misses | percentage |\n| db2.bufferpool_xda_hit_ratio | hits, misses | percentage |\n| db2.bufferpool_column_hit_ratio | hits, misses | percentage |\n| db2.bufferpool_reads | logical, physical | reads/s |\n| db2.bufferpool_data_reads | logical, physical | reads/s |\n| db2.bufferpool_index_reads | logical, physical | reads/s |\n| db2.bufferpool_xda_reads | logical, physical | reads/s |\n| db2.bufferpool_column_reads | logical, physical | reads/s |\n| db2.bufferpool_writes | writes | writes/s |\n| db2.log_space | used, available | bytes |\n| db2.log_utilization | utilization | percentage |\n| db2.log_io | reads, writes | operations/s |\n| db2.log_operations | commits, rollbacks, reads, writes | operations/s |\n| db2.log_timing | avg_commit, avg_read, avg_write | milliseconds |\n| db2.log_buffer_events | buffer_full | events/s |\n| db2.long_running_queries | total, warning, critical | queries |\n| db2.backup_status | status | status |\n| db2.backup_age | full, incremental | hours |\n| db2.federation_connections | active, idle | connections |\n| db2.federation_operations | rows_read, selects, waits | operations/s |\n| db2.database_status | active, inactive | status |\n| db2.database_count | active, inactive | databases |\n| db2.cpu_usage | user, system, idle, iowait | percentage |\n| db2.active_connections | active, total | connections |\n| db2.memory_usage | database, instance, bufferpool, shared_sort | MiB |\n| db2.sql_statements | selects, modifications | statements/s |\n| db2.transaction_activity | committed, aborted | transactions/s |\n| db2.time_spent | direct_read, direct_write, pool_read, pool_write | milliseconds |\n\n### Per table\n\nThese metrics refer to table instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| table | Table identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| db2.table_size | data, index, long_obj | bytes |\n| db2.table_activity | read, written | rows/s |\n\n### Per tablegroup\n\nThese metrics refer to tablegroup instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| group | Group identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| db2.table_group_size | data, index, long_obj | bytes |\n| db2.table_group_activity | read, written | rows/s |\n\n### Per tableio\n\nThese metrics refer to tableio instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| table | Table identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| db2.table_io_scans | scans | scans/s |\n| db2.table_io_rows | read | rows/s |\n| db2.table_io_activity | inserts, updates, deletes | operations/s |\n| db2.table_io_overflow | overflow | accesses/s |\n\n### Per tablespace\n\nThese metrics refer to tablespace instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| tablespace | Tablespace identifier |\n| type | Type identifier |\n| content_type | Content_type identifier |\n| state | State identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| db2.tablespace_usage | used | percentage |\n| db2.tablespace_size | used, free | bytes |\n| db2.tablespace_usable_size | total, usable | bytes |\n| db2.tablespace_state | state | state |\n\n### Per tablespacegroup\n\nThese metrics refer to tablespacegroup instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| group | Group identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| db2.tablespace_group_usage | used | percentage |\n| db2.tablespace_group_size | used, free | bytes |\n| db2.tablespace_group_usable_size | total, usable | bytes |\n| db2.tablespace_group_state | state | state |\n\n",integration_type:"collector",id:"ibm.d.plugin-db2-IBM_DB2",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/ibm.d/modules/db2/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ibm.d.plugin",module_name:"mq",monitored_instance:{name:"IBM MQ",link:"https://www.ibm.com/products/mq",categories:["data-collection.applications"],icon_filename:"ibm-mq.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["mq"]},overview:"# IBM MQ\n\nPlugin: ibm.d.plugin\nModule: mq\n\n## Overview\n\nMonitors IBM MQ queue managers, queues, channels, and topics\nusing the PCF (Programmable Command Format) protocol.\n\nBy default the collector tracks the critical system queues `SYSTEM.DEAD.LETTER.QUEUE`,\n`SYSTEM.ADMIN.COMMAND.QUEUE`, and `SYSTEM.ADMIN.STATISTICS.QUEUE`. All other queues are\nopt-in via the `include_queues` list, with `exclude_queues` removing noisy patterns such as\n`SYSTEM.*` or `AMQ.*`. Include patterns take precedence over excludes so you can safely\nmonitor individual system queues while dropping the broader wildcard.\n\nPer-queue charts are bounded by `max_queues` (default 50). When more queues are discovered,\nthe collector exports the busiest ones individually, rolls the remainder into an\naggregated `__other__` dimension, and logs a throttled warning listing the overflowed\ngroups. Parallel queue-group charts summarise depth, traffic, and backlog per naming\nprefix (first two dot-separated segments, collapsing all `SYSTEM.*` queues together), so\nhigh-level visibility is never lost even when detailed charts are trimmed.\n\n\nThe collector connects to IBM MQ and collects metrics via its monitoring interface.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Enable monitoring interface\n\nEnsure the IBM MQ monitoring interface is accessible.\n\n\n\n### Configuration\n\n#### Options\n\nConfiguration options for the mq collector.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 1 | no |\n| endpoint | Connection endpoint. | dummy://localhost | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ibm.d/mq.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ibm.d/mq.conf\n```\n\n##### Examples\n\n###### Basic\n\nBasic configuration example.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n endpoint: dummy://localhost\n\n```\n{% /details %}\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per channel\n\nThese metrics refer to channel instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| channel | Channel identifier |\n| type | Type identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mq.channel.status | inactive, binding, starting, running, stopping, retrying, stopped, requesting, paused, disconnected, initializing, switching | status |\n| mq.channel.messages | messages | messages/s |\n| mq.channel.bytes | bytes | bytes/s |\n| mq.channel.batches | batches | batches/s |\n| mq.channel.batch_size | batch_size | messages |\n| mq.channel.batch_interval | batch_interval | milliseconds |\n| mq.channel.intervals | disc_interval, hb_interval, keep_alive_interval | seconds |\n| mq.channel.short_retry_count | short_retry | retries |\n| mq.channel.long_retry_interval | long_retry | seconds |\n| mq.channel.max_msg_length | max_msg_length | bytes |\n| mq.channel.sharing_conversations | sharing_conversations | conversations |\n| mq.channel.network_priority | network_priority | priority |\n| mq.channel.buffer_counts | sent, received | buffers |\n| mq.channel.current_messages | current | messages |\n| mq.channel.xmitq_time | xmitq_time | milliseconds |\n| mq.channel.mca_status | mca_status | status |\n| mq.channel.indoubt_status | indoubt_status | status |\n| mq.channel.ssl_key_resets | ssl_key_resets | resets |\n| mq.channel.npm_speed | npm_speed | speed |\n| mq.channel.current_sharing_convs | current_sharing | conversations |\n\n### Per channelstatistics\n\nThese metrics refer to channelstatistics instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| channel | Channel identifier |\n| type | Type identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mq.channel_stats.messages | messages | messages/s |\n| mq.channel_stats.bytes | bytes | bytes/s |\n| mq.channel_stats.batches | full_batches, incomplete_batches | batches/s |\n| mq.channel_stats.batch_size | avg_batch_size | messages |\n| mq.channel_stats.put_retries | put_retries | retries/s |\n\n### Per listener\n\nThese metrics refer to listener instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| listener | Listener identifier |\n| port | Port identifier |\n| ip_address | Ip_address identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mq.listener.status | stopped, starting, running, stopping, retrying | status |\n| mq.listener.backlog | backlog | connections |\n| mq.listener.uptime | uptime | seconds |\n\n### Per mqistatistics\n\nThese metrics refer to mqistatistics instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| queue_manager | Queue_manager identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mq.mqi_stats.opens | opens_total, opens_failed | operations/s |\n| mq.mqi_stats.closes | closes_total, closes_failed | operations/s |\n| mq.mqi_stats.inqs | inqs_total, inqs_failed | operations/s |\n| mq.mqi_stats.sets | sets_total, sets_failed | operations/s |\n\n### Per queue\n\nThese metrics refer to queue instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| queue | Queue identifier |\n| type | Type identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mq.queue.depth | current, max | messages |\n| mq.queue.depth_percentage | percentage | percentage |\n| mq.queue.messages | enqueued, dequeued | messages/s |\n| mq.queue.connections | input, output | connections |\n| mq.queue.high_depth | high_depth | messages |\n| mq.queue.uncommitted_msgs | uncommitted | messages |\n| mq.queue.file_size | current, max | bytes |\n| mq.queue.last_activity | since_last_get, since_last_put | seconds |\n| mq.queue.oldest_msg_age | oldest_msg_age | seconds |\n| mq.queue.time_indicators | short_period, long_period | microseconds |\n| mq.queue.service_interval | service_interval | milliseconds |\n| mq.queue.inhibit_status | inhibit_get, inhibit_put | status |\n| mq.queue.priority | def_priority | priority |\n| mq.queue.message_persistence | persistent, non_persistent | boolean |\n| mq.queue.retention_interval | retention_interval | hours |\n| mq.queue.triggers | trigger_depth, trigger_type | messages |\n| mq.queue.backout_threshold | backout_threshold | retries |\n| mq.queue.max_msg_length | max_msg_length | bytes |\n| mq.queue.scope | queue_manager, cell | boolean |\n| mq.queue.usage | normal, transmission | boolean |\n| mq.queue.msg_delivery_sequence | priority, fifo | boolean |\n| mq.queue.harden_get_backout | enabled, disabled | boolean |\n\n### Per queuegroup\n\nThese metrics refer to queuegroup instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| group | Group identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mq.queue_group.depth | current, max | messages |\n| mq.queue_group.depth_percentage | percentage | percentage |\n| mq.queue_group.messages | enqueued, dequeued | messages/s |\n| mq.queue_group.connections | input, output | connections |\n| mq.queue_group.uncommitted_msgs | uncommitted | messages |\n| mq.queue_group.file_size | current, max | bytes |\n| mq.queue_group.oldest_msg_age | oldest_msg_age | seconds |\n\n### Per IBM MQ instance\n\nThese metrics refer to the entire monitored instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mq.qmgr.status | status | status |\n| mq.qmgr.connection_count | connections | connections |\n| mq.qmgr.uptime | uptime | seconds |\n| mq.queues.overview | monitored, excluded, invisible, failed | queues |\n| mq.channels.overview | monitored, excluded, invisible, failed | channels |\n| mq.topics.overview | monitored, excluded, invisible, failed | topics |\n| mq.listeners.overview | monitored, excluded, invisible, failed | listeners |\n\n### Per IBM MQ instance\n\nThese metrics refer to the entire monitored instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mq.qmgr.cpu_usage | user, system | percentage |\n| mq.qmgr.memory_usage | total | bytes |\n| mq.qmgr.ram_usage | total | bytes |\n| mq.qmgr.log_utilization | used | percentage |\n| mq.qmgr.log_file_size | size | bytes |\n| mq.qmgr.log_write_rate | rate | bytes/s |\n\n### Per queuestatistics\n\nThese metrics refer to queuestatistics instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| queue | Queue identifier |\n| type | Type identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mq.queue_stats.depth_min_max | min_depth, max_depth | messages |\n| mq.queue_stats.avg_queue_time | non_persistent, persistent | microseconds |\n| mq.queue_stats.time_indicators | short_period, long_period | microseconds |\n| mq.queue_stats.operations | puts_non_persistent, puts_persistent, gets_non_persistent, gets_persistent, put1s, browses | operations/s |\n| mq.queue_stats.bytes | put_bytes_non_persistent, put_bytes_persistent, get_bytes_non_persistent, get_bytes_persistent, browse_bytes | bytes/s |\n| mq.queue_stats.failures | puts_failed, put1s_failed, gets_failed, browses_failed | failures/s |\n| mq.queue_stats.message_lifecycle | expired, purged, not_queued | messages/s |\n\n### Per subscription\n\nThese metrics refer to subscription instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| subscription | Subscription identifier |\n| topic | Topic identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mq.subscription.messages | pending | messages |\n| mq.subscription.last_message_age | age | seconds |\n\n### Per topic\n\nThese metrics refer to topic instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| topic | Topic identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mq.topic.publishers | publishers | publishers |\n| mq.topic.subscribers | subscribers | subscribers |\n| mq.topic.messages | messages | messages/s |\n| mq.topic.time_since_last_message | time_since_last_msg | seconds |\n\n",integration_type:"collector",id:"ibm.d.plugin-mq-IBM_MQ",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/ibm.d/modules/mq/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ibm.d.plugin",module_name:"websphere_jmx",monitored_instance:{name:"IBM WebSphere JMX",link:"https://www.ibm.com/products/websphere-application-server",categories:["data-collection.applications"],icon_filename:""},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["websphere_jmx"]},overview:"# IBM WebSphere JMX\n\nPlugin: ibm.d.plugin\nModule: websphere_jmx\n\n## Overview\n\nCollects JVM, thread pool, and middleware metrics from IBM WebSphere Application Server\nvia the embedded JMX bridge helper.\n\n\nThe collector connects to IBM WebSphere JMX and collects metrics via its monitoring interface.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Enable monitoring interface\n\nEnsure the IBM WebSphere JMX monitoring interface is accessible.\n\n\n\n### Configuration\n\n#### Options\n\nConfiguration options for the websphere_jmx collector.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 1 | no |\n| endpoint | Connection endpoint. | dummy://localhost | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ibm.d/websphere_jmx.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ibm.d/websphere_jmx.conf\n```\n\n##### Examples\n\n###### Basic\n\nBasic configuration example.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n endpoint: dummy://localhost\n\n```\n{% /details %}\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per applications\n\nThese metrics refer to applications instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| application | Application identifier |\n| module | Module identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_jmx.app_requests | requests | requests |\n| websphere_jmx.app_response_time | response_time | milliseconds |\n| websphere_jmx.app_sessions_active | active | sessions |\n| websphere_jmx.app_sessions_live | live | sessions |\n| websphere_jmx.app_session_events | creates, invalidates | sessions |\n| websphere_jmx.app_transactions | committed, rolledback | transactions |\n\n### Per jca\n\nThese metrics refer to jca instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| pool | Pool identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_jmx.jca_pool_size | size | connections |\n| websphere_jmx.jca_pool_usage | active, free | connections |\n| websphere_jmx.jca_pool_wait_time | wait | milliseconds |\n| websphere_jmx.jca_pool_use_time | use | milliseconds |\n| websphere_jmx.jca_pool_connections | created, destroyed | connections |\n| websphere_jmx.jca_pool_waiting_threads | waiting | threads |\n\n### Per jdbc\n\nThese metrics refer to jdbc instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| pool | Pool identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_jmx.jdbc_pool_size | size | connections |\n| websphere_jmx.jdbc_pool_usage | active, free | connections |\n| websphere_jmx.jdbc_pool_wait_time | wait | milliseconds |\n| websphere_jmx.jdbc_pool_use_time | use | milliseconds |\n| websphere_jmx.jdbc_pool_connections | created, destroyed | connections |\n| websphere_jmx.jdbc_pool_waiting_threads | waiting | threads |\n\n### Per jms\n\nThese metrics refer to jms instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| destination | Destination identifier |\n| destination_type | Destination_type identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_jmx.jms_messages_current | current | messages |\n| websphere_jmx.jms_messages_pending | pending | messages |\n| websphere_jmx.jms_messages_total | total | messages |\n| websphere_jmx.jms_consumers | consumers | consumers |\n\n### Per IBM WebSphere JMX instance\n\nThese metrics refer to the entire monitored instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_jmx.jvm_heap_memory | used, committed, max | bytes |\n| websphere_jmx.jvm_heap_usage | usage | percentage |\n| websphere_jmx.jvm_nonheap_memory | used, committed | bytes |\n| websphere_jmx.jvm_gc_count | collections | collections |\n| websphere_jmx.jvm_gc_time | time | milliseconds |\n| websphere_jmx.jvm_threads | total, daemon | threads |\n| websphere_jmx.jvm_thread_states | peak, started | threads |\n| websphere_jmx.jvm_classes | loaded, unloaded | classes |\n| websphere_jmx.jvm_process_cpu_usage | cpu | percentage |\n| websphere_jmx.jvm_uptime | uptime | seconds |\n\n### Per threadpools\n\nThese metrics refer to threadpools instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| pool | Pool identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_jmx.threadpool_size | size, max | threads |\n| websphere_jmx.threadpool_active | active | threads |\n\n",integration_type:"collector",id:"ibm.d.plugin-websphere_jmx-IBM_WebSphere_JMX",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/ibm.d/modules/websphere/jmx/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ibm.d.plugin",module_name:"websphere_mp",monitored_instance:{name:"IBM WebSphere MicroProfile",link:"https://www.ibm.com/products/websphere-application-server",categories:["data-collection.applications"],icon_filename:"ibm.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["websphere_mp"]},overview:"# IBM WebSphere MicroProfile\n\nPlugin: ibm.d.plugin\nModule: websphere_mp\n\n## Overview\n\nCollects JVM, vendor, and REST endpoint metrics from WebSphere Liberty / Open Liberty\nservers via the MicroProfile Metrics (Prometheus/OpenMetrics) endpoint.\n\n\nThe collector connects to IBM WebSphere MicroProfile and collects metrics via its monitoring interface.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Enable monitoring interface\n\nEnsure the IBM WebSphere MicroProfile monitoring interface is accessible.\n\n\n\n### Configuration\n\n#### Options\n\nConfiguration options for the websphere_mp collector.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 1 | no |\n| endpoint | Connection endpoint. | dummy://localhost | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ibm.d/websphere_mp.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ibm.d/websphere_mp.conf\n```\n\n##### Examples\n\n###### Basic\n\nBasic configuration example.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n endpoint: dummy://localhost\n\n```\n{% /details %}\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per IBM WebSphere MicroProfile instance\n\nThese metrics refer to the entire monitored instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_mp.cpu_usage | process, utilization | percentage |\n| websphere_mp.cpu_time | total | seconds |\n\n### Per IBM WebSphere MicroProfile instance\n\nThese metrics refer to the entire monitored instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_mp.jvm_memory_heap_usage | used, free | bytes |\n| websphere_mp.jvm_memory_heap_committed | committed | bytes |\n| websphere_mp.jvm_memory_heap_max | limit | bytes |\n| websphere_mp.jvm_heap_utilization | utilization | percentage |\n| websphere_mp.jvm_gc_collections | rate | collections/s |\n| websphere_mp.jvm_gc_time | total, per_cycle | milliseconds |\n| websphere_mp.jvm_threads_current | daemon, other | threads |\n| websphere_mp.jvm_threads_peak | peak | threads |\n\n### Per restendpoint\n\nThese metrics refer to restendpoint instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| method | Method identifier |\n| endpoint | Endpoint identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_mp.rest_requests | requests | requests/s |\n| websphere_mp.rest_response_time | average | milliseconds |\n\n### Per IBM WebSphere MicroProfile instance\n\nThese metrics refer to the entire monitored instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_mp.threadpool_usage | active, idle | threads |\n| websphere_mp.threadpool_size | size | threads |\n\n",integration_type:"collector",id:"ibm.d.plugin-websphere_mp-IBM_WebSphere_MicroProfile",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/ibm.d/modules/websphere/mp/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ibm.d.plugin",module_name:"websphere_pmi",monitored_instance:{name:"IBM WebSphere PMI",link:"https://www.ibm.com/docs/en/was",categories:["data-collection.applications"],icon_filename:"ibm.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["websphere_pmi"]},overview:"# IBM WebSphere PMI\n\nPlugin: ibm.d.plugin\nModule: websphere_pmi\n\n## Overview\n\nCollects WebSphere Application Server performance metrics via the PerfServlet (PMI) interface,\ncovering JVM, thread pools, JDBC/JMS resources, applications, and clustering information.\n\n\nThe collector connects to IBM WebSphere PMI and collects metrics via its monitoring interface.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Enable monitoring interface\n\nEnsure the IBM WebSphere PMI monitoring interface is accessible.\n\n\n\n### Configuration\n\n#### Options\n\nConfiguration options for the websphere_pmi collector.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 1 | no |\n| endpoint | Connection endpoint. | dummy://localhost | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ibm.d/websphere_pmi.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ibm.d/websphere_pmi.conf\n```\n\n##### Examples\n\n###### Basic\n\nBasic configuration example.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: local\n endpoint: dummy://localhost\n\n```\n{% /details %}\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per alarmmanager\n\nThese metrics refer to alarmmanager instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| manager | Manager identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.alarm_manager_events | created, cancelled, fired | events/s |\n\n### Per dynamiccache\n\nThese metrics refer to dynamiccache instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| cache | Cache identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.dynamic_cache_in_memory | entries | entries |\n| websphere_pmi.dynamic_cache_capacity | max_entries | entries |\n\n### Per enterprisebeans\n\nThese metrics refer to enterprisebeans instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| bean | Bean identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.ejb_operations | create, remove, activate, passivate, instantiate, store, load | operations/s |\n| websphere_pmi.ejb_messages | received, backout | messages/s |\n| websphere_pmi.ejb_pool | ready, live, pooled, active_method, passive, server_session_pool, method_ready, async_queue | beans |\n| websphere_pmi.ejb_time | activation, passivation, create, remove, load, store, method_response, wait, async_wait, read_lock, write_lock | milliseconds |\n\n### Per extensionregistry\n\nThese metrics refer to extensionregistry instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.extension_registry_requests | requests, hits, displacements | events/s |\n| websphere_pmi.extension_registry_hit_rate | hit_rate | percentage |\n\n### Per hamanager\n\nThese metrics refer to hamanager instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.ha_manager_groups | local | groups |\n| websphere_pmi.ha_manager_bulletin_board | subjects, subscriptions, local_subjects, local_subscriptions | items |\n| websphere_pmi.ha_manager_rebuild_time | group_state, bulletin_board | milliseconds |\n\n### Per jcapool\n\nThese metrics refer to jcapool instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| provider | Provider identifier |\n| pool | Pool identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.jca_pool_operations | create, close, allocate, freed, faults | operations/s |\n| websphere_pmi.jca_pool_managed | managed_connections, connection_handles | resources |\n| websphere_pmi.jca_pool_utilization | percent_used, percent_maxed | percentage |\n| websphere_pmi.jca_pool_waiting | waiting_threads | threads |\n\n### Per jdbcpool\n\nThese metrics refer to jdbcpool instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| pool | Pool identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.jdbc_pool_usage | percent_used, percent_maxed | percentage |\n| websphere_pmi.jdbc_pool_waiting | waiting_threads | threads |\n| websphere_pmi.jdbc_pool_connections | managed, handles | connections |\n| websphere_pmi.jdbc_pool_operations | created, closed, allocated, returned, faults, prep_stmt_cache_discard | operations/s |\n| websphere_pmi.jdbc_pool_time | use, wait, jdbc | milliseconds |\n\n### Per jmsqueue\n\nThese metrics refer to jmsqueue instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| engine | Engine identifier |\n| destination | Destination identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.jms_queue_messages_produced | total, best_effort, express, reliable_nonpersistent, reliable_persistent, assured_persistent | messages/s |\n| websphere_pmi.jms_queue_messages_consumed | total, best_effort, express, reliable_nonpersistent, reliable_persistent, assured_persistent, expired | messages/s |\n| websphere_pmi.jms_queue_clients | local_producers, local_producer_attaches, local_consumers, local_consumer_attaches | clients |\n| websphere_pmi.jms_queue_storage | available, unavailable, oldest_age | messages |\n| websphere_pmi.jms_queue_wait_time | aggregate, local | milliseconds |\n\n### Per jmsstore\n\nThese metrics refer to jmsstore instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| engine | Engine identifier |\n| section | Section identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.jms_store_cache | add_stored, add_not_stored, stored_current, stored_bytes, not_stored_current, not_stored_bytes, discard_count, discard_bytes | events |\n| websphere_pmi.jms_store_datastore | insert_batches, update_batches, delete_batches, insert_count, update_count, delete_count, open_count, abort_count, transaction_ms | events/s |\n| websphere_pmi.jms_store_transactions | global_start, global_commit, global_abort, global_indoubt, local_start, local_commit, local_abort | transactions/s |\n| websphere_pmi.jms_store_expiry | index_items | items |\n\n### Per jmstopic\n\nThese metrics refer to jmstopic instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| engine | Engine identifier |\n| destination | Destination identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.jms_topic_publications | assured, best_effort, express | messages/s |\n| websphere_pmi.jms_topic_subscription_hits | assured, best_effort, express | events/s |\n| websphere_pmi.jms_topic_subscriptions | durable_local | subscriptions |\n| websphere_pmi.jms_topic_events | incomplete_publications, publisher_attaches, subscriber_attaches | events/s |\n| websphere_pmi.jms_topic_age | local_oldest | milliseconds |\n\n### Per IBM WebSphere PMI instance\n\nThese metrics refer to the entire monitored instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.jvm_heap_usage | used, free | bytes |\n| websphere_pmi.jvm_heap_committed | committed | bytes |\n| websphere_pmi.jvm_heap_max | limit | bytes |\n| websphere_pmi.jvm_uptime | uptime | seconds |\n| websphere_pmi.jvm_cpu | usage | percentage |\n| websphere_pmi.jvm_gc_collections | collections | collections/s |\n| websphere_pmi.jvm_gc_time | total | milliseconds |\n| websphere_pmi.jvm_threads | daemon, other | threads |\n| websphere_pmi.jvm_threads_peak | peak | threads |\n\n### Per orb\n\nThese metrics refer to orb instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.orb_concurrent | concurrent_requests | requests |\n| websphere_pmi.orb_requests | requests | requests/s |\n\n### Per objectpool\n\nThese metrics refer to objectpool instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| pool | Pool identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.object_pool_operations | created | operations/s |\n| websphere_pmi.object_pool_size | allocated, returned, idle | objects |\n\n### Per pmiwebservicemodule\n\nThese metrics refer to pmiwebservicemodule instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| module | Module identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.pmi_web_service_module_services | loaded | services |\n\n### Per portlet\n\nThese metrics refer to portlet instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| portlet | Portlet identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.portlet_requests | requests | requests/s |\n| websphere_pmi.portlet_concurrent | concurrent | requests |\n| websphere_pmi.portlet_errors | errors | errors/s |\n| websphere_pmi.portlet_response_time | render, action, process_event, serve_resource | milliseconds |\n\n### Per portletapplication\n\nThese metrics refer to portletapplication instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.portlet_application_loaded | loaded | portlets |\n\n### Per schedulers\n\nThese metrics refer to schedulers instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| scheduler | Scheduler identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.scheduler_activity | finished, failures, polls | events/s |\n\n### Per securityauth\n\nThese metrics refer to securityauth instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.security_auth_counts | web, tai, identity, basic, token, jaas_identity, jaas_basic, jaas_token, rmi | events/s |\n\n### Per securityauthz\n\nThese metrics refer to securityauthz instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.security_authz_time | web, ejb, admin, cwwja | milliseconds |\n\n### Per sessionmanager\n\nThese metrics refer to sessionmanager instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| app | App identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.session_manager_active | active, live | sessions |\n| websphere_pmi.session_manager_events | created, invalidated, timeout_invalidations, affinity_breaks, cache_discards, no_room, activate_non_exist | events/s |\n\n### Per IBM WebSphere PMI instance\n\nThese metrics refer to the entire monitored instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.cpu_utilization | utilization | percentage |\n\n### Per IBM WebSphere PMI instance\n\nThese metrics refer to the entire monitored instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.system_data_usage | cpu_since_last, free_memory | value |\n\n### Per threadpool\n\nThese metrics refer to threadpool instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| name | Name identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.threadpool_usage | active, size | threads |\n\n### Per transactionmanager\n\nThese metrics refer to transactionmanager instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.transaction_counts | global_begun, global_committed, global_rolled_back, global_timeout, global_involved, optimizations, local_begun, local_committed, local_rolled_back, local_timeout | transactions/s |\n| websphere_pmi.transaction_active | global, local | transactions |\n| websphere_pmi.transaction_time | global_total, global_prepare, global_commit, global_before_completion, local_total, local_commit, local_before_completion | milliseconds |\n\n### Per url\n\nThese metrics refer to url instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| url | Url identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.url_requests | requests | requests/s |\n| websphere_pmi.url_time | service, async | milliseconds |\n\n### Per webapp\n\nThese metrics refer to webapp instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| app | App identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.webapp_load | loaded_servlets, reloads | events |\n\n### Per webservices\n\nThese metrics refer to webservices instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| service | Service identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.web_services_loaded | loaded | services |\n\n### Per webservicesgateway\n\nThese metrics refer to webservicesgateway instances.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | Node identifier |\n| server | Server identifier |\n| gateway | Gateway identifier |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| websphere_pmi.web_services_gateway_requests | synchronous, synchronous_responses, asynchronous, asynchronous_responses | requests/s |\n\n",integration_type:"collector",id:"ibm.d.plugin-websphere_pmi-IBM_WebSphere_PMI",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/ibm.d/modules/websphere/pmi/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"idlejitter.plugin",module_name:"idlejitter.plugin",monitored_instance:{name:"Idle OS Jitter",link:"",categories:["data-collection.synthetic-testing"],icon_filename:"syslog.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["latency","jitter"]},overview:"# Idle OS Jitter\n\nPlugin: idlejitter.plugin\nModule: idlejitter.plugin\n\n## Overview\n\nMonitor delays in timing for user processes caused by scheduling limitations to optimize the system to run latency sensitive applications with minimal jitter, improving consistency and quality of service.\n\n\nA thread is spawned that requests to sleep for fixed amount of time. When the system wakes it up, it measures how many microseconds have passed. The difference between the requested and the actual duration of the sleep, is the idle jitter. This is done dozens of times per second to ensure we have a representative sample.\n\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration will run by default on all supported systems.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThis integration only supports a single configuration option, and most users will not need to change it.\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| loop time | Specifies the target time for the data collection thread to sleep, measured in miliseconds. | 20ms | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Idle OS Jitter instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.idlejitter | min, max, average | microseconds lost/s |\n\n",integration_type:"collector",id:"idlejitter.plugin-idlejitter.plugin-Idle_OS_Jitter",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/idlejitter.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"ioping.plugin",module_name:"ioping.plugin",monitored_instance:{name:"IOPing",link:"https://github.com/koct9i/ioping",categories:["data-collection.synthetic-testing"],icon_filename:"syslog.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# IOPing\n\nPlugin: ioping.plugin\nModule: ioping.plugin\n\n## Overview\n\nMonitor IOPing metrics for efficient disk I/O latency tracking. Keep track of read/write speeds, latency, and error rates for optimized disk operations.\n\nPlugin uses `ioping` command.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Install ioping\n\nYou can install the command by passing the argument `install` to the plugin (`/usr/libexec/netdata/plugins.d/ioping.plugin install`).\n\n\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Data collection frequency. | 1s | no |\n| destination | The directory/file/device to ioping. | | yes |\n| request_size | The request size in bytes to ioping the destination (symbolic modifiers are supported) | 4k | no |\n| ioping_opts | Options passed to `ioping` commands. | -T 1000000 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `ioping.conf`.\n\nThe file format is POSIX shell script. Generally, the structure is:\n\n```sh\nOPTION_1="some value"\nOPTION_2="some other value"\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config ioping.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\nThis example has the minimum configuration necessary to have the plugin running.\n\n{% details open=true summary="Config" %}\n```yaml\ndestination="/dev/sda"\n\n```\n{% /details %}\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ ioping_disk_latency ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ioping.conf) | ioping.latency | average I/O latency over the last 10 seconds |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per disk\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ioping.latency | latency | microseconds |\n\n",integration_type:"collector",id:"ioping.plugin-ioping.plugin-IOPing",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/ioping.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"macos.plugin",module_name:"mach_smi",monitored_instance:{name:"macOS",link:"https://www.apple.com/macos",categories:["data-collection.operating-systems"],icon_filename:"macos.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["macos","apple","darwin"]},overview:"# macOS\n\nPlugin: macos.plugin\nModule: mach_smi\n\n## Overview\n\nMonitor macOS metrics for efficient operating system performance, power sources, thermal pressure, sensors, fans, storage, and networking.\n\nThe plugin uses eight different methods to collect data:\n\n- The function `sysctlbyname` is called to collect network, swap, loadavg, and boot time.\n- The function `host_statistics` is called to collect CPU and virtual memory data.\n- The function `IOServiceGetMatchingServices` is called to collect storage information.\n- The function `IOPSCopyPowerSourcesInfo` is called to collect battery and UPS power source data.\n- The private Apple IOReport framework is loaded at runtime to collect Apple Silicon GPU utilization, performance-state residency, clock frequency, and power draw without root privileges when macOS exposes the required channels.\n- AppleSMC and IOHID are sampled directly to collect hardware temperature, fan, voltage, current, and power sensors without requiring `powermetrics`.\n- The native Apple `powermetrics` command is sampled in continuous loop mode to collect thermal pressure, plus fallback SMC temperatures, fan speed, and fallback GPU power when the macOS sampler is available.\n- The native IOKit NVMe SMART user client is sampled to collect NVMe health data when macOS exposes readable SMART-capable NVMe services.\n\n\nThis collector is only supported on the following platforms:\n\n- macOS\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\nBattery, UPS power-source, native Apple Silicon GPU, direct AppleSMC/IOHID hardware sensors, and native NVMe SMART metrics do not require external tools. Apple Silicon GPU metrics use the private IOReport framework loaded at runtime and gracefully disappear when unavailable. Exact thermal pressure and fallback GPU-power readings use the native Apple `powermetrics` command, which requires `netdata` to run with sufficient macOS privileges. The default sampler falls back through available sampler sets; without required privileges, the thermal sampler disables itself after repeated startup probe failures.\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector auto-detects macOS power sources, Apple Silicon IOReport GPU channels, AppleSMC/IOHID hardware sensors, and readable NVMe SMART-capable services, and only creates charts for values exposed by the hardware and operating system.\n\n#### Limits\n\nPower-source, AppleSMC, IOHID, and NVMe SMART enumeration are capped internally to avoid unexpected chart cardinality. IOReport GPU sampling is in-process and single-device. The `powermetrics` sampler runs as one long-lived loop process and only publishes newly received samples.\n\n#### Performance Impact\n\nPower-source, direct IOHID sensor, and IOReport GPU collection are lightweight. AppleSMC sensor key discovery is rate-limited, and AppleSMC sensor values default to a ten-second cadence because AppleSMC reads can generate macOS CoreAnalytics log traffic. Native NVMe SMART reads default to the same ten-second cadence as the existing NVMe collector, while device discovery is rate-limited. Thermal pressure collection keeps one `powermetrics` process running in loop mode at a configurable output interval, defaulting to once per second.\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThere are eight sections in the file which you can configure:\n\n- `[plugin:macos:sysctl]` - Enable or disable monitoring for network, swap, loadavg, and boot time.\n- `[plugin:macos:mach_smi]` - Enable or disable monitoring for CPU and Virtual memory.\n- `[plugin:macos:iokit]` - Enable or disable monitoring for storage device.\n- `[plugin:macos:power_sources]` - Enable or disable battery and UPS power-source metrics.\n- `[plugin:macos:gpu]` - Enable or disable Apple Silicon IOReport GPU monitoring.\n- `[plugin:macos:sensors]` - Configure direct AppleSMC and IOHID hardware sensor monitoring.\n- `[plugin:macos:powermetrics]` - Configure thermal and fan sampling through native Apple `powermetrics`.\n- `[plugin:macos:nvme_smart]` - Configure native IOKit NVMe SMART sampling.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enable load average | Enable or disable monitoring of load average metrics (load1, load5, load15). | yes | no |\n| system swap | Enable or disable monitoring of system swap metrics (free, used). | yes | no |\n| bandwidth | Enable or disable monitoring of network bandwidth metrics (received, sent). | yes | no |\n| ipv4 TCP packets | Enable or disable monitoring of IPv4 TCP total packets metrics (received, sent). | yes | no |\n| ipv4 TCP errors | Enable or disable monitoring of IPv4 TCP packets metrics (Input Errors, Checksum, Retransmission segments). | yes | no |\n| ipv4 TCP handshake issues | Enable or disable monitoring of IPv4 TCP handshake metrics (Established Resets, Active Opens, Passive Opens, Attempt Fails). | yes | no |\n| ECN packets | Enable or disable monitoring of ECN statistics metrics (InCEPkts, InNoECTPkts). | auto | no |\n| TCP SYN cookies | Enable or disable monitoring of TCP SYN cookies metrics (received, sent, failed). | auto | no |\n| TCP out-of-order queue | Enable or disable monitoring of TCP out-of-order queue metrics (inqueue). | auto | no |\n| TCP connection aborts | Enable or disable monitoring of TCP connection aborts metrics (Bad Data, User closed, No memory, Timeout). | auto | no |\n| ipv4 UDP packets | Enable or disable monitoring of ipv4 UDP packets metrics (sent, received.). | yes | no |\n| ipv4 UDP errors | Enable or disable monitoring of ipv4 UDP errors metrics (Recieved Buffer error, Input Errors, No Ports, IN Checksum Errors, Ignore Multi). | yes | no |\n| ipv4 icmp packets | Enable or disable monitoring of IPv4 ICMP packets metrics (sent, received, in error, OUT error, IN Checksum error). | yes | no |\n| ipv4 icmp messages | Enable or disable monitoring of ipv4 ICMP messages metrics (I/O messages, I/O Errors, In Checksum). | yes | no |\n| ipv4 packets | Enable or disable monitoring of ipv4 packets metrics (received, sent, forwarded, delivered). | yes | no |\n| ipv4 fragments sent | Enable or disable monitoring of IPv4 fragments sent metrics (ok, fails, creates). | yes | no |\n| ipv4 fragments assembly | Enable or disable monitoring of IPv4 fragments assembly metrics (ok, failed, all). | yes | no |\n| ipv4 errors | Enable or disable monitoring of IPv4 errors metrics (I/O discard, I/O HDR errors, In Addr errors, In Unknown protos, OUT No Routes). | yes | no |\n| ipv6 packets | Enable or disable monitoring of IPv6 packets metrics (received, sent, forwarded, delivered). | auto | no |\n| ipv6 fragments sent | Enable or disable monitoring of IPv6 fragments sent metrics (ok, failed, all). | auto | no |\n| ipv6 fragments assembly | Enable or disable monitoring of IPv6 fragments assembly metrics (ok, failed, timeout, all). | auto | no |\n| ipv6 errors | Enable or disable monitoring of IPv6 errors metrics (I/O Discards, In Hdr Errors, In Addr Errors, In Truncaedd Packets, I/O No Routes). | auto | no |\n| icmp | Enable or disable monitoring of ICMP metrics (sent, received). | auto | no |\n| icmp redirects | Enable or disable monitoring of ICMP redirects metrics (received, sent). | auto | no |\n| icmp errors | Enable or disable monitoring of ICMP metrics (I/O Errors, In Checksums, In Destination Unreachable, In Packet too big, In Time Exceeds, In Parm Problem, Out Dest Unreachable, Out Timee Exceeds, Out Parm Problems.). | auto | no |\n| icmp echos | Enable or disable monitoring of ICMP echos metrics (I/O Echos, I/O Echo Reply). | auto | no |\n| icmp router | Enable or disable monitoring of ICMP router metrics (I/O Solicits, I/O Advertisements). | auto | no |\n| icmp neighbor | Enable or disable monitoring of ICMP neighbor metrics (I/O Solicits, I/O Advertisements). | auto | no |\n| icmp types | Enable or disable monitoring of ICMP types metrics (I/O Type1, I/O Type128, I/O Type129, Out Type133, Out Type135, In Type136, Out Type145). | auto | no |\n| space usage for all disks | Enable or disable monitoring of space usage for all disks metrics (available, used, reserved for root). | yes | no |\n| inodes usage for all disks | Enable or disable monitoring of inodes usage for all disks metrics (available, used, reserved for root). | yes | no |\n| bandwidth | Enable or disable monitoring of bandwidth metrics (received, sent). | yes | no |\n| system uptime | Enable or disable monitoring of system uptime metrics (uptime). | yes | no |\n| cpu utilization | Enable or disable monitoring of CPU utilization metrics (user, nice, system, idel). | yes | no |\n| system ram | Enable or disable monitoring of system RAM metrics (Active, Wired, throttled, compressor, inactive, purgeable, speculative, free). | yes | no |\n| swap i/o | Enable or disable monitoring of SWAP I/O metrics (I/O Swap). | yes | no |\n| memory page faults | Enable or disable monitoring of memory page faults metrics (memory, cow, I/O page, compress, decompress, zero fill, reactivate, purge). | yes | no |\n| disk i/o | Enable or disable monitoring of disk I/O metrics (In, Out). | yes | no |\n| battery capacity | Enable or disable monitoring of battery capacity metrics. | yes | no |\n| power supply voltage | Enable or disable monitoring of battery and UPS voltage metrics. | yes | no |\n| power supply current | Enable or disable monitoring of battery and UPS current metrics. | yes | no |\n| battery temperature | Enable or disable monitoring of battery temperature metrics when exposed by macOS. | yes | no |\n| battery cycle count | Enable or disable monitoring of battery cycle count metrics when exposed by macOS. | yes | no |\n| enabled | Enable or disable Apple Silicon GPU monitoring through IOReport. The module creates charts only when macOS exposes the required IOReport GPU channels. | yes | no |\n| SMC temperature sample every | How often to read AppleSMC GPU temperature keys when IOHID GPU temperature is unavailable and AppleSMC is used as the fallback source. | 10s | no |\n| enabled | Enable or disable direct AppleSMC and IOHID hardware sensor monitoring. | yes | no |\n| SMC sensors | Enable or disable direct AppleSMC hardware temperature, fan, voltage, current, and power sensor monitoring. | yes | no |\n| IOHID sensors | Enable or disable direct IOHID temperature, current, and voltage sensor monitoring. | yes | no |\n| discovery every | How often to rescan AppleSMC for available hardware sensor keys. | 300s | no |\n| SMC sample every | How often to read values from discovered AppleSMC hardware sensor keys. | 10s | no |\n| sample every | Output interval passed to the long-running native `powermetrics` loop sampler. | 1s | no |\n| sample window | One-shot sampling window used while probing which `powermetrics` sampler set is available. | 1000ms | no |\n| command timeout | Maximum extra time to wait for one `powermetrics` probe or loop sample before restarting the sampler. | 5000ms | no |\n| use ndsudo | Run the native Apple `powermetrics` sampler through Netdata\'s setuid `ndsudo` helper. | yes | no |\n| command path | Path to the native Apple `powermetrics` command when `use ndsudo` is disabled. | /usr/bin/powermetrics | no |\n| thermal pressure | Enable or disable monitoring of macOS thermal pressure state. | yes | no |\n| SMC fan speed | Enable or disable monitoring of SMC fan speed when available. | yes | no |\n| SMC temperatures | Enable or disable monitoring of SMC CPU and GPU die temperatures when available. | yes | no |\n| SMC thermal levels | Enable or disable monitoring of SMC thermal levels when available. | yes | no |\n| SMC prochot | Enable or disable monitoring of SMC processor-hot assertion flags when available. | yes | no |\n| GPU power | Enable or disable fallback GPU power monitoring from `powermetrics` when IOReport GPU power is unavailable and the `gpu_power` sampler exposes a value. | yes | no |\n| sample every | How often to read native NVMe SMART data through IOKit. | 10s | no |\n| discovery every | How often to rescan IORegistry for NVMe SMART-capable services. | 300s | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\n\n###### Disable swap monitoring\n\nA basic example that discards swap monitoring\n\n{% details open=true summary="Config" %}\n```yaml\n[plugin:macos:sysctl]\n system swap = no\n[plugin:macos:mach_smi]\n swap i/o = no\n\n```\n{% /details %}\n###### Disable complete Machine SMI section\n\nA basic example that discards swap monitoring\n\n{% details open=true summary="Config" %}\n```yaml\n[plugin:macos:mach_smi]\n cpu utilization = no\n system ram = no\n swap i/o = no\n memory page faults = no\n disk i/o = no\n\n```\n{% /details %}\n###### Disable thermal and fan sampling\n\nDisable the privileged `powermetrics` sampler while keeping the rest of `macos.plugin` enabled.\n\n{% details open=true summary="Config" %}\n```yaml\n[plugin:macos]\n powermetrics = no\n\n```\n{% /details %}\n###### Disable Apple Silicon GPU monitoring\n\nDisable IOReport GPU monitoring while keeping other macOS metrics enabled.\n\n{% details open=true summary="Config" %}\n```yaml\n[plugin:macos]\n gpu = no\n\n```\n{% /details %}\n###### Disable direct hardware sensor monitoring\n\nDisable direct AppleSMC and IOHID hardware sensor monitoring while keeping the rest of `macos.plugin` enabled.\n\n{% details open=true summary="Config" %}\n```yaml\n[plugin:macos]\n sensors = no\n\n```\n{% /details %}\n###### Disable native NVMe SMART sampling\n\nDisable native IOKit NVMe SMART health monitoring while keeping generic disk I/O monitoring enabled.\n\n{% details open=true summary="Config" %}\n```yaml\n[plugin:macos]\n nvme smart = no\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### GPU charts are missing\n\nApple Silicon GPU utilization, performance-state residency, clock frequency, and power draw charts require IOReport GPU channels. These channels are exposed by Apple Silicon GPU drivers and are not available on Intel Macs. The collector loads IOReport at runtime and disables the GPU module cleanly when the framework, DVFS table, or GPU channels are unavailable.\n\nGPU power may still appear from `powermetrics` on systems where the `gpu_power` sampler exposes a plist `gpu_power` value and IOReport GPU power is unavailable. GPU temperature uses direct SMC/IOHID reads from the GPU module when available; otherwise, the `powermetrics` SMC path can still provide the same GPU temperature metric.\n\n\n### Thermal and fan charts are missing\n\nDirect AppleSMC and IOHID hardware sensor charts do not depend on `powermetrics`. If temperature, fan, voltage, current, or power sensor charts are missing, the hardware or macOS driver may not expose readable AppleSMC or IOHID sensor values, or the `[plugin:macos:sensors]` module may be disabled.\n\nThe thermal pressure state chart depends on the native Apple `powermetrics` command. On macOS, `powermetrics` requires superuser privileges, so the default installation runs it through Netdata's setuid `ndsudo` helper with hard-coded allow-list entries for the probed sampler sets. Some Macs expose hardware sensors through AppleSMC while refusing `powermetrics`; in that case, hardware sensor charts can still appear while thermal pressure remains absent. If `ndsudo` is missing, not setuid root, or the allow-list rejects all startup probe commands, the sampler disables itself after repeated startup failures to avoid log noise. If the running loop exits later, Netdata probes again and restarts loop mode.\n\nBattery, UPS power-source, and IOReport GPU charts do not depend on `powermetrics` and should still appear when macOS exposes their data.\n\n\n### NVMe health charts are missing\n\nNative NVMe health charts appear only when macOS exposes NVMe SMART-capable services through IOKit and allows the native SMART user client to open them. The collector does not use `nvme-cli` or any external NVMe tool on macOS.\n\nIf generic disk I/O charts are present but NVMe health charts are absent, the device, controller, or macOS driver may not expose a readable native NVMe SMART user client. Some Apple internal Apple Fabric SSDs expose disk I/O and filesystem metrics but not detailed public NVMe health fields.\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ interface_speed ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.net | network interface ${label:device} current speed |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per macOS instance\n\nThese metrics refer to hardware and network monitoring.\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.cpu | user, nice, system, idle | percentage |\n| system.ram | active, wired, throttled, compressor, inactive, purgeable, speculative, free | MiB |\n| mem.swapio | io, out | KiB/s |\n| mem.pgfaults | memory, cow, pagein, pageout, compress, decompress, zero_fill, reactivate, purge | faults/s |\n| system.load | load1, load5, load15 | load |\n| mem.swap | free, used | MiB |\n| system.ipv4 | received, sent | kilobits/s |\n| ipv4.tcppackets | received, sent | packets/s |\n| ipv4.tcperrors | InErrs, InCsumErrors, RetransSegs | packets/s |\n| ipv4.tcphandshake | EstabResets, ActiveOpens, PassiveOpens, AttemptFails | events/s |\n| ipv4.tcpconnaborts | baddata, userclosed, nomemory, timeout | connections/s |\n| ipv4.tcpofo | inqueue | packets/s |\n| ipv4.tcpsyncookies | received, sent, failed | packets/s |\n| ipv4.ecnpkts | CEP, NoECTP | packets/s |\n| ipv4.udppackets | received, sent | packets/s |\n| ipv4.udperrors | RcvbufErrors, InErrors, NoPorts, InCsumErrors, IgnoredMulti | events/s |\n| ipv4.icmp | received, sent | packets/s |\n| ipv4.icmp_errors | InErrors, OutErrors, InCsumErrors | packets/s |\n| ipv4.icmpmsg | InEchoReps, OutEchoReps, InEchos, OutEchos | packets/s |\n| ipv4.packets | received, sent, forwarded, delivered | packets/s |\n| ipv4.fragsout | ok, failed, created | packets/s |\n| ipv4.fragsin | ok, failed, all | packets/s |\n| ipv4.errors | InDiscards, OutDiscards, InHdrErrors, OutNoRoutes, InAddrErrors, InUnknownProtos | packets/s |\n| ipv6.packets | received, sent, forwarded, delivers | packets/s |\n| ipv6.fragsout | ok, failed, all | packets/s |\n| ipv6.fragsin | ok, failed, timeout, all | packets/s |\n| ipv6.errors | InDiscards, OutDiscards, InHdrErrors, InAddrErrors, InTruncatedPkts, InNoRoutes, OutNoRoutes | packets/s |\n| ipv6.icmp | received, sent | messages/s |\n| ipv6.icmpredir | received, sent | redirects/s |\n| ipv6.icmperrors | InErrors, OutErrors, InCsumErrors, InDestUnreachs, InPktTooBigs, InTimeExcds, InParmProblems, OutDestUnreachs, OutTimeExcds, OutParmProblems | errors/s |\n| ipv6.icmpechos | InEchos, OutEchos, InEchoReplies, OutEchoReplies | messages/s |\n| ipv6.icmprouter | InSolicits, OutSolicits, InAdvertisements, OutAdvertisements | messages/s |\n| ipv6.icmpneighbor | InSolicits, OutSolicits, InAdvertisements, OutAdvertisements | messages/s |\n| ipv6.icmptypes | InType1, InType128, InType129, InType136, OutType1, OutType128, OutType129, OutType133, OutType135, OutType143 | messages/s |\n| system.uptime | uptime | seconds |\n| system.io | in, out | KiB/s |\n| macos.smc_thermal_level | cpu, gpu, io | level |\n| macos.smc_prochot | cpu, smc | status |\n\n### Per gpu\n\nThese metrics refer to macOS GPU monitoring.\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| source | Data source |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| macos.gpu_utilization | utilization | percentage |\n| macos.gpu_performance_state_residency | pstate_<index>_<mhz>mhz | percentage |\n| macos.gpu_clock_freq | frequency | MHz |\n| macos.gpu_power_draw | power_draw | W |\n| macos.gpu_temperature | temperature | degrees Celsius |\n\n### Per power source\n\nThese metrics refer to macOS battery and UPS power sources.\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device | Sanitized power-source name |\n| source | Data source |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powersupply.capacity | capacity | percentage |\n| powersupply.voltage | voltage | V |\n| powersupply.current | current | A |\n| powersupply.cycles | cycles | cycles |\n\n### Per sensor\n\nThese metrics refer to macOS battery, CPU, GPU, fan, voltage, current, power, and thermal sensors.\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| driver | Sensor driver or macOS API source compatible with Linux hardware sensor grouping |\n| subsystem | Hardware subsystem inferred from the sensor source, used with driver for Linux-compatible hardware sensor grouping |\n| chip_id | Sensor chip or macOS service identifier |\n| feature | Stable sensor feature identifier |\n| name | Human-readable sensor name |\n| path | Stable source path for the sensor |\n| source | Data source |\n| sensor | Sensor name |\n| device | Sanitized device name when available |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.hw.sensor.temperature.input | input | degrees Celsius |\n| system.hw.sensor.fan.input | input | rotations per minute |\n| system.hw.sensor.voltage.input | input | V |\n| system.hw.sensor.current.input | input | A |\n| system.hw.sensor.power.input | input | W |\n| system.hw.sensor.state.input | nominal, moderate, heavy, sleeping, trapping, undefined | status |\n\n### Per nvme device\n\nThese metrics refer to native macOS NVMe SMART-capable devices.\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device | Sanitized NVMe device name |\n| model_number | NVMe model number |\n| source | Data source |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nvme.device_estimated_endurance_perc | used | percentage |\n| nvme.device_available_spare_perc | spare | percentage |\n| nvme.device_composite_temperature | temperature | celsius |\n| nvme.device_io_transferred_count | read, written | bytes |\n| nvme.device_power_cycles_count | power | cycles |\n| nvme.device_power_on_time | power-on | seconds |\n| nvme.device_unsafe_shutdowns_count | unsafe | shutdowns |\n| nvme.device_critical_warnings_state | available_spare, temp_threshold, nvm_subsystem_reliability, read_only, volatile_mem_backup_failed, persistent_memory_read_only | state |\n| nvme.device_media_errors_rate | media | errors/s |\n| nvme.device_error_log_entries_rate | error_log | entries/s |\n\n### Per disk\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| disk.io | read, writes | KiB/s |\n| disk.ops | read, writes | operations/s |\n| disk.util | utilization | % of time working |\n| disk.iotime | reads, writes | milliseconds/s |\n| disk.await | reads, writes | milliseconds/operation |\n| disk.avgsz | reads, writes | KiB/operation |\n| disk.svctm | svctm | milliseconds/operation |\n\n### Per mount point\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| disk.space | avail, used, reserved_for_root | GiB |\n| disk.inodes | avail, used, reserved_for_root | inodes |\n\n### Per network device\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| net.net | received, sent | kilobits/s |\n| net.packets | received, sent, multicast_received, multicast_sent | packets/s |\n| net.errors | inbound, outbound | errors/s |\n| net.drops | inbound | drops/s |\n| net.events | frames, collisions, carrier | events/s |\n\n",integration_type:"collector",id:"macos.plugin-mach_smi-macOS",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/macos.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"network-viewer.plugin",module_name:"PerflibNetworkProtocols",monitored_instance:{name:"Windows Network Protocols",link:"https://learn.microsoft.com/en-us/windows/win32/networking",categories:["data-collection.networking"],icon_filename:"windows.svg"},alternative_monitored_instances:[],keywords:["network","tcp","udp","windows","perflib","segments","datagrams"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Windows Network Protocols\n\nPlugin: network-viewer.plugin\nModule: PerflibNetworkProtocols\n\n## Overview\n\nThis collector exposes TCP and UDP stack statistics on Windows systems via a real-time table function.\n\n\nIt queries the TCPv4, TCPv6, UDPv4, and UDPv6 objects from Windows Perflib,\ncombining the results into a single table grouped by transport protocol and IP family.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",functions:'## Live Data\n\nThis collector exposes real-time functions for viewing Windows network connections and TCP/UDP stack statistics.\n\n\n### Network Connections\n\nShows active network connections on Windows with protocol details, states, addresses,\nports, and process information.\n\nEach row represents one TCP connection or UDP endpoint and includes the socket direction\n(listen/inbound/outbound), protocol (tcp4/tcp6/udp4/udp6), TCP state, owning process\n(PID and name), username, server port name, local and remote addresses and ports,\naddress space classification (loopback/private/public/multicast/zero), and server port number.\n\nData is collected using the Windows IP Helper API (GetExtendedTcpTable,\nGetExtendedUdpTable) with process and user resolution via standard Windows APIs.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Perflibnetworkprotocols:network-connections` |\n| Require Cloud | no |\n| Performance | |\n| Security | |\n| Availability | |\n\n#### Prerequisites\n\nNo additional configuration is required.\n\n#### Parameters\n\nThis function has no parameters.\n\n#### Returns\n\n\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n\n### Network Protocols\n\nShows Windows TCP and UDP stack counters grouped by transport protocol (TCP/UDP)\nand IP family (IPv4/IPv6), and per-share SMB Server Shares traffic.\n\nEach row covers one transport+family combination (TCPv4, TCPv6, UDPv4, UDPv6) or one\nSMB share, and includes the transport\'s traffic counters (TCP/UDP: received, sent, errors;\nSMB: received bytes, sent bytes, active tree connections), the TCP-specific connection\ncounters (active opens, established, passive opens, resets, total segments, retransmitted\nsegments), the UDP-specific datagrams-with-no-port counter, and the SMB-specific\nactive tree connections, received bytes, and sent bytes columns.\n\nTwo stacked-bar charts are exposed: "Traffic" (TCP/UDP segments/datagrams, grouped by\ntransport or IP family) and "SMB Traffic" (per-share bytes, grouped by share name).\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Perflibnetworkprotocols:network-protocols` |\n| Require Cloud | no |\n| Performance | |\n| Security | |\n| Availability | |\n\n#### Prerequisites\n\nNo additional configuration is required.\n\n#### Parameters\n\nThis function has no parameters.\n\n#### Returns\n\n\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n\n',integration_type:"collector",id:"network-viewer.plugin-PerflibNetworkProtocols-Windows_Network_Protocols",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/network-viewer.plugin/metadata.yaml",related_resources:""},{meta:{id:"collector-network-viewer.plugin",plugin_name:"network-viewer.plugin",module_name:"network-viewer.plugin",monitored_instance:{name:"Network Connections",link:"",categories:["data-collection.networking"],icon_filename:"network.svg"},alternative_monitored_instances:[],keywords:["network","connections","sockets","tcp","udp","ports","freebsd","macos"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Network Connections\n\nPlugin: network-viewer.plugin\nModule: network-viewer.plugin\n\n## Overview\n\n\n\nThis plugin reads the system's socket tables to enumerate all active network connections,\nincluding TCP and UDP sockets in all states, for both IPv4 and IPv6.\n\nOn Linux it consumes `NETLINK_INET_DIAG` and the `/proc` socket tables;\non FreeBSD it walks `KERN_PROC_FILEDESC` and consults `net.inet.tcp.pcblist`\nto attribute sockets to processes.\nOn macOS it walks process file descriptors with `libproc` and reads socket\nmetadata with `PROC_PIDFDSOCKETINFO`. A non-privileged or TCC-restricted\nmacOS run can omit protected processes; the plugin logs a warning when\npermission-denied socket data or truncated process/socket list reads make\nresults incomplete.\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n- FreeBSD\n- macOS\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\nThe plugin needs privileged access to enumerate all process sockets. On macOS,\nnon-privileged or TCC-restricted runs can omit protected processes; the plugin\nlogs a warning when permission-denied socket data or truncated process/socket\nlist reads make results incomplete.\nGrant the Netdata plugin its normal privileged permissions and Full Disk Access\nwhen local policy requires it.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin automatically detects all active network connections on the system.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nOn macOS, the current established TCP count for `network-protocols` comes\nfrom a cached live socket inventory because macOS does not expose a cheap\nper-state TCP counter equivalent to FreeBSD's `net.inet.tcp.states`.\nThe cache is held for the Function response update window. Busy hosts\nwith many processes and file descriptors can make that path heavier than\nthe FreeBSD and Linux implementations.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nOptional APPS_LOOKUP cache-warming controls for topology and aggregated network-connection Functions.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| apps lookup cache size | Maximum number of per-PID APPS_LOOKUP cache entries kept by network-viewer.plugin. | 8192 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:network-viewer]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\n\n###### APPS_LOOKUP cache warming\n\nKeep the default APPS_LOOKUP cache size.\n\n{% details open=true summary="Config" %}\n```yaml\n[plugin:network-viewer]\n apps lookup cache size = 8192\n\n```\n{% /details %}\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per network-viewer plugin IPC\n\nnetwork-viewer.plugin APPS_LOOKUP client cache-warming health and latency.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| netdata.collector.ipc.apps_lookup.client.requests | requests_sent, requests_responded, requests_failed | requests/s |\n| netdata.collector.ipc.apps_lookup.client.cache | cache_hits, cache_misses_unknown, cache_misses_intake_dropped, cache_evictions_pid_reuse, cache_evictions_lru | events/s |\n| netdata.collector.ipc.apps_lookup.client.peer | peer_connect_attempts, peer_disconnects | events/s |\n| netdata.collector.ipc.apps_lookup.client.worker_request_duration_ms | le_1ms, le_5ms, le_10ms, le_50ms, le_100ms, le_500ms, le_1000ms, gt_1000ms | requests/s |\n| netdata.collector.ipc.apps_lookup.client.function_handler_overhead_ms | le_1ms, le_5ms, le_10ms, le_50ms, le_100ms, le_500ms, le_1000ms, gt_1000ms | calls/s |\n| netdata.collector.ipc.apps_lookup.client.intake_depth | intake_depth | pids |\n\n",functions:"## Live Data\n\nThis plugin exposes real-time functions for viewing active network connections and,\non FreeBSD and macOS, system-wide TCP and UDP stack statistics.\n\n\n### Network Connections\n\nShows active network connections with protocol details, states, addresses, ports, and performance metrics.\n\nProvides both aggregated and detailed views of TCP and UDP connections for IPv4 and IPv6,\nincluding connection direction (listen, inbound, outbound), process information,\ncgroup/container/service enrichment when available, and TCP performance metrics (RTT, retransmissions)\non platforms that expose those TCP details.\n\nOn Linux, connections are classified as system or container based on network namespace.\nOn FreeBSD, namespaces are not exposed to userspace and the classification is omitted.\nOn macOS, Linux-style namespaces and cgroups are not exposed by the host APIs; sockets\nare host/system scoped and container/service identity falls back to process identity.\nNon-privileged macOS runs may omit protected processes and log a warning when\npermission-denied socket data or truncated process/socket list reads make results\nincomplete.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Network-viewer.plugin:network-connections` |\n| Require Cloud | no |\n| Performance | |\n| Security | |\n| Availability | |\n\n#### Prerequisites\n\nNo additional configuration is required.\n\n#### Parameters\n\nThis function has no parameters.\n\n#### Returns\n\n\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n\n### Network Protocols\n\nShows FreeBSD and macOS TCP and UDP stack statistics grouped by transport protocol.\n\nEach row covers one transport (TCP or UDP) and reports IPv4+IPv6 combined\ntraffic counters (received, sent, errors), TCP-specific connection counters\n(active opens, currently established, passive opens, resets, total segments,\nretransmitted segments), and the UDP-specific datagrams-with-no-port counter.\n\nValues are per-second deltas sampled from `net.inet.tcp.stats` and\n`net.inet.udp.stats`. The current established TCP count comes from\n`net.inet.tcp.states` on FreeBSD and from cached live socket inventory on macOS.\nBusy macOS hosts with many processes and file descriptors can make that inventory\npath heavier than the FreeBSD counter path.\nThe first call after the plugin starts returns zeros for delta counters because\nthere is no previous sample to diff against.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Network-viewer.plugin:network-protocols` |\n| Require Cloud | no |\n| Performance | |\n| Security | |\n| Availability | FreeBSD and macOS. |\n\n#### Prerequisites\n\nNo additional configuration is required.\n\n#### Parameters\n\nThis function has no parameters.\n\n#### Returns\n\n\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n\n### Network Connections Topology\n\nShows active network connections as a topology graph with self, process or container, and endpoint actors.\n\nThe group_by selector controls the actor level. process_name groups sockets by process name, pid shows\none actor per PID with scalar per-PID information, and container groups sockets by canonical\ncontainer_name. For systemd services, container_name is the service name. For non-container,\nnon-service processes, container_name falls back to the process name. Unresolved cgroup\nnamespace-relative paths remain pending or process fallback identities instead of being\ndisplayed as raw `cri-containerd-*.scope` systemd scope names.\n\nFields that can vary across grouped processes, such as PID, UID, network namespace, command line,\ncgroup path, and detailed container metadata, are scalar columns in group_by:pid and merged actor\nlabels in grouped views. Free-form labels are hidden by default and can be allowed per request with\n`labels:<pattern>`, where patterns are pipe-separated. Actor modals also expose producer-declared\nProcesses and CGroups tables for the selected actor.\n\n\n| Aspect | Description |\n|:-------|:------------|\n| Name | `Network-viewer.plugin:topology:network-connections` |\n| Require Cloud | no |\n| Performance | group_by:container performs APPS_LOOKUP cache reads to derive canonical container_name; cache warming runs asynchronously. |\n| Security | Free-form labels are denied by default. Raw cgroup paths may expose operator-chosen path segments and are hidden in table views by default. |\n| Availability | container_name uses APPS_LOOKUP data when available, keeps retry-later lookups pending, and falls back to process name for host/root, permanently unknown, and unresolved namespace-relative cgroup cases. |\n\n#### Prerequisites\n\nNo additional configuration is required.\n\n#### Parameters\n\n| Parameter | Type | Description | Required | Default | Options |\n|:---------|:-----|:------------|:--------:|:--------|:--------|\n| Group By | select | Use group_by:process_name, group_by:pid, or group_by:container to select the topology actor level. | no | process_name | process_name (default), pid, container |\n| Labels | string | Optional pipe-separated simple-pattern whitelist for free-form actor labels. Omitted means deny all free-form labels. | no | | |\n\n#### Returns\n\nTopology payload using netdata.topology.v1.\n\n| Column | Type | Unit | Visibility | Description |\n|:-------|:-----|:-----|:-----------|:------------|\n| container_name | string | | | Canonical container/service actor name used by group_by:container. |\n| cgroup_path | string | | | Full cgroup path; scalar in group_by:pid and merged as actor labels in grouped views. |\n| cgroup_name | string | | | Cgroup or container display name; scalar in group_by:pid and merged as actor labels in grouped views. |\n| cgroup_status | string | | | Cgroup enrichment status: known, host_root, retry_later, unknown_permanent, or unknown. |\n| orchestrator | string | | | Container/orchestrator family; scalar in group_by:pid and merged as actor labels in grouped views. |\n| k8s_pod_name | string | | | Kubernetes pod name; scalar in group_by:pid and merged as actor labels in grouped views. |\n| k8s_namespace | string | | | Kubernetes namespace; scalar in group_by:pid and merged as actor labels in grouped views. |\n| k8s_workload | string | | | Kubernetes controller name; scalar in group_by:pid and merged as actor labels in grouped views. |\n| docker_container_name | string | | | Kubernetes container, Docker/Podman container, or cgroup fallback name; scalar in group_by:pid and merged as actor labels in grouped views. |\n| docker_image | string | | | Docker/Podman image label; scalar in group_by:pid and merged as actor labels in grouped views. |\n| systemd_unit_name | string | | | systemd unit name; scalar in group_by:pid and merged as actor labels in grouped views. |\n| systemd_unit_kind | string | | | systemd unit kind such as service, scope, or slice; scalar in group_by:pid and merged as actor labels in grouped views. |\n| actor_kind | string | | | Producer-derived actor kind used to classify containers, services, slices, scopes, VMs, and process fallbacks. |\n\n",integration_type:"collector",id:"network-viewer.plugin-network-viewer.plugin-Network_Connections",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/network-viewer.plugin/metadata.yaml",related_resources:""},{meta:{plugin_name:"nfacct.plugin",module_name:"nfacct.plugin",monitored_instance:{name:"Netfilter",link:"https://www.netfilter.org/",categories:["data-collection.networking"],icon_filename:"netfilter.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# Netfilter\n\nPlugin: nfacct.plugin\nModule: nfacct.plugin\n\n## Overview\n\nMonitor Netfilter metrics for optimal packet filtering and manipulation. Keep tabs on packet counts, dropped packets, and error rates to secure network operations.\n\nNetdata uses libmnl (https://www.netfilter.org/projects/libmnl/index.html) to collect information.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThis plugin needs setuid.\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis plugin uses socket to connect with netfilter to collect data\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Install required packages\n\nInstall `libmnl-dev` and `libnetfilter-acct-dev` using the package manager of your system.\n\n\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n| command options | Additinal parameters for collector | | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:nfacct]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Netfilter instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| netfilter.netlink_new | new, ignore, invalid | connections/s |\n| netfilter.netlink_changes | insert, delete, delete_list | changes/s |\n| netfilter.netlink_search | searched, search_restart, found | searches/s |\n| netfilter.netlink_errors | icmp_error, insert_failed, drop, early_drop | events/s |\n| netfilter.netlink_expect | created, deleted, new | expectations/s |\n| netfilter.nfacct_packets | a dimension per nfacct object | packets/s |\n| netfilter.nfacct_bytes | a dimension per nfacct object | kilobytes/s |\n\n",integration_type:"collector",id:"nfacct.plugin-nfacct.plugin-Netfilter",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/nfacct.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-otel.plugin-otel",plugin_name:"otel.plugin",module_name:"otel",monitored_instance:{name:"OpenTelemetry",link:"https://opentelemetry.io/",categories:["data-collection.cloud-and-devops"],icon_filename:"opentelemetry.svg"},alternative_monitored_instances:[],keywords:["opentelemetry","otel","otlp","grpc","metrics","logs","observability"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# OpenTelemetry\n\nPlugin: otel.plugin\nModule: otel\n\n## Overview\n\nThis plugin enables the Netdata Agent to receive OpenTelemetry metrics and logs\nvia the OTLP/gRPC protocol from any compatible source \u2014 collectors, SDKs, or\ninstrumented applications.\n\nMetrics are automatically visualized as Netdata charts with full alerting support.\nLogs are stored in systemd-compatible journal files and can be explored through\nthe Netdata Logs tab.\n\n\nThe plugin listens on a configurable gRPC endpoint for incoming OTLP data.\n\nIncoming metrics are mapped to Netdata charts using YAML mapping rules placed in the\nchart configs directory (default `/etc/netdata/otel.d/v1/metrics/`). Each file can\ncontain entries that match metrics by instrumentation scope and metric name, and control\nhow data point attributes translate to chart instances and dimensions. Per-metric\noverrides for the collection interval and grace period are also supported. Without a\nmatching rule, the plugin creates charts using default settings. Charts with no incoming\ndata are automatically expired and removed.\n\n| Mapping file option | Description |\n|:--------------------|:------------|\n| `instrumentation_scope.name` | Regex to match the instrumentation scope name |\n| `instrumentation_scope.version` | Regex to match the instrumentation scope version |\n| `dimension_attribute_key` | Data point attribute whose value becomes the dimension name |\n| `interval_secs` | Per-metric collection interval override (1\u20133600 seconds) |\n| `grace_period_secs` | Per-metric grace period override |\n\nIncoming logs are written to journal files with configurable rotation and retention\npolicies.\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe plugin starts automatically and listens on `127.0.0.1:4317` for incoming OTLP/gRPC connections.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### OpenTelemetry data source\n\nAn OpenTelemetry Collector, SDK, or instrumented application configured to send OTLP data\nto the Netdata agent\'s gRPC endpoint.\n\n\n\n### Configuration\n\n#### Options\n\nThe plugin is configured via `otel.yaml` in the Netdata configuration directory.\nOnly the fields you want to change need to be specified.\n\nAny option can also be overridden via environment variables with the `NETDATA_OTEL_`\nprefix (highest priority). The variable name is the config option in all caps with\ndots replaced by underscores \u2014 e.g. `endpoint.tls_cert_path` becomes\n`NETDATA_OTEL_ENDPOINT_TLS_CERT_PATH`.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| endpoint.path | gRPC endpoint to listen on for incoming OTLP data. | 127.0.0.1:4317 | no |\n| endpoint.tls_cert_path | Path to TLS certificate file. Enables TLS when provided. | | no |\n| endpoint.tls_key_path | Path to TLS private key file. Required when TLS certificate is provided. | | no |\n| endpoint.tls_ca_cert_path | Path to TLS CA certificate file for client authentication. | | no |\n| [metrics.chart_configs_dir](#option-metrics-chart-configs-dir) | Directory containing metric mapping YAML files. | /etc/netdata/otel.d/v1/metrics/ | no |\n| metrics.interval_secs | Collection interval in seconds (1\u20133600). Defines the Netdata chart update frequency. | 10 | no |\n| metrics.grace_period_secs | Grace period in seconds. After the last data point, the plugin waits this long before gap-filling. | 60 | no |\n| metrics.expiry_duration_secs | Expiry duration in seconds. Charts with no data for this long are removed. | 900 | no |\n| [metrics.max_new_charts_per_request](#option-metrics-max-new-charts-per-request) | Maximum new charts created per gRPC request. | 100 | no |\n| logs.journal_dir | Directory to store journal files for ingested logs. | | yes |\n| logs.size_of_journal_file | Maximum file size before rotating to a new journal file. | 100MB | no |\n| logs.entries_of_journal_file | Maximum log entries per journal file. | 50000 | no |\n| logs.duration_of_journal_file | Maximum time span within a single journal file. | 2 hours | no |\n| logs.number_of_journal_files | Maximum number of journal files to keep. | 10 | no |\n| logs.size_of_journal_files | Maximum total size of all journal files. | 1GB | no |\n| logs.duration_of_journal_files | Maximum age of journal files. | 7 days | no |\n| [logs.store_otlp_json](#option-logs-store-otlp-json) | Store the complete OTLP JSON in each log entry. | no | no |\n\n<a id="option-metrics-chart-configs-dir"></a>\n##### metrics.chart_configs_dir\n\nEach file defines how OTLP metrics are mapped to Netdata charts.\nFiles can match metrics by instrumentation scope and name, set the\ndimension attribute key, and override timing parameters. The plugin\nships stock mappings; user files in this directory take priority.\n\n\n<a id="option-metrics-max-new-charts-per-request"></a>\n##### metrics.max_new_charts_per_request\n\nLimits cardinality explosion from high-cardinality label combinations.\n\n\n<a id="option-logs-store-otlp-json"></a>\n##### logs.store_otlp_json\n\nUseful for debugging and reprocessing, but increases storage usage.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `otel.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config otel.yaml\n```\n\n##### Examples\n\n###### Basic configuration\n\nListen on default endpoint with default settings.\n\n```yaml\nendpoint:\n path: "127.0.0.1:4317"\nmetrics:\n chart_configs_dir: /etc/netdata/otel.d/v1/metrics/\n interval_secs: 10\n grace_period_secs: 60\n expiry_duration_secs: 900\n max_new_charts_per_request: 100\nlogs:\n journal_dir: /var/log/netdata/otel-journals\n\n```\n###### Partial user override\n\nOverride only specific fields in the user config. All other settings\nare inherited from the stock config. Unknown fields are ignored for\nforward compatibility.\n\n\n{% details open=true summary="Config" %}\n```yaml\nendpoint:\n path: "0.0.0.0:4317"\nlogs:\n number_of_journal_files: 20\n duration_of_journal_files: "14 days"\n\n```\n{% /details %}\n###### Metric mapping file\n\nPlace YAML files like this in `/etc/netdata/otel.d/v1/metrics/` to control how\nOTLP metrics are mapped to Netdata charts. This example maps metrics from the\nOpenTelemetry Collector hostmetrics receiver.\n\n\n{% details open=true summary="Config" %}\n```yaml\nmetrics:\n "system.network.connections":\n - instrumentation_scope:\n name: .*hostmetricsreceiver.*networkscraper$\n dimension_attribute_key: state\n\n "system.cpu.utilization":\n - instrumentation_scope:\n name: .*hostmetricsreceiver.*cpuscraper$\n dimension_attribute_key: state\n\n "system.memory.usage":\n - instrumentation_scope:\n name: .*hostmetricsreceiver.*memoryscraper$\n dimension_attribute_key: state\n interval_secs: 5\n\n```\n{% /details %}\n###### TLS-enabled configuration\n\nListen with TLS enabled for secure connections.\n\n{% details open=true summary="Config" %}\n```yaml\nendpoint:\n path: "0.0.0.0:4317"\n tls_cert_path: /etc/netdata/ssl/cert.pem\n tls_key_path: /etc/netdata/ssl/key.pem\nmetrics:\n chart_configs_dir: /etc/netdata/otel.d/v1/metrics/\n interval_secs: 10\n grace_period_secs: 60\n expiry_duration_secs: 900\n max_new_charts_per_request: 100\nlogs:\n journal_dir: /var/log/netdata/otel-journals\n\n```\n{% /details %}\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics are dynamically created based on the OpenTelemetry data received.\nThe specific metrics depend on the OTLP sources sending data to the plugin.\n\n",integration_type:"collector",id:"otel.plugin-otel-OpenTelemetry",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netdata-otel/otel-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"perf.plugin",module_name:"perf.plugin",monitored_instance:{name:"CPU performance",link:"https://kernel.org/",categories:["data-collection.operating-systems"],icon_filename:"bolt.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["linux","cpu performance","cpu cache","perf.plugin"]},overview:"# CPU performance\n\nPlugin: perf.plugin\nModule: perf.plugin\n\n## Overview\n\nThis collector monitors CPU performance metrics about cycles, instructions, migrations, cache operations and more.\n\nIt uses syscall (2) to open a file descriptor to monitor the perf events.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nIt needs setuid to use the necessary syscall to collect perf events. Netdata sets the permission during installation time.\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Install perf plugin\n\nIf you are [using our official native DEB/RPM packages](https://github.com/netdata/netdata/blob/master/packaging/installer/UPDATE.md#determine-which-installation-method-you-used), make sure the `netdata-plugin-perf` package is installed.\n\n\n#### Enable the perf plugin\n\nThe plugin is disabled by default because the number of PMUs is usually quite limited and it is not desired to allow Netdata to struggle silently for PMUs, interfering with other performance monitoring software.\n\nTo enable it, use `edit-config` from the Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md), which is typically at `/etc/netdata`, to edit the `netdata.conf` file.\n\n```bash\ncd /etc/netdata # Replace this path with your Netdata config directory, if different\nsudo ./edit-config netdata.conf\n```\n\nChange the value of the `perf` setting to `yes` in the `[plugins]` section. Save the file and restart the Netdata Agent with `sudo systemctl restart netdata`, or the [appropriate method](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/start-stop-restart.md) for your system.\n\n\n\n### Configuration\n\n#### Options\n\nYou can get the available options running:\n\n```bash\n/usr/libexec/netdata/plugins.d/perf.plugin --help\n````\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n| command options | Command options that specify charts shown by the plugin. `cycles`, `instructions`, `branch`, `cache`, `bus`, `stalled`, `migrations`, `alignment`, `emulation`, `L1D`, `L1D-prefetch`, `L1I`, `LL`, `DTLB`, `ITLB`, `PBU`. | 1 | yes |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:perf]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\n\n###### All metrics\n\nMonitor all metrics available.\n\n```yaml\n[plugin:perf]\n command options = all\n\n```\n###### CPU cycles\n\nMonitor CPU cycles.\n\n{% details open=true summary="Config" %}\n```yaml\n[plugin:perf]\n command options = cycles\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\nYou can run `perf.plugin` with the debug option enabled to troubleshoot issues with it. The output should give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `perf.plugin` in debug mode:\n\n ```bash\n ./perf.plugin 1 all debug\n ```\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per CPU performance instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| perf.cpu_cycles | cpu, ref_cpu | cycles/s |\n| perf.instructions | instructions | instructions/s |\n| perf.instructions_per_cycle | ipc | instructions/cycle |\n| perf.branch_instructions | instructions, misses | instructions/s |\n| perf.cache | references, misses | operations/s |\n| perf.bus_cycles | bus | cycles/s |\n| perf.stalled_cycles | frontend, backend | cycles/s |\n| perf.migrations | migrations | migrations |\n| perf.alignment_faults | faults | faults |\n| perf.emulation_faults | faults | faults |\n| perf.l1d_cache | read_access, read_misses, write_access, write_misses | events/s |\n| perf.l1d_cache_prefetch | prefetches | prefetches/s |\n| perf.l1i_cache | read_access, read_misses | events/s |\n| perf.ll_cache | read_access, read_misses, write_access, write_misses | events/s |\n| perf.dtlb_cache | read_access, read_misses, write_access, write_misses | events/s |\n| perf.itlb_cache | read_access, read_misses | events/s |\n| perf.pbu_cache | read_access | events/s |\n\n",integration_type:"collector",id:"perf.plugin-perf.plugin-CPU_performance",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/perf.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/diskstats",monitored_instance:{name:"Disk Statistics",link:"",categories:["data-collection.storage"],icon_filename:"hard-drive.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["disk","disks","io","block devices"]},overview:"# Disk Statistics\n\nPlugin: proc.plugin\nModule: /proc/diskstats\n\n## Overview\n\nDetailed statistics for each of your system's disk devices and partitions.\nThe data is reported by the kernel and can be used to monitor disk activity on a Linux system.\n\nGet valuable insight into how your disks are performing and where potential bottlenecks might be.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ 10min_disk_backlog ](https://github.com/netdata/netdata/blob/master/src/health/health.d/disks.conf) | disk.backlog | average backlog size of the ${label:device} disk over the last 10 minutes |\n| [ 10min_disk_utilization ](https://github.com/netdata/netdata/blob/master/src/health/health.d/disks.conf) | disk.util | average percentage of time ${label:device} disk was busy over the last 10 minutes |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Disk Statistics instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.io | in, out | KiB/s |\n\n### Per disk\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device | Kernel-assigned name of the block device (for example sda, nvme0n1, or fd0). This is a device name, not a mount-point path. |\n| mount_point | Directory where the device's filesystem is mounted (for example /, /run, /dev, or /dev/shm). Shows [none] for devices that are not mounted. |\n| device_type | How Netdata classifies the device: physical (a real disk), partition (a slice of a physical disk), virtual (a logical or software-backed device such as LVM or device-mapper), or unknown. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| disk.io | reads, writes | KiB/s |\n| disk_ext.io | discards | KiB/s |\n| disk.ops | reads, writes | operations/s |\n| disk_ext.ops | discards, flushes | operations/s |\n| disk.qops | operations | operations |\n| disk.backlog | backlog | milliseconds |\n| disk.busy | busy | milliseconds |\n| disk.util | utilization | % of time working |\n| disk.mops | reads, writes | merged operations/s |\n| disk_ext.mops | discards | merged operations/s |\n| disk.iotime | reads, writes | milliseconds/s |\n| disk_ext.iotime | discards, flushes | milliseconds/s |\n| disk.await | reads, writes | milliseconds/operation |\n| disk_ext.await | discards, flushes | milliseconds/operation |\n| disk.avgsz | reads, writes | KiB/operation |\n| disk_ext.avgsz | discards | KiB/operation |\n| disk.svctm | svctm | milliseconds/operation |\n\n",integration_type:"collector",id:"proc.plugin-/proc/diskstats-Disk_Statistics",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/interrupts",monitored_instance:{name:"Interrupts",link:"",categories:["data-collection.operating-systems"],icon_filename:"linuxserver.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["interrupts"]},overview:"# Interrupts\n\nPlugin: proc.plugin\nModule: /proc/interrupts\n\n## Overview\n\nMonitors `/proc/interrupts`, a file organized by CPU and then by the type of interrupt.\nThe numbers reported are the counts of the interrupts that have occurred of each type.\n\nAn interrupt is a signal to the processor emitted by hardware or software indicating an event that needs\nimmediate attention. The processor then interrupts its current activities and executes the interrupt handler\nto deal with the event. This is part of the way a computer multitasks and handles concurrent processing.\n\nThe types of interrupts include:\n\n- **I/O interrupts**: These are caused by I/O devices like the keyboard, mouse, printer, etc. For example, when\n you type something on the keyboard, an interrupt is triggered so the processor can handle the new input.\n\n- **Timer interrupts**: These are generated at regular intervals by the system's timer circuit. It's primarily\n used to switch the CPU among different tasks.\n\n- **Software interrupts**: These are generated by a program requiring disk I/O operations, or other system resources.\n\n- **Hardware interrupts**: These are caused by hardware conditions such as power failure, overheating, etc.\n\nMonitoring `/proc/interrupts` can be used for:\n\n- **Performance tuning**: If an interrupt is happening very frequently, it could be a sign that a device is not\n configured correctly, or there is a software bug causing unnecessary interrupts. This could lead to system\n performance degradation.\n\n- **System troubleshooting**: If you're seeing a lot of unexpected interrupts, it could be a sign of a hardware problem.\n\n- **Understanding system behavior**: More generally, keeping an eye on what interrupts are occurring can help you\n understand what your system is doing. It can provide insights into the system's interaction with hardware,\n drivers, and other parts of the kernel.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Interrupts instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.interrupts | a dimension per device | interrupts/s |\n\n### Per cpu core\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cpu | TBD |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cpu.interrupts | a dimension per device | interrupts/s |\n\n",integration_type:"collector",id:"proc.plugin-/proc/interrupts-Interrupts",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/loadavg",monitored_instance:{name:"System Load Average",link:"",categories:["data-collection.operating-systems"],icon_filename:"linuxserver.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["load","load average"]},overview:"# System Load Average\n\nPlugin: proc.plugin\nModule: /proc/loadavg\n\n## Overview\n\nThe `/proc/loadavg` file provides information about the system load average.\n\nThe load average is a measure of the amount of computational work that a system performs. It is a\nrepresentation of the average system load over a period of time.\n\nThis file contains three numbers representing the system load averages for the last 1, 5, and 15 minutes,\nrespectively. It also includes the currently running processes and the total number of processes.\n\nMonitoring the load average can be used for:\n\n- **System performance**: If the load average is too high, it may indicate that your system is overloaded.\n On a system with a single CPU, if the load average is 1, it means the single CPU is fully utilized. If the\n load averages are consistently higher than the number of CPUs/cores, it may indicate that your system is\n overloaded and tasks are waiting for CPU time.\n\n- **Troubleshooting**: If the load average is unexpectedly high, it can be a sign of a problem. This could be\n due to a runaway process, a software bug, or a hardware issue.\n\n- **Capacity planning**: By monitoring the load average over time, you can understand the trends in your\n system's workload. This can help with capacity planning and scaling decisions.\n\nRemember that load average not only considers CPU usage, but also includes processes waiting for disk I/O.\nTherefore, high load averages could be due to I/O contention as well as CPU contention.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ load_cpu_number ](https://github.com/netdata/netdata/blob/master/src/health/health.d/load.conf) | system.load | number of active CPU cores in the system |\n| [ load_average_15 ](https://github.com/netdata/netdata/blob/master/src/health/health.d/load.conf) | system.load | system fifteen-minute load average |\n| [ load_average_5 ](https://github.com/netdata/netdata/blob/master/src/health/health.d/load.conf) | system.load | system five-minute load average |\n| [ load_average_1 ](https://github.com/netdata/netdata/blob/master/src/health/health.d/load.conf) | system.load | system one-minute load average |\n| [ active_processes ](https://github.com/netdata/netdata/blob/master/src/health/health.d/processes.conf) | system.active_processes | system process IDs (PID) space utilization |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per System Load Average instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.load | load1, load5, load15 | load |\n| system.active_processes | active | processes |\n\n",integration_type:"collector",id:"proc.plugin-/proc/loadavg-System_Load_Average",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/mdstat",monitored_instance:{name:"MD RAID",link:"",categories:["data-collection.storage"],icon_filename:"hard-drive.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["raid","mdadm","mdstat","raid"]},overview:"# MD RAID\n\nPlugin: proc.plugin\nModule: /proc/mdstat\n\n## Overview\n\nThis integration monitors the status of MD RAID devices.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ mdstat_last_collected ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mdstat.conf) | md.disks | number of seconds since the last successful data collection |\n| [ mdstat_disks ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mdstat.conf) | md.disks | number of devices in the down state for the ${label:device} ${label:raid_level} array. Any number > 0 indicates that the array is degraded. |\n| [ mdstat_mismatch_cnt ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mdstat.conf) | md.mismatch_cnt | number of unsynchronized blocks for the ${label:device} ${label:raid_level} array |\n| [ mdstat_nonredundant_last_collected ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mdstat.conf) | md.nonredundant | number of seconds since the last successful data collection |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per MD RAID instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| md.health | a dimension per md array | failed disks |\n\n### Per md array\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device | TBD |\n| raid_level | TBD |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| md.disks | inuse, down | disks |\n| md.mismatch_cnt | count | unsynchronized blocks |\n| md.status | check, resync, recovery, reshape | percent |\n| md.expected_time_until_operation_finish | finish_in | seconds |\n| md.operation_speed | speed | KiB/s |\n| md.nonredundant | available | boolean |\n\n",integration_type:"collector",id:"proc.plugin-/proc/mdstat-MD_RAID",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/meminfo",monitored_instance:{name:"Memory Usage",link:"",categories:["data-collection.operating-systems"],icon_filename:"linuxserver.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["memory","ram","available","committed"]},overview:"# Memory Usage\n\nPlugin: proc.plugin\nModule: /proc/meminfo\n\n## Overview\n\n`/proc/meminfo` provides detailed information about the system's current memory usage. It includes information\nabout different types of memory, RAM, Swap, ZSwap, HugePages, Transparent HugePages (THP), Kernel memory,\nSLAB memory, memory mappings, and more.\n\nMonitoring /proc/meminfo can be useful for:\n\n- **Performance Tuning**: Understanding your system's memory usage can help you make decisions about system\n tuning and optimization. For example, if your system is frequently low on free memory, it might benefit\n from more RAM.\n\n- **Troubleshooting**: If your system is experiencing problems, `/proc/meminfo` can provide clues about\n whether memory usage is a factor. For example, if your system is slow and cached swap is high, it could\n mean that your system is swapping out a lot of memory to disk, which can degrade performance.\n\n- **Capacity Planning**: By monitoring memory usage over time, you can understand trends and make informed\n decisions about future capacity needs.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ ram_in_use ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ram.conf) | system.ram | system memory utilization |\n| [ ram_available ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ram.conf) | mem.available | percentage of estimated amount of RAM available for userspace processes, without causing swapping |\n| [ used_swap ](https://github.com/netdata/netdata/blob/master/src/health/health.d/swap.conf) | mem.swap | swap memory utilization |\n| [ 1hour_memory_hw_corrupted ](https://github.com/netdata/netdata/blob/master/src/health/health.d/memory.conf) | mem.hwcorrupt | amount of memory corrupted due to a hardware failure |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Memory Usage instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.ram | free, used, cached, buffers | MiB |\n| mem.available | avail | MiB |\n| mem.swap | free, used | MiB |\n| mem.swap_cached | cached | MiB |\n| mem.zswap | in-ram, on-disk | MiB |\n| mem.hwcorrupt | HardwareCorrupted | MiB |\n| mem.commited | Commited_AS | MiB |\n| mem.writeback | Dirty, Writeback, FuseWriteback, NfsWriteback, Bounce | MiB |\n| mem.kernel | Slab, KernelStack, PageTables, VmallocUsed, Percpu | MiB |\n| mem.slab | reclaimable, unreclaimable | MiB |\n| mem.hugepages | free, used, surplus, reserved | MiB |\n| mem.thp | anonymous, shmem | MiB |\n| mem.thp_details | ShmemPmdMapped, FileHugePages, FilePmdMapped | MiB |\n| mem.reclaiming | Active, Inactive, Active(anon), Inactive(anon), Active(file), Inactive(file), Unevictable, Mlocked | MiB |\n| mem.high_low | high_used, low_used, high_free, low_free | MiB |\n| mem.cma | used, free | MiB |\n| mem.directmaps | 4k, 2m, 4m, 1g | MiB |\n\n",integration_type:"collector",id:"proc.plugin-/proc/meminfo-Memory_Usage",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/net/dev",monitored_instance:{name:"Network interfaces",link:"",categories:["data-collection.networking"],icon_filename:"network-wired.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["network interfaces"]},overview:"# Network interfaces\n\nPlugin: proc.plugin\nModule: /proc/net/dev\n\n## Overview\n\nMonitor network interface metrics about bandwidth, state, errors and more.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ interface_speed ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.net | network interface ${label:device} current speed |\n| [ 1m_received_traffic_overflow ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.net | average inbound utilization for the network interface ${label:device} over the last minute |\n| [ 1m_sent_traffic_overflow ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.net | average outbound utilization for the network interface ${label:device} over the last minute |\n| [ inbound_packets_dropped_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.drops | ratio of inbound dropped packets for the network interface ${label:device} over the last 10 minutes |\n| [ outbound_packets_dropped_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.drops | ratio of outbound dropped packets for the network interface ${label:device} over the last 10 minutes |\n| [ wifi_inbound_packets_dropped_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.drops | ratio of inbound dropped packets for the network interface ${label:device} over the last 10 minutes |\n| [ wifi_outbound_packets_dropped_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.drops | ratio of outbound dropped packets for the network interface ${label:device} over the last 10 minutes |\n| [ 1m_received_packets_rate ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.packets | average number of packets received by the network interface ${label:device} over the last minute |\n| [ 10s_received_packets_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.packets | ratio of average number of received packets for the network interface ${label:device} over the last 10 seconds, compared to the rate over the last minute |\n| [ 10min_fifo_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.fifo | number of FIFO errors for the network interface ${label:device} in the last 10 minutes |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Network interfaces instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.net | received, sent | kilobits/s |\n\n### Per network device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| interface_type | TBD |\n| device | TBD |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| net.net | received, sent | kilobits/s |\n| net.speed | speed | kilobits/s |\n| net.duplex | full, half, unknown | state |\n| net.operstate | up, down, notpresent, lowerlayerdown, testing, dormant, unknown | state |\n| net.carrier | up, down | state |\n| net.mtu | mtu | octets |\n| net.packets | received, sent, multicast | packets/s |\n| net.errors | inbound, outbound | errors/s |\n| net.drops | inbound, outbound | drops/s |\n| net.fifo | receive, transmit | errors |\n| net.compressed | received, sent | packets/s |\n| net.events | frames, collisions, carrier | events/s |\n\n",integration_type:"collector",id:"proc.plugin-/proc/net/dev-Network_interfaces",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/net/ip_vs_stats",monitored_instance:{name:"IP Virtual Server",link:"",categories:["data-collection.networking"],icon_filename:"network-wired.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["ip virtual server"]},overview:"# IP Virtual Server\n\nPlugin: proc.plugin\nModule: /proc/net/ip_vs_stats\n\n## Overview\n\nThis integration monitors IP Virtual Server statistics\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per IP Virtual Server instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipvs.sockets | connections | connections/s |\n| ipvs.packets | received, sent | packets/s |\n| ipvs.net | received, sent | kilobits/s |\n\n",integration_type:"collector",id:"proc.plugin-/proc/net/ip_vs_stats-IP_Virtual_Server",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/net/netstat",monitored_instance:{name:"Network statistics",link:"",categories:["data-collection.networking"],icon_filename:"network-wired.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["ip","udp","udplite","icmp","netstat","snmp"]},overview:"# Network statistics\n\nPlugin: proc.plugin\nModule: /proc/net/netstat\n\n## Overview\n\nThis integration provides metrics from the `netstat`, `snmp` and `snmp6` modules.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ 1m_tcp_syn_queue_drops ](https://github.com/netdata/netdata/blob/master/src/health/health.d/tcp_listen.conf) | ip.tcp_syn_queue | average number of SYN requests was dropped due to the full TCP SYN queue over the last minute (SYN cookies were not enabled) |\n| [ 1m_tcp_syn_queue_cookies ](https://github.com/netdata/netdata/blob/master/src/health/health.d/tcp_listen.conf) | ip.tcp_syn_queue | average number of sent SYN cookies due to the full TCP SYN queue over the last minute |\n| [ 1m_tcp_accept_queue_overflows ](https://github.com/netdata/netdata/blob/master/src/health/health.d/tcp_listen.conf) | ip.tcp_accept_queue | average number of overflows in the TCP accept queue over the last minute |\n| [ 1m_tcp_accept_queue_drops ](https://github.com/netdata/netdata/blob/master/src/health/health.d/tcp_listen.conf) | ip.tcp_accept_queue | average number of dropped packets in the TCP accept queue over the last minute |\n| [ tcp_connections ](https://github.com/netdata/netdata/blob/master/src/health/health.d/tcp_conn.conf) | ip.tcpsock | TCP connections utilization |\n| [ 1m_ip_tcp_resets_sent ](https://github.com/netdata/netdata/blob/master/src/health/health.d/tcp_resets.conf) | ip.tcphandshake | average number of sent TCP RESETS over the last minute |\n| [ 10s_ip_tcp_resets_sent ](https://github.com/netdata/netdata/blob/master/src/health/health.d/tcp_resets.conf) | ip.tcphandshake | average number of sent TCP RESETS over the last 10 seconds. This can indicate a port scan, or that a service running on this host has crashed. Netdata will not send a clear notification for this alarm. |\n| [ 1m_ip_tcp_resets_received ](https://github.com/netdata/netdata/blob/master/src/health/health.d/tcp_resets.conf) | ip.tcphandshake | average number of received TCP RESETS over the last minute |\n| [ 10s_ip_tcp_resets_received ](https://github.com/netdata/netdata/blob/master/src/health/health.d/tcp_resets.conf) | ip.tcphandshake | average number of received TCP RESETS over the last 10 seconds. This can be an indication that a service this host needs has crashed. Netdata will not send a clear notification for this alarm. |\n| [ 1m_ipv4_udp_receive_buffer_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/udp_errors.conf) | ipv4.udperrors | average number of UDP receive buffer errors over the last minute |\n| [ 1m_ipv4_udp_send_buffer_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/udp_errors.conf) | ipv4.udperrors | average number of UDP send buffer errors over the last minute |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Network statistics instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.ip | received, sent | kilobits/s |\n| ip.tcpmemorypressures | pressures | events/s |\n| ip.tcpconnaborts | baddata, userclosed, nomemory, timeout, linger, failed | connections/s |\n| ip.tcpreorders | timestamp, sack, fack, reno | packets/s |\n| ip.tcpofo | inqueue, dropped, merged, pruned | packets/s |\n| ip.tcpsyncookies | received, sent, failed | packets/s |\n| ip.tcp_syn_queue | drops, cookies | packets/s |\n| ip.tcp_accept_queue | overflows, drops | packets/s |\n| ip.tcpsock | connections | active connections |\n| ip.tcppackets | received, sent | packets/s |\n| ip.tcperrors | InErrs, InCsumErrors, RetransSegs | packets/s |\n| ip.tcpopens | active, passive | connections/s |\n| ip.tcphandshake | EstabResets, OutRsts, AttemptFails, SynRetrans | events/s |\n| ipv4.packets | received, sent, forwarded, delivered | packets/s |\n| ipv4.errors | InDiscards, OutDiscards, InNoRoutes, OutNoRoutes, InHdrErrors, InAddrErrors, InTruncatedPkts, InCsumErrors | packets/s |\n| ipv4.bcast | received, sent | kilobits/s |\n| ipv4.bcastpkts | received, sent | packets/s |\n| ipv4.mcast | received, sent | kilobits/s |\n| ipv4.mcastpkts | received, sent | packets/s |\n| ipv4.icmp | received, sent | packets/s |\n| ipv4.icmpmsg | InEchoReps, OutEchoReps, InDestUnreachs, OutDestUnreachs, InRedirects, OutRedirects, InEchos, OutEchos, InRouterAdvert, OutRouterAdvert, InRouterSelect, OutRouterSelect, InTimeExcds, OutTimeExcds, InParmProbs, OutParmProbs, InTimestamps, OutTimestamps, InTimestampReps, OutTimestampReps | packets/s |\n| ipv4.icmp_errors | InErrors, OutErrors, InCsumErrors | packets/s |\n| ipv4.udppackets | received, sent | packets/s |\n| ipv4.udperrors | RcvbufErrors, SndbufErrors, InErrors, NoPorts, InCsumErrors, IgnoredMulti | events/s |\n| ipv4.udplite | received, sent | packets/s |\n| ipv4.udplite_errors | RcvbufErrors, SndbufErrors, InErrors, NoPorts, InCsumErrors, IgnoredMulti | packets/s |\n| ipv4.ecnpkts | CEP, NoECTP, ECTP0, ECTP1 | packets/s |\n| ipv4.fragsin | ok, failed, all | packets/s |\n| ipv4.fragsout | ok, failed, created | packets/s |\n| system.ipv6 | received, sent | kilobits/s |\n| ipv6.packets | received, sent, forwarded, delivers | packets/s |\n| ipv6.errors | InDiscards, OutDiscards, InHdrErrors, InAddrErrors, InUnknownProtos, InTooBigErrors, InTruncatedPkts, InNoRoutes, OutNoRoutes | packets/s |\n| ipv6.bcast | received, sent | kilobits/s |\n| ipv6.mcast | received, sent | kilobits/s |\n| ipv6.mcastpkts | received, sent | packets/s |\n| ipv6.udppackets | received, sent | packets/s |\n| ipv6.udperrors | RcvbufErrors, SndbufErrors, InErrors, NoPorts, InCsumErrors, IgnoredMulti | events/s |\n| ipv6.udplitepackets | received, sent | packets/s |\n| ipv6.udpliteerrors | RcvbufErrors, SndbufErrors, InErrors, NoPorts, InCsumErrors | events/s |\n| ipv6.icmp | received, sent | messages/s |\n| ipv6.icmpredir | received, sent | redirects/s |\n| ipv6.icmperrors | InErrors, OutErrors, InCsumErrors, InDestUnreachs, InPktTooBigs, InTimeExcds, InParmProblems, OutDestUnreachs, OutPktTooBigs, OutTimeExcds, OutParmProblems | errors/s |\n| ipv6.icmpechos | InEchos, OutEchos, InEchoReplies, OutEchoReplies | messages/s |\n| ipv6.groupmemb | InQueries, OutQueries, InResponses, OutResponses, InReductions, OutReductions | messages/s |\n| ipv6.icmprouter | InSolicits, OutSolicits, InAdvertisements, OutAdvertisements | messages/s |\n| ipv6.icmpneighbor | InSolicits, OutSolicits, InAdvertisements, OutAdvertisements | messages/s |\n| ipv6.icmpmldv2 | received, sent | reports/s |\n| ipv6.icmptypes | InType1, InType128, InType129, InType136, OutType1, OutType128, OutType129, OutType133, OutType135, OutType143 | messages/s |\n| ipv6.ect | InNoECTPkts, InECT1Pkts, InECT0Pkts, InCEPkts | packets/s |\n| ipv6.fragsin | ok, failed, timeout, all | packets/s |\n| ipv6.fragsout | ok, failed, all | packets/s |\n\n",integration_type:"collector",id:"proc.plugin-/proc/net/netstat-Network_statistics",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/net/rpc/nfs",monitored_instance:{name:"NFS Client",link:"",categories:["data-collection.storage"],icon_filename:"nfs.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["nfs client","filesystem"]},overview:"# NFS Client\n\nPlugin: proc.plugin\nModule: /proc/net/rpc/nfs\n\n## Overview\n\nThis integration provides statistics from the Linux kernel's NFS Client.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per NFS Client instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nfs.net | udp, tcp | operations/s |\n| nfs.rpc | calls, retransmits, auth_refresh | calls/s |\n| nfs.proc2 | a dimension per proc2 call | calls/s |\n| nfs.proc3 | a dimension per proc3 call | calls/s |\n| nfs.proc4 | a dimension per proc4 call | calls/s |\n\n",integration_type:"collector",id:"proc.plugin-/proc/net/rpc/nfs-NFS_Client",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/net/rpc/nfsd",monitored_instance:{name:"NFS Server",link:"",categories:["data-collection.storage"],icon_filename:"nfs.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["nfs server","filesystem"]},overview:"# NFS Server\n\nPlugin: proc.plugin\nModule: /proc/net/rpc/nfsd\n\n## Overview\n\nThis integration provides statistics from the Linux kernel's NFS Server.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per NFS Server instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nfsd.readcache | hits, misses, nocache | reads/s |\n| nfsd.filehandles | stale | handles/s |\n| nfsd.io | read, write | kilobytes/s |\n| nfsd.threads | threads | threads |\n| nfsd.net | udp, tcp | packets/s |\n| nfsd.rpc | calls, bad_format, bad_auth | calls/s |\n| nfsd.proc2 | a dimension per proc2 call | calls/s |\n| nfsd.proc3 | a dimension per proc3 call | calls/s |\n| nfsd.proc4 | a dimension per proc4 call | calls/s |\n| nfsd.proc4ops | a dimension per proc4 operation | operations/s |\n\n",integration_type:"collector",id:"proc.plugin-/proc/net/rpc/nfsd-NFS_Server",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/net/sctp/snmp",monitored_instance:{name:"SCTP Statistics",link:"",categories:["data-collection.networking"],icon_filename:"network-wired.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["sctp","stream control transmission protocol"]},overview:"# SCTP Statistics\n\nPlugin: proc.plugin\nModule: /proc/net/sctp/snmp\n\n## Overview\n\nThis integration provides statistics about the Stream Control Transmission Protocol (SCTP).\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per SCTP Statistics instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| sctp.established | established | associations |\n| sctp.transitions | active, passive, aborted, shutdown | transitions/s |\n| sctp.packets | received, sent | packets/s |\n| sctp.packet_errors | invalid, checksum | packets/s |\n| sctp.fragmentation | reassembled, fragmented | packets/s |\n\n",integration_type:"collector",id:"proc.plugin-/proc/net/sctp/snmp-SCTP_Statistics",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/net/sockstat",monitored_instance:{name:"Socket statistics",link:"",categories:["data-collection.networking"],icon_filename:"network-wired.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["sockets"]},overview:"# Socket statistics\n\nPlugin: proc.plugin\nModule: /proc/net/sockstat\n\n## Overview\n\nThis integration provides socket statistics.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ tcp_orphans ](https://github.com/netdata/netdata/blob/master/src/health/health.d/tcp_orphans.conf) | ipv4.sockstat_tcp_sockets | orphan IPv4 TCP sockets utilization |\n| [ tcp_memory ](https://github.com/netdata/netdata/blob/master/src/health/health.d/tcp_mem.conf) | ipv4.sockstat_tcp_mem | TCP memory utilization |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Socket statistics instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ip.sockstat_sockets | used | sockets |\n| ipv4.sockstat_tcp_sockets | alloc, orphan, inuse, timewait | sockets |\n| ipv4.sockstat_tcp_mem | mem | KiB |\n| ipv4.sockstat_udp_sockets | inuse | sockets |\n| ipv4.sockstat_udp_mem | mem | sockets |\n| ipv4.sockstat_udplite_sockets | inuse | sockets |\n| ipv4.sockstat_raw_sockets | inuse | sockets |\n| ipv4.sockstat_frag_sockets | inuse | fragments |\n| ipv4.sockstat_frag_mem | mem | KiB |\n\n",integration_type:"collector",id:"proc.plugin-/proc/net/sockstat-Socket_statistics",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/net/sockstat6",monitored_instance:{name:"IPv6 Socket Statistics",link:"",categories:["data-collection.networking"],icon_filename:"network-wired.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["ipv6 sockets"]},overview:"# IPv6 Socket Statistics\n\nPlugin: proc.plugin\nModule: /proc/net/sockstat6\n\n## Overview\n\nThis integration provides IPv6 socket statistics.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per IPv6 Socket Statistics instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ipv6.sockstat6_tcp_sockets | inuse | sockets |\n| ipv6.sockstat6_udp_sockets | inuse | sockets |\n| ipv6.sockstat6_udplite_sockets | inuse | sockets |\n| ipv6.sockstat6_raw_sockets | inuse | sockets |\n| ipv6.sockstat6_frag_sockets | inuse | fragments |\n\n",integration_type:"collector",id:"proc.plugin-/proc/net/sockstat6-IPv6_Socket_Statistics",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/net/softnet_stat",monitored_instance:{name:"Softnet Statistics",link:"",categories:["data-collection.networking"],icon_filename:"linuxserver.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["softnet"]},overview:"# Softnet Statistics\n\nPlugin: proc.plugin\nModule: /proc/net/softnet_stat\n\n## Overview\n\n`/proc/net/softnet_stat` provides statistics that relate to the handling of network packets by softirq.\n\nIt provides information about:\n\n- Total number of processed packets (`processed`).\n- Times ksoftirq ran out of quota (`dropped`).\n- Times net_rx_action was rescheduled.\n- Number of times processed all lists before quota.\n- Number of times did not process all lists due to quota.\n- Number of times net_rx_action was rescheduled for GRO (Generic Receive Offload) cells.\n- Number of times GRO cells were processed.\n\nMonitoring the /proc/net/softnet_stat file can be useful for:\n\n- **Network performance monitoring**: By tracking the total number of processed packets and how many packets\n were dropped, you can gain insights into your system's network performance.\n\n- **Troubleshooting**: If you're experiencing network-related issues, this collector can provide valuable clues.\n For instance, a high number of dropped packets may indicate a network problem.\n\n- **Capacity planning**: If your system is consistently processing near its maximum capacity of network\n packets, it might be time to consider upgrading your network infrastructure.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ 1min_netdev_backlog_exceeded ](https://github.com/netdata/netdata/blob/master/src/health/health.d/softnet.conf) | system.softnet_stat | average number of dropped packets in the last minute due to exceeded net.core.netdev_max_backlog |\n| [ 1min_netdev_budget_ran_outs ](https://github.com/netdata/netdata/blob/master/src/health/health.d/softnet.conf) | system.softnet_stat | average number of times ksoftirq ran out of sysctl net.core.netdev_budget or net.core.netdev_budget_usecs with work remaining over the last minute (this can be a cause for dropped packets) |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Softnet Statistics instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.softnet_stat | processed, dropped, squeezed, received_rps, flow_limit_count | events/s |\n\n### Per cpu core\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cpu.softnet_stat | processed, dropped, squeezed, received_rps, flow_limit_count | events/s |\n\n",integration_type:"collector",id:"proc.plugin-/proc/net/softnet_stat-Softnet_Statistics",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/net/stat/nf_conntrack",monitored_instance:{name:"Conntrack",link:"",categories:["data-collection.networking"],icon_filename:"firewall.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["connection tracking mechanism","netfilter","conntrack"]},overview:"# Conntrack\n\nPlugin: proc.plugin\nModule: /proc/net/stat/nf_conntrack\n\n## Overview\n\nThis integration monitors the connection tracking mechanism of Netfilter in the Linux Kernel.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ netfilter_conntrack_full ](https://github.com/netdata/netdata/blob/master/src/health/health.d/netfilter.conf) | netfilter.conntrack_sockets | netfilter connection tracker table size utilization |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Conntrack instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| netfilter.conntrack_sockets | connections | active connections |\n| netfilter.conntrack_new | new, ignore, invalid | connections/s |\n| netfilter.conntrack_changes | inserted, deleted, delete_list | changes/s |\n| netfilter.conntrack_expect | created, deleted, new | expectations/s |\n| netfilter.conntrack_search | searched, restarted, found | searches/s |\n| netfilter.conntrack_errors | icmp_error, error_failed, drop, early_drop | events/s |\n\n",integration_type:"collector",id:"proc.plugin-/proc/net/stat/nf_conntrack-Conntrack",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/net/stat/synproxy",monitored_instance:{name:"Synproxy",link:"",categories:["data-collection.networking"],icon_filename:"firewall.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["synproxy"]},overview:"# Synproxy\n\nPlugin: proc.plugin\nModule: /proc/net/stat/synproxy\n\n## Overview\n\nThis integration provides statistics about the Synproxy netfilter module.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Synproxy instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| netfilter.synproxy_syn_received | received | packets/s |\n| netfilter.synproxy_conn_reopened | reopened | connections/s |\n| netfilter.synproxy_cookies | valid, invalid, retransmits | cookies/s |\n\n",integration_type:"collector",id:"proc.plugin-/proc/net/stat/synproxy-Synproxy",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/net/wireless",monitored_instance:{name:"Wireless network interfaces",link:"",categories:["data-collection.networking"],icon_filename:"network-wired.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["wireless devices"]},overview:"# Wireless network interfaces\n\nPlugin: proc.plugin\nModule: /proc/net/wireless\n\n## Overview\n\nMonitor wireless devices with metrics about status, link quality, signal level, noise level and more.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per wireless device\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| wireless.status | status | status |\n| wireless.link_quality | link_quality | value |\n| wireless.signal_level | signal_level | dBm |\n| wireless.noise_level | noise_level | dBm |\n| wireless.discarded_packets | nwid, crypt, frag, retry, misc | packets/s |\n| wireless.missed_beacons | missed_beacons | frames/s |\n\n",integration_type:"collector",id:"proc.plugin-/proc/net/wireless-Wireless_network_interfaces",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/pagetypeinfo",monitored_instance:{name:"Page types",link:"",categories:["data-collection.operating-systems"],icon_filename:"microchip.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["memory page types"]},overview:"# Page types\n\nPlugin: proc.plugin\nModule: /proc/pagetypeinfo\n\n## Overview\n\nThis integration provides metrics about the system's memory page types\n\n\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Page types instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.pagetype_global | a dimension per pagesize | B |\n\n### Per node, zone, type\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node_id | TBD |\n| node_zone | TBD |\n| node_type | TBD |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.pagetype | a dimension per pagesize | B |\n\n",integration_type:"collector",id:"proc.plugin-/proc/pagetypeinfo-Page_types",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/pressure",monitored_instance:{name:"Pressure Stall Information",link:"",categories:["data-collection.operating-systems"],icon_filename:"linuxserver.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["pressure"]},overview:"# Pressure Stall Information\n\nPlugin: proc.plugin\nModule: /proc/pressure\n\n## Overview\n\nIntroduced in Linux kernel 4.20, `/proc/pressure` provides information about system pressure stall information\n(PSI). PSI is a feature that allows the system to track the amount of time the system is stalled due to\nresource contention, such as CPU, memory, or I/O.\n\nThe collectors monitored 3 separate files for CPU, memory, and I/O:\n\n- **cpu**: Tracks the amount of time tasks are stalled due to CPU contention.\n- **memory**: Tracks the amount of time tasks are stalled due to memory contention.\n- **io**: Tracks the amount of time tasks are stalled due to I/O contention.\n- **irq**: Tracks the amount of time tasks are stalled due to IRQ contention.\n\nEach of them provides metrics for stall time over the last 10 seconds, 1 minute, 5 minutes, and 15 minutes.\n\nMonitoring the /proc/pressure files can provide important insights into system performance and capacity planning:\n\n- **Identifying resource contention**: If these metrics are consistently high, it indicates that tasks are\n frequently being stalled due to lack of resources, which can significantly degrade system performance.\n\n- **Troubleshooting performance issues**: If a system is experiencing performance issues, these metrics can\n help identify whether resource contention is the cause.\n\n- **Capacity planning**: By monitoring these metrics over time, you can understand trends in resource\n utilization and make informed decisions about when to add more resources to your system.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Pressure Stall Information instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.cpu_some_pressure | some10, some60, some300 | percentage |\n| system.cpu_some_pressure_stall_time | time | ms |\n| system.cpu_full_pressure | some10, some60, some300 | percentage |\n| system.cpu_full_pressure_stall_time | time | ms |\n| system.memory_some_pressure | some10, some60, some300 | percentage |\n| system.memory_some_pressure_stall_time | time | ms |\n| system.memory_full_pressure | some10, some60, some300 | percentage |\n| system.memory_full_pressure_stall_time | time | ms |\n| system.io_some_pressure | some10, some60, some300 | percentage |\n| system.io_some_pressure_stall_time | time | ms |\n| system.io_full_pressure | some10, some60, some300 | percentage |\n| system.io_full_pressure_stall_time | time | ms |\n\n",integration_type:"collector",id:"proc.plugin-/proc/pressure-Pressure_Stall_Information",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/softirqs",monitored_instance:{name:"SoftIRQ statistics",link:"",categories:["data-collection.operating-systems"],icon_filename:"linuxserver.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["softirqs","interrupts"]},overview:"# SoftIRQ statistics\n\nPlugin: proc.plugin\nModule: /proc/softirqs\n\n## Overview\n\nIn the Linux kernel, handling of hardware interrupts is split into two halves: the top half and the bottom half.\nThe top half is the routine that responds immediately to an interrupt, while the bottom half is deferred to be processed later.\n\nSoftirqs are a mechanism in the Linux kernel used to handle the bottom halves of interrupts, which can be\ndeferred and processed later in a context where it's safe to enable interrupts.\n\nThe actual work of handling the interrupt is offloaded to a softirq and executed later when the system\ndecides it's a good time to process them. This helps to keep the system responsive by not blocking the top\nhalf for too long, which could lead to missed interrupts.\n\nMonitoring `/proc/softirqs` is useful for:\n\n- **Performance tuning**: A high rate of softirqs could indicate a performance issue. For instance, a high\n rate of network softirqs (`NET_RX` and `NET_TX`) could indicate a network performance issue.\n\n- **Troubleshooting**: If a system is behaving unexpectedly, checking the softirqs could provide clues about\n what is going on. For example, a sudden increase in block device softirqs (BLOCK) might indicate a problem\n with a disk.\n\n- **Understanding system behavior**: Knowing what types of softirqs are happening can help you understand what\n your system is doing, particularly in terms of how it's interacting with hardware and how it's handling\n interrupts.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per SoftIRQ statistics instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.softirqs | a dimension per softirq | softirqs/s |\n\n### Per cpu core\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cpu | TBD |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cpu.softirqs | a dimension per softirq | softirqs/s |\n\n",integration_type:"collector",id:"proc.plugin-/proc/softirqs-SoftIRQ_statistics",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/spl/kstat/zfs/arcstats",monitored_instance:{name:"ZFS Adaptive Replacement Cache",link:"",categories:["data-collection.storage"],icon_filename:"filesystem.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["zfs arc","arc","zfs","filesystem"]},overview:"# ZFS Adaptive Replacement Cache\n\nPlugin: proc.plugin\nModule: /proc/spl/kstat/zfs/arcstats\n\n## Overview\n\nThis integration monitors ZFS Adadptive Replacement Cache (ARC) statistics.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ zfs_memory_throttle ](https://github.com/netdata/netdata/blob/master/src/health/health.d/zfs.conf) | zfs.memory_ops | number of times ZFS had to limit the ARC growth in the last 10 minutes |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per ZFS Adaptive Replacement Cache instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| zfs.arc_size | arcsz, target, min, max | MiB |\n| zfs.l2_size | actual, size | MiB |\n| zfs.reads | arc, demand, prefetch, metadata, l2 | reads/s |\n| zfs.bytes | read, write | KiB/s |\n| zfs.hits | hits, misses | percentage |\n| zfs.hits_rate | hits, misses | events/s |\n| zfs.dhits | hits, misses | percentage |\n| zfs.dhits_rate | hits, misses | events/s |\n| zfs.phits | hits, misses | percentage |\n| zfs.phits_rate | hits, misses | events/s |\n| zfs.mhits | hits, misses | percentage |\n| zfs.mhits_rate | hits, misses | events/s |\n| zfs.l2hits | hits, misses | percentage |\n| zfs.l2hits_rate | hits, misses | events/s |\n| zfs.list_hits | mfu, mfu_ghost, mru, mru_ghost | hits/s |\n| zfs.arc_size_breakdown | recent, frequent | percentage |\n| zfs.memory_ops | direct, throttled, indirect | operations/s |\n| zfs.important_ops | evict_skip, deleted, mutex_miss, hash_collisions | operations/s |\n| zfs.actual_hits | hits, misses | percentage |\n| zfs.actual_hits_rate | hits, misses | events/s |\n| zfs.demand_data_hits | hits, misses | percentage |\n| zfs.demand_data_hits_rate | hits, misses | events/s |\n| zfs.prefetch_data_hits | hits, misses | percentage |\n| zfs.prefetch_data_hits_rate | hits, misses | events/s |\n| zfs.hash_elements | current, max | elements |\n| zfs.hash_chains | current, max | chains |\n\n",integration_type:"collector",id:"proc.plugin-/proc/spl/kstat/zfs/arcstats-ZFS_Adaptive_Replacement_Cache",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/stat",monitored_instance:{name:"System statistics",link:"",categories:["data-collection.operating-systems"],icon_filename:"linuxserver.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["cpu utilization","process counts"]},overview:"# System statistics\n\nPlugin: proc.plugin\nModule: /proc/stat\n\n## Overview\n\nCPU utilization, states and frequencies and key Linux system performance metrics.\n\nThe `/proc/stat` file provides various types of system statistics:\n\n- The overall system CPU usage statistics\n- Per CPU core statistics\n- The total context switching of the system\n- The total number of processes running\n- The total CPU interrupts\n- The total CPU softirqs\n\nThe collector also reads:\n\n- `/proc/schedstat` for statistics about the process scheduler in the Linux kernel.\n- `/sys/devices/system/cpu/[X]/thermal_throttle/core_throttle_count` to get the count of thermal throttling events for a specific CPU core on Linux systems.\n- `/sys/devices/system/cpu/[X]/thermal_throttle/package_throttle_count` to get the count of thermal throttling events for a specific CPU package on a Linux system.\n- `/sys/devices/system/cpu/[X]/cpufreq/scaling_cur_freq` to get the current operating frequency of a specific CPU core.\n- `/sys/devices/system/cpu/[X]/cpufreq/stats/time_in_state` to get the amount of time the CPU has spent in each of its available frequency states.\n- `/sys/devices/system/cpu/[X]/cpuidle/state[X]/name` to get the names of the idle states for each CPU core in a Linux system.\n- `/sys/devices/system/cpu/[X]/cpuidle/state[X]/time` to get the total time each specific CPU core has spent in each idle state since the system was started.\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- linux\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector auto-detects all metrics. No configuration is needed.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe collector disables cpu frequency and idle state monitoring when there are more than 128 CPU cores available.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| per cpu core utilization | Collects CPU usage metrics for each individual core, in addition to the system-wide averages. | no | no |\n| cpu idle states | Collects CPU idle state residency metrics for each individual core, showing how much time each core spends in different idle states (C-states). | no | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `plugin:proc:/proc/stat` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ 10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cpu.conf) | system.cpu | average CPU utilization over the last 10 minutes (excluding iowait, nice and steal) |\n| [ 10min_cpu_iowait ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cpu.conf) | system.cpu | average CPU iowait time over the last 10 minutes |\n| [ 20min_steal_cpu ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cpu.conf) | system.cpu | average CPU steal time over the last 20 minutes |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per System statistics instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.cpu | guest_nice, guest, steal, softirq, irq, user, system, nice, iowait, idle | percentage |\n| system.intr | interrupts | interrupts/s |\n| system.ctxt | switches | context switches/s |\n| system.forks | started | processes/s |\n| system.processes | running, blocked | processes |\n| cpu.core_throttling | a dimension per cpu core | events/s |\n| cpu.package_throttling | a dimension per package | events/s |\n| cpu.cpufreq | a dimension per cpu core | MHz |\n\n### Per cpu core\n\nPer-core CPU metrics. Disabled by default, can be enabled in the [configuration options](#configuration).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cpu | Identifier of the CPU core (e.g., core0, core1, core2). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cpu.cpu | guest_nice, guest, steal, softirq, irq, user, system, nice, iowait, idle | percentage |\n| cpuidle.cpu_cstate_residency_time | a dimension per c-state | percentage |\n\n",integration_type:"collector",id:"proc.plugin-/proc/stat-System_statistics",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/sys/kernel/random/entropy_avail",monitored_instance:{name:"Entropy",link:"",categories:["data-collection.operating-systems"],icon_filename:"syslog.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["entropy"]},overview:"# Entropy\n\nPlugin: proc.plugin\nModule: /proc/sys/kernel/random/entropy_avail\n\n## Overview\n\nEntropy, a measure of the randomness or unpredictability of data.\n\nIn the context of cryptography, entropy is used to generate random numbers or keys that are essential for\nsecure communication and encryption. Without a good source of entropy, cryptographic protocols can become\nvulnerable to attacks that exploit the predictability of the generated keys.\n\nIn most operating systems, entropy is generated by collecting random events from various sources, such as\nhardware interrupts, mouse movements, keyboard presses, and disk activity. These events are fed into a pool\nof entropy, which is then used to generate random numbers when needed.\n\nThe `/dev/random` device in Linux is one such source of entropy, and it provides an interface for programs\nto access the pool of entropy. When a program requests random numbers, it reads from the `/dev/random` device,\nwhich blocks until enough entropy is available to generate the requested numbers. This ensures that the\ngenerated numbers are truly random and not predictable. \n\nHowever, if the pool of entropy gets depleted, the `/dev/random` device may block indefinitely, causing\nprograms that rely on random numbers to slow down or even freeze. This is especially problematic for\ncryptographic protocols that require a continuous stream of random numbers, such as SSL/TLS and SSH.\n\nTo avoid this issue, some systems use a hardware random number generator (RNG) to generate high-quality\nentropy. A hardware RNG generates random numbers by measuring physical phenomena, such as thermal noise or\nradioactive decay. These sources of randomness are considered to be more reliable and unpredictable than\nsoftware-based sources.\n\nOne such hardware RNG is the Trusted Platform Module (TPM), which is a dedicated hardware chip that is used\nfor cryptographic operations and secure boot. The TPM contains a built-in hardware RNG that generates\nhigh-quality entropy, which can be used to seed the pool of entropy in the operating system.\n\nAlternatively, software-based solutions such as `Haveged` can be used to generate additional entropy by\nexploiting sources of randomness in the system, such as CPU utilization and network traffic. These solutions\ncan help to mitigate the risk of entropy depletion, but they may not be as reliable as hardware-based solutions.\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- linux\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ lowest_entropy ](https://github.com/netdata/netdata/blob/master/src/health/health.d/entropy.conf) | system.entropy | minimum number of bits of entropy available for the kernel\u2019s random number generator |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Entropy instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.entropy | entropy | entropy |\n\n",integration_type:"collector",id:"proc.plugin-/proc/sys/kernel/random/entropy_avail-Entropy",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/uptime",monitored_instance:{name:"System Uptime",link:"",categories:["data-collection.operating-systems"],icon_filename:"linuxserver.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["uptime"]},overview:"# System Uptime\n\nPlugin: proc.plugin\nModule: /proc/uptime\n\n## Overview\n\nThe amount of time the system has been up (running).\n\nUptime is a critical aspect of overall system performance:\n\n- **Availability**: Uptime monitoring can show whether a server is consistently available or experiences frequent downtimes.\n- **Performance Monitoring**: While server uptime alone doesn't provide detailed performance data, analyzing the duration and frequency of downtimes can help identify patterns or trends.\n- **Proactive problem detection**: If server uptime monitoring reveals unexpected downtimes or a decreasing uptime trend, it can serve as an early warning sign of potential problems.\n- **Root cause analysis**: When investigating server downtime, the uptime metric alone may not provide enough information to pinpoint the exact cause.\n- **Load balancing**: Uptime data can indirectly indicate load balancing issues if certain servers have significantly lower uptimes than others.\n- **Optimize maintenance efforts**: Servers with consistently low uptimes or frequent downtimes may require more attention.\n- **Compliance requirements**: Server uptime data can be used to demonstrate compliance with regulatory requirements or SLAs that mandate a minimum level of server availability.\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- linux\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per System Uptime instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.uptime | uptime | seconds |\n\n",integration_type:"collector",id:"proc.plugin-/proc/uptime-System_Uptime",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/proc/vmstat",monitored_instance:{name:"Memory Statistics",link:"",categories:["data-collection.operating-systems"],icon_filename:"linuxserver.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["swap","page faults","oom","numa"]},overview:"# Memory Statistics\n\nPlugin: proc.plugin\nModule: /proc/vmstat\n\n## Overview\n\nLinux Virtual memory subsystem.\n\nInformation about memory management, indicating how effectively the kernel allocates and frees\nmemory resources in response to system demands.\n\nMonitors page faults, which occur when a process requests a portion of its memory that isn't\nimmediately available. Monitoring these events can help diagnose inefficiencies in memory management and\nprovide insights into application behavior.\n\nTracks swapping activity \u2014 a vital aspect of memory management where the kernel moves data from RAM to\nswap space, and vice versa, based on memory demand and usage. It also monitors the utilization of zswap,\na compressed cache for swap pages, and provides insights into its usage and performance implications.\n\nIn the context of virtualized environments, it tracks the ballooning mechanism which is used to balance\nmemory resources between host and guest systems.\n\nFor systems using NUMA architecture, it provides insights into the local and remote memory accesses, which\ncan impact the performance based on the memory access times.\n\nThe collector also watches for 'Out of Memory' kills, a drastic measure taken by the system when it runs out\nof memory resources.\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- linux\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ 30min_ram_swapped_out ](https://github.com/netdata/netdata/blob/master/src/health/health.d/swap.conf) | mem.swapio | percentage of the system RAM swapped in the last 30 minutes |\n| [ oom_kill ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ram.conf) | mem.oom_kill | number of out of memory kills in the last 30 minutes |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Memory Statistics instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.swapio | in, out | KiB/s |\n| system.pgpgio | in, out | KiB/s |\n| system.pgfaults | minor, major | faults/s |\n| mem.balloon | inflate, deflate, migrate | KiB/s |\n| mem.zswapio | in, out | KiB/s |\n| mem.ksm_cow | swapin, write | KiB/s |\n| mem.thp_faults | alloc, fallback, fallback_charge | events/s |\n| mem.thp_file | alloc, fallback, mapped, fallback_charge | events/s |\n| mem.thp_zero | alloc, failed | events/s |\n| mem.thp_collapse | alloc, failed | events/s |\n| mem.thp_split | split, failed, split_pmd, split_deferred | events/s |\n| mem.thp_swapout | swapout, fallback | events/s |\n| mem.thp_compact | success, fail, stall | events/s |\n| mem.oom_kill | kills | kills/s |\n| mem.numa | local, foreign, interleave, other, pte_updates, huge_pte_updates, hint_faults, hint_faults_local, pages_migrated | events/s |\n\n",integration_type:"collector",id:"proc.plugin-/proc/vmstat-Memory_Statistics",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/sys/block/zram",monitored_instance:{name:"ZRAM",link:"",categories:["data-collection.operating-systems"],icon_filename:"microchip.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["zram"]},overview:"# ZRAM\n\nPlugin: proc.plugin\nModule: /sys/block/zram\n\n## Overview\n\nzRAM, or compressed RAM, is a block device that uses a portion of your system's RAM as a block device.\nThe data written to this block device is compressed and stored in memory.\n\nThe collectors provides information about the operation and the effectiveness of zRAM on your system.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per zram device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device | TBD |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.zram_usage | compressed, metadata | MiB |\n| mem.zram_savings | savings, original | MiB |\n| mem.zram_ratio | ratio | ratio |\n| mem.zram_efficiency | percent | percentage |\n\n",integration_type:"collector",id:"proc.plugin-/sys/block/zram-ZRAM",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/sys/class/drm",monitored_instance:{name:"AMD GPU",link:"https://www.amd.com",categories:["data-collection.hardware-and-sensors"],icon_filename:"amd.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["amd","gpu","hardware"]},overview:"# AMD GPU\n\nPlugin: proc.plugin\nModule: /sys/class/drm\n\n## Overview\n\nThis integration monitors AMD GPU metrics, such as utilization, clock frequency and memory usage.\n\nIt reads `/sys/class/drm` to collect metrics for every AMD GPU card instance it encounters.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per gpu\n\nThese metrics refer to the GPU.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| product_name | GPU product name (e.g. AMD RX 6600) |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| amdgpu.gpu_utilization | utilization | percentage |\n| amdgpu.gpu_mem_utilization | utilization | percentage |\n| amdgpu.gpu_clk_frequency | frequency | MHz |\n| amdgpu.gpu_mem_clk_frequency | frequency | MHz |\n| amdgpu.gpu_mem_vram_usage_perc | usage | percentage |\n| amdgpu.gpu_mem_vram_usage | free, used | bytes |\n| amdgpu.gpu_mem_vis_vram_usage_perc | usage | percentage |\n| amdgpu.gpu_mem_vis_vram_usage | free, used | bytes |\n| amdgpu.gpu_mem_gtt_usage_perc | usage | percentage |\n| amdgpu.gpu_mem_gtt_usage | free, used | bytes |\n\n",integration_type:"collector",id:"proc.plugin-/sys/class/drm-AMD_GPU",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/sys/class/infiniband",monitored_instance:{name:"InfiniBand",link:"",categories:["data-collection.networking"],icon_filename:"network-wired.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["infiniband","rdma"]},overview:"# InfiniBand\n\nPlugin: proc.plugin\nModule: /sys/class/infiniband\n\n## Overview\n\nThis integration monitors InfiniBand network inteface statistics.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per infiniband port\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ib.bytes | Received, Sent | kilobits/s |\n| ib.packets | Received, Sent, Mcast_rcvd, Mcast_sent, Ucast_rcvd, Ucast_sent | packets/s |\n| ib.errors | Pkts_malformated, Pkts_rcvd_discarded, Pkts_sent_discarded, Tick_Wait_to_send, Pkts_missed_resource, Buffer_overrun, Link_Downed, Link_recovered, Link_integrity_err, Link_minor_errors, Pkts_rcvd_with_EBP, Pkts_rcvd_discarded_by_switch, Pkts_sent_discarded_by_switch | errors/s |\n| ib.hwerrors | Duplicated_packets, Pkt_Seq_Num_gap, Ack_timer_expired, Drop_missing_buffer, Drop_out_of_sequence, NAK_sequence_rcvd, CQE_err_Req, CQE_err_Resp, CQE_Flushed_err_Req, CQE_Flushed_err_Resp, Remote_access_err_Req, Remote_access_err_Resp, Remote_invalid_req, Local_length_err_Resp, RNR_NAK_Packets, CNP_Pkts_ignored, RoCE_ICRC_Errors | errors/s |\n| ib.hwpackets | RoCEv2_Congestion_sent, RoCEv2_Congestion_rcvd, IB_Congestion_handled, ATOMIC_req_rcvd, Connection_req_rcvd, Read_req_rcvd, Write_req_rcvd, RoCE_retrans_adaptive, RoCE_retrans_timeout, RoCE_slow_restart, RoCE_slow_restart_congestion, RoCE_slow_restart_count | packets/s |\n\n",integration_type:"collector",id:"proc.plugin-/sys/class/infiniband-InfiniBand",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/sys/class/power_supply",monitored_instance:{name:"Power Supply",link:"",categories:["data-collection.hardware-and-sensors"],icon_filename:"powersupply.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["psu","power supply"]},overview:"# Power Supply\n\nPlugin: proc.plugin\nModule: /sys/class/power_supply\n\n## Overview\n\nThis integration monitors Power supply metrics, such as battery status, AC power status and more.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ power_supply_capacity ](https://github.com/netdata/netdata/blob/master/src/health/health.d/power_supply_capacity.conf) | powersupply.capacity | percentage of remaining power supply capacity |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per power device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device | TBD |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powersupply.capacity | capacity | percentage |\n| powersupply.power | power | W |\n| powersupply.charge | empty_design, empty, now, full, full_design | Ah |\n| powersupply.energy | empty_design, empty, now, full, full_design | Wh |\n| powersupply.voltage | min_design, min, now, max, max_design | V |\n\n",integration_type:"collector",id:"proc.plugin-/sys/class/power_supply-Power_Supply",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/sys/devices/system/edac/mc",monitored_instance:{name:"Memory modules (DIMMs)",link:"",categories:["data-collection.hardware-and-sensors"],icon_filename:"microchip.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["edac","ecc","dimm","ram","hardware"]},overview:"# Memory modules (DIMMs)\n\nPlugin: proc.plugin\nModule: /sys/devices/system/edac/mc\n\n## Overview\n\nThe Error Detection and Correction (EDAC) subsystem is detecting and reporting errors in the system's memory,\nprimarily ECC (Error-Correcting Code) memory errors.\n\nThe collector provides data for:\n\n- Per memory controller (MC): correctable and uncorrectable errors. These can be of 2 kinds:\n - errors related to a DIMM\n - errors that cannot be associated with a DIMM\n\n- Per memory DIMM: correctable and uncorrectable errors. There are 2 kinds:\n - memory controllers that can identify the physical DIMMS and report errors directly for them,\n - memory controllers that report errors for memory address ranges that can be linked to dimms.\n In this case the DIMMS reported may be more than the physical DIMMS installed.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ ecc_memory_mc_noinfo_correctable ](https://github.com/netdata/netdata/blob/master/src/health/health.d/memory.conf) | mem.edac_mc_errors | memory controller ${label:controller} ECC correctable errors (unknown DIMM slot) |\n| [ ecc_memory_mc_noinfo_uncorrectable ](https://github.com/netdata/netdata/blob/master/src/health/health.d/memory.conf) | mem.edac_mc_errors | memory controller ${label:controller} ECC uncorrectable errors (unknown DIMM slot) |\n| [ ecc_memory_dimm_correctable ](https://github.com/netdata/netdata/blob/master/src/health/health.d/memory.conf) | mem.edac_mc_dimm_errors | DIMM ${label:dimm} controller ${label:controller} (location ${label:dimm_location}) ECC correctable errors |\n| [ ecc_memory_dimm_uncorrectable ](https://github.com/netdata/netdata/blob/master/src/health/health.d/memory.conf) | mem.edac_mc_dimm_errors | DIMM ${label:dimm} controller ${label:controller} (location ${label:dimm_location}) ECC uncorrectable errors |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per memory controller\n\nThese metrics refer to the memory controller.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| controller | [mcX](https://www.kernel.org/doc/html/v5.0/admin-guide/ras.html#mcx-directories) directory name of this memory controller. |\n| mc_name | Memory controller type. |\n| size_mb | The amount of memory in megabytes that this memory controller manages. |\n| max_location | Last available memory slot in this memory controller. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.edac_mc_errors | correctable, uncorrectable, correctable_noinfo, uncorrectable_noinfo | errors |\n\n### Per memory module\n\nThese metrics refer to the memory module (or rank, [depends on the memory controller](https://www.kernel.org/doc/html/v5.0/admin-guide/ras.html#f5)).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| controller | [mcX](https://www.kernel.org/doc/html/v5.0/admin-guide/ras.html#mcx-directories) directory name of this memory controller. |\n| dimm | [dimmX or rankX](https://www.kernel.org/doc/html/v5.0/admin-guide/ras.html#dimmx-or-rankx-directories) directory name of this memory module. |\n| dimm_dev_type | Type of DRAM device used in this memory module. For example, x1, x2, x4, x8. |\n| dimm_edac_mode | Used type of error detection and correction. For example, S4ECD4ED would mean a Chipkill with x4 DRAM. |\n| dimm_label | Label assigned to this memory module. |\n| dimm_location | Location of the memory module. |\n| dimm_mem_type | Type of the memory module. |\n| size | The amount of memory in megabytes that this memory module manages. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.edac_mc_errors | correctable, uncorrectable | errors |\n\n",integration_type:"collector",id:"proc.plugin-/sys/devices/system/edac/mc-Memory_modules_(DIMMs)",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/sys/devices/system/node",monitored_instance:{name:"Non-Uniform Memory Access",link:"",categories:["data-collection.operating-systems"],icon_filename:"linuxserver.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["numa"]},overview:"# Non-Uniform Memory Access\n\nPlugin: proc.plugin\nModule: /sys/devices/system/node\n\n## Overview\n\nInformation about NUMA (Non-Uniform Memory Access) nodes on the system.\n\nNUMA is a method of configuring a cluster of microprocessor in a multiprocessing system so that they can\nshare memory locally, improving performance and the ability of the system to be expanded. NUMA is used in a\nsymmetric multiprocessing (SMP) system.\n\nIn a NUMA system, processors, memory, and I/O devices are grouped together into cells, also known as nodes.\nEach node has its own memory and set of I/O devices, and one or more processors. While a processor can access\nmemory in any of the nodes, it does so faster when accessing memory within its own node.\n\nThe collector provides statistics on memory allocations for processes running on the NUMA nodes, revealing the\nefficiency of memory allocations in multi-node systems.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per numa node\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| numa_node | TBD |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.numa_nodes | hit, miss, local, foreign, interleave, other | events/s |\n\n",integration_type:"collector",id:"proc.plugin-/sys/devices/system/node-Non-Uniform_Memory_Access",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/sys/fs/bcache",monitored_instance:{name:"BCache",link:"https://bcache.evilpiepirate.org/",categories:["data-collection.storage"],icon_filename:"hard-drive.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["bcache","cache","ssd","block devices"]},overview:"# BCache\n\nPlugin: proc.plugin\nModule: /sys/fs/bcache\n\n## Overview\n\nStatistics for BCache (block layer cache) devices, including cache hit ratios, I/O operations, cache allocations, and bypass activity.\n\n\n\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAutomatically detects BCache devices by reading stats from `/sys/block/*/bcache/`.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ bcache_cache_dirty ](https://github.com/netdata/netdata/blob/master/src/health/health.d/bcache.conf) | disk.bcache_cache_alloc | percentage of cache space used for dirty data and metadata (this usually means your SSD cache is too small) |\n| [ bcache_cache_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/bcache.conf) | disk.bcache_cache_read_races | number of times data was read from the cache, the bucket was reused and invalidated in the last 10 minutes (when this occurs the data is reread from the backing device) |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per disk\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device | TBD |\n| mount_point | TBD |\n| device_type | TBD |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| disk.bcache_cache_alloc | ununsed, dirty, clean, metadata, undefined | percentage |\n| disk.bcache_hit_ratio | 5min, 1hour, 1day, ever | percentage |\n| disk.bcache_rates | congested, writeback | KiB/s |\n| disk.bcache_size | dirty | MiB |\n| disk.bcache_usage | avail | percentage |\n| disk.bcache_cache_read_races | races, errors | operations/s |\n| disk.bcache | hits, misses, collisions, readaheads | operations/s |\n| disk.bcache_bypass | hits, misses | operations/s |\n\n",integration_type:"collector",id:"proc.plugin-/sys/fs/bcache-BCache",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/sys/fs/btrfs",monitored_instance:{name:"BTRFS",link:"",categories:["data-collection.storage"],icon_filename:"filesystem.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["btrfs","filesystem"]},overview:"# BTRFS\n\nPlugin: proc.plugin\nModule: /sys/fs/btrfs\n\n## Overview\n\nThis integration provides usage and error statistics from the BTRFS filesystem.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ btrfs_allocated ](https://github.com/netdata/netdata/blob/master/src/health/health.d/btrfs.conf) | btrfs.disk | percentage of allocated BTRFS physical disk space |\n| [ btrfs_data ](https://github.com/netdata/netdata/blob/master/src/health/health.d/btrfs.conf) | btrfs.data | utilization of BTRFS data space |\n| [ btrfs_metadata ](https://github.com/netdata/netdata/blob/master/src/health/health.d/btrfs.conf) | btrfs.metadata | utilization of BTRFS metadata space |\n| [ btrfs_system ](https://github.com/netdata/netdata/blob/master/src/health/health.d/btrfs.conf) | btrfs.system | utilization of BTRFS system space |\n| [ btrfs_device_read_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/btrfs.conf) | btrfs.device_errors | number of encountered BTRFS read errors |\n| [ btrfs_device_write_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/btrfs.conf) | btrfs.device_errors | number of encountered BTRFS write errors |\n| [ btrfs_device_flush_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/btrfs.conf) | btrfs.device_errors | number of encountered BTRFS flush errors |\n| [ btrfs_device_corruption_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/btrfs.conf) | btrfs.device_errors | number of encountered BTRFS corruption errors |\n| [ btrfs_device_generation_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/btrfs.conf) | btrfs.device_errors | number of encountered BTRFS generation errors |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per btrfs filesystem\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| filesystem_uuid | TBD |\n| filesystem_label | TBD |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| btrfs.disk | unallocated, data_free, data_used, meta_free, meta_used, sys_free, sys_used | MiB |\n| btrfs.data | free, used | MiB |\n| btrfs.metadata | free, used, reserved | MiB |\n| btrfs.system | free, used | MiB |\n| btrfs.commits | commits | commits |\n| btrfs.commits_perc_time | commits | percentage |\n| btrfs.commit_timings | last, max | ms |\n\n### Per btrfs device\n\n\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device_id | TBD |\n| filesystem_uuid | TBD |\n| filesystem_label | TBD |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| btrfs.device_errors | write_errs, read_errs, flush_errs, corruption_errs, generation_errs | errors |\n\n",integration_type:"collector",id:"proc.plugin-/sys/fs/btrfs-BTRFS",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"/sys/kernel/mm/ksm",monitored_instance:{name:"Kernel Same-Page Merging",link:"",categories:["data-collection.operating-systems"],icon_filename:"microchip.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["ksm","samepage","merging"]},overview:"# Kernel Same-Page Merging\n\nPlugin: proc.plugin\nModule: /sys/kernel/mm/ksm\n\n## Overview\n\nKernel Samepage Merging (KSM) is a memory-saving feature in Linux that enables the kernel to examine the\nmemory of different processes and identify identical pages. It then merges these identical pages into a\nsingle page that the processes share. This is particularly useful for virtualization, where multiple virtual\nmachines might be running the same operating system or applications and have many identical pages.\n\nThe collector provides information about the operation and effectiveness of KSM on your system.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Kernel Same-Page Merging instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.ksm | shared, unshared, sharing, volatile | MiB |\n| mem.ksm_savings | savings, offered | MiB |\n| mem.ksm_ratios | savings | percentage |\n\n",integration_type:"collector",id:"proc.plugin-/sys/kernel/mm/ksm-Kernel_Same-Page_Merging",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"proc.plugin",module_name:"ipc",monitored_instance:{name:"Inter Process Communication",link:"",categories:["data-collection.operating-systems"],icon_filename:"network-wired.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["ipc","semaphores","shared memory"]},overview:"# Inter Process Communication\n\nPlugin: proc.plugin\nModule: ipc\n\n## Overview\n\nIPC stands for Inter-Process Communication. It is a mechanism which allows processes to communicate with each\nother and synchronize their actions.\n\nThis collector exposes information about:\n\n- Message Queues: This allows messages to be exchanged between processes. It's a more flexible method that\n allows messages to be placed onto a queue and read at a later time.\n\n- Shared Memory: This method allows for the fastest form of IPC because processes can exchange data by\n reading/writing into shared memory segments.\n\n- Semaphores: They are used to synchronize the operations performed by independent processes. So, if multiple\n processes are trying to access a single shared resource, semaphores can ensure that only one process\n accesses the resource at a given time.\n\n\n\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\nThere are no configuration options.\n\n\n\n#### via File\n\nThere is no configuration file.\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ semaphores_used ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ipc.conf) | system.ipc_semaphores | IPC semaphore utilization |\n| [ semaphore_arrays_used ](https://github.com/netdata/netdata/blob/master/src/health/health.d/ipc.conf) | system.ipc_semaphore_arrays | IPC semaphore arrays utilization |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Inter Process Communication instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.ipc_semaphores | semaphores | semaphores |\n| system.ipc_semaphore_arrays | arrays | arrays |\n| system.message_queue_message | a dimension per queue | messages |\n| system.message_queue_bytes | a dimension per queue | bytes |\n| system.shared_memory_segments | segments | segments |\n| system.shared_memory_bytes | bytes | bytes |\n\n",integration_type:"collector",id:"proc.plugin-ipc-Inter_Process_Communication",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/proc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"python.d.plugin",module_name:"am2320",monitored_instance:{name:"AM2320",link:"https://learn.adafruit.com/adafruit-am2320-temperature-humidity-i2c-sensor/overview",categories:["data-collection.hardware-and-sensors"],icon_filename:"microchip.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["temperature","am2320","sensor","humidity"]},overview:"# AM2320\n\nPlugin: python.d.plugin\nModule: am2320\n\n## Overview\n\nThis collector monitors AM2320 sensor metrics about temperature and humidity.\n\nIt retrieves temperature and humidity values by contacting an AM2320 sensor over i2c.\n\nThis collector is supported on all platforms.\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAssuming prerequisites are met, the collector will try to connect to the sensor via i2c\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\n#### Sensor connection to a Raspberry Pi\n\nConnect the am2320 to the Raspberry Pi I2C pins\n\nRaspberry Pi 3B/4 Pins:\n\n- Board 3.3V (pin 1) to sensor VIN (pin 1)\n- Board SDA (pin 3) to sensor SDA (pin 2)\n- Board GND (pin 6) to sensor GND (pin 3)\n- Board SCL (pin 5) to sensor SCL (pin 4)\n\nYou may also need to add two I2C pullup resistors if your board does not already have them. The Raspberry Pi does have internal pullup resistors but it doesn't hurt to add them anyway. You can use 2.2K - 10K but we will just use 10K. The resistors go from VDD to SCL and SDA each.\n\n\n#### Software requirements\n\nInstall the Adafruit Circuit Python AM2320 library:\n\n`sudo pip3 install adafruit-circuitpython-am2320`\n\n\n\n### Configuration\n\n#### Options\n\nThere are 2 sections:\n\n* Global variables\n* One or more JOBS that can define multiple different instances to monitor.\n\nThe following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values.\n\nAdditionally, the following collapsed table contains all the options that can be configured inside a JOB definition.\n\nEvery configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified.\n\n\n{% details open=true summary=\"Config options\" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Sets the default data collection frequency. | 5 | no |\n| priority | Controls the order of charts at the netdata dashboard. | 60000 | no |\n| autodetection_retry | Sets the job re-check interval in seconds. | 0 | no |\n| penalty | Indicates whether to apply penalty to update_every in case of failures. | yes | no |\n| name | Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. | | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `python.d/am2320.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\n\njob_name:\n job_option1: some_value\n job_option2: some_other_vlaue\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config python.d/am2320.conf\n```\n\n##### Examples\n\n###### Local sensor\n\nA basic JOB configuration\n\n```yaml\nlocal_sensor:\n name: 'Local AM2320'\n\n```\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n\nTo troubleshoot issues with the `am2320` collector, run the `python.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `python.d.plugin` to debug the collector:\n\n ```bash\n ./python.d.plugin am2320 debug trace\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `am2320` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep am2320\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep am2320 /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep am2320\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per AM2320 instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| am2320.temperature | temperature | celsius |\n| am2320.humidity | humidity | percentage |\n\n",integration_type:"collector",id:"python.d.plugin-am2320-AM2320",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/python.d.plugin/am2320/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"python.d.plugin",module_name:"go_expvar",monitored_instance:{name:"Go applications (EXPVAR)",link:"https://pkg.go.dev/expvar",categories:["data-collection.applications"],icon_filename:"go.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["go","expvar","application"]},overview:"# Go applications (EXPVAR)\n\nPlugin: python.d.plugin\nModule: go_expvar\n\n## Overview\n\nThis collector monitors Go applications that expose their metrics with the use of the `expvar` package from the Go standard library. It produces charts for Go runtime memory statistics and optionally any number of custom charts.\n\nIt connects via http to gather the metrics exposed via the `expvar` package.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Enable the go_expvar collector\n\nThe `go_expvar` collector is disabled by default. To enable it, use `edit-config` from the Netdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md), which is typically at `/etc/netdata`, to edit the `python.d.conf` file.\n\n```bash\ncd /etc/netdata # Replace this path with your Netdata config directory, if different\nsudo ./edit-config python.d.conf\n```\n\nChange the value of the `go_expvar` setting to `yes`. Save the file and restart the Netdata Agent with `sudo systemctl restart netdata`, or the [appropriate method](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/start-stop-restart.md) for your system.\n\n\n#### Sample `expvar` usage in a Go application\n\nThe `expvar` package exposes metrics over HTTP and is very easy to use.\nConsider this minimal sample below:\n\n```go\npackage main\n\nimport (\n _ "expvar"\n "net/http"\n)\n\nfunc main() {\n http.ListenAndServe("127.0.0.1:8080", nil)\n}\n```\n\nWhen imported this way, the `expvar` package registers a HTTP handler at `/debug/vars` that\nexposes Go runtime\'s memory statistics in JSON format. You can inspect the output by opening\nthe URL in your browser (or by using `wget` or `curl`).\n\nSample output:\n\n```json\n{\n"cmdline": ["./expvar-demo-binary"],\n"memstats": {"Alloc":630856,"TotalAlloc":630856,"Sys":3346432,"Lookups":27, <omitted for brevity>}\n}\n```\n\nYou can of course expose and monitor your own variables as well.\nHere is a sample Go application that exposes a few custom variables:\n\n```go\npackage main\n\nimport (\n "expvar"\n "net/http"\n "runtime"\n "time"\n)\n\nfunc main() {\n\n tick := time.NewTicker(1 * time.Second)\n num_go := expvar.NewInt("runtime.goroutines")\n counters := expvar.NewMap("counters")\n counters.Set("cnt1", new(expvar.Int))\n counters.Set("cnt2", new(expvar.Float))\n\n go http.ListenAndServe(":8080", nil)\n\n for {\n select {\n case <- tick.C:\n num_go.Set(int64(runtime.NumGoroutine()))\n counters.Add("cnt1", 1)\n counters.AddFloat("cnt2", 1.452)\n }\n }\n}\n```\n\nApart from the runtime memory stats, this application publishes two counters and the\nnumber of currently running Goroutines and updates these stats every second.\n\n\n\n### Configuration\n\n#### Options\n\nThere are 2 sections:\n\n* Global variables\n* One or more JOBS that can define multiple different instances to monitor.\n\nThe following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values.\n\nAdditionally, the following collapsed table contains all the options that can be configured inside a JOB definition.\n\nEvery configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified. Each JOB can be used to monitor a different Go application.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update_every | Sets the default data collection frequency. | 5 | no |\n| priority | Controls the order of charts at the netdata dashboard. | 60000 | no |\n| autodetection_retry | Sets the job re-check interval in seconds. | 0 | no |\n| penalty | Indicates whether to apply penalty to update_every in case of failures. | yes | no |\n| name | Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. | | no |\n| url | the URL and port of the expvar endpoint. Please include the whole path of the endpoint, as the expvar handler can be installed in a non-standard location. | | yes |\n| user | If the URL is password protected, this is the username to use. | | no |\n| pass | If the URL is password protected, this is the password to use. | | no |\n| collect_memstats | Enables charts for Go runtime\'s memory statistics. | | no |\n| extra_charts | Defines extra data/charts to monitor, please see the example below. | | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `python.d/go_expvar.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\n\njob_name:\n job_option1: some_value\n job_option2: some_other_vlaue\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config python.d/go_expvar.conf\n```\n\n##### Examples\n\n###### Monitor a Go app1 application\n\nThe example below sets a configuration for a Go application, called `app1`. Besides the `memstats`, the application also exposes two counters and the number of currently running Goroutines and updates these stats every second.\n\nThe `go_expvar` collector can monitor these as well with the use of the `extra_charts` configuration variable.\n\nThe `extra_charts` variable is a YaML list of Netdata chart definitions.\nEach chart definition has the following keys:\n\n```\nid: Netdata chart ID\noptions: a key-value mapping of chart options\nlines: a list of line definitions\n```\n\n**Note: please do not use dots in the chart or line ID field.\nSee [this issue](https://github.com/netdata/netdata/pull/1902#issuecomment-284494195) for explanation.**\n\n\n**Line definitions**\n\nEach chart can define multiple lines (dimensions).\nA line definition is a key-value mapping of line options.\nEach line can have the following options:\n\n```\n# mandatory\nexpvar_key: the name of the expvar as present in the JSON output of /debug/vars endpoint\nexpvar_type: value type; supported are "float" or "int"\nid: the id of this line/dimension in Netdata\n\n# optional - Netdata defaults are used if these options are not defined\nname: \'\'\nalgorithm: absolute\nmultiplier: 1\ndivisor: 100 if expvar_type == float, 1 if expvar_type == int\nhidden: False\n```\n\nPlease see the following link for more information about the options and their default values:\n[External plugins - dimensions](https://github.com/netdata/netdata/blob/master/src/plugins.d/README.md#dimension)\n\nApart from top-level expvars, this plugin can also parse expvars stored in a multi-level map;\nAll dicts in the resulting JSON document are then flattened to one level.\nExpvar names are joined together with \'.\' when flattening.\n\nExample:\n\n```\n{\n "counters": {"cnt1": 1042, "cnt2": 1512.9839999999983},\n "runtime.goroutines": 5\n}\n```\n\nIn the above case, the exported variables will be available under `runtime.goroutines`,\n`counters.cnt1` and `counters.cnt2` expvar_keys. If the flattening results in a key collision,\nthe first defined key wins and all subsequent keys with the same name are ignored.\n\n\n```yaml\napp1:\n name : \'app1\'\n url : \'http://127.0.0.1:8080/debug/vars\'\n collect_memstats: true\n extra_charts:\n - id: "runtime_goroutines"\n options:\n name: num_goroutines\n title: "runtime: number of goroutines"\n units: goroutines\n family: runtime\n context: expvar.runtime.goroutines\n chart_type: line\n lines:\n - {expvar_key: \'runtime.goroutines\', expvar_type: int, id: runtime_goroutines}\n - id: "foo_counters"\n options:\n name: counters\n title: "some random counters"\n units: awesomeness\n family: counters\n context: expvar.foo.counters\n chart_type: line\n lines:\n - {expvar_key: \'counters.cnt1\', expvar_type: int, id: counters_cnt1}\n - {expvar_key: \'counters.cnt2\', expvar_type: float, id: counters_cnt2}\n\n```\n',troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n\nTo troubleshoot issues with the `go_expvar` collector, run the `python.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `python.d.plugin` to debug the collector:\n\n ```bash\n ./python.d.plugin go_expvar debug trace\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `go_expvar` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep go_expvar\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep go_expvar /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep go_expvar\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Go applications (EXPVAR) instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| expvar.memstats.heap | alloc, inuse | KiB |\n| expvar.memstats.stack | inuse | KiB |\n| expvar.memstats.mspan | inuse | KiB |\n| expvar.memstats.mcache | inuse | KiB |\n| expvar.memstats.live_objects | live | objects |\n| expvar.memstats.sys | sys | KiB |\n| expvar.memstats.gc_pauses | avg | ns |\n\n",integration_type:"collector",id:"python.d.plugin-go_expvar-Go_applications_(EXPVAR)",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/python.d.plugin/go_expvar/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"python.d.plugin",module_name:"pandas",monitored_instance:{name:"Pandas",link:"https://pandas.pydata.org/",categories:["data-collection.databases"],icon_filename:"pandas.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["pandas","python"]},overview:"# Pandas\n\nPlugin: python.d.plugin\nModule: pandas\n\n## Overview\n\n[Pandas](https://pandas.pydata.org/) is a de-facto standard in reading and processing most types of structured data in Python.\nIf you have metrics appearing in a CSV, JSON, XML, HTML, or [other supported format](https://pandas.pydata.org/docs/user_guide/io.html),\neither locally or via some HTTP endpoint, you can easily ingest and present those metrics in Netdata, by leveraging the Pandas collector.\n\nThis collector can be used to collect pretty much anything that can be read by Pandas, and then processed by Pandas.\n\n\nThe collector uses [pandas](https://pandas.pydata.org/) to pull data and do pandas-based preprocessing, before feeding to Netdata.\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\n#### Python Requirements\n\nThis collector depends on some Python (Python 3 only) packages that can usually be installed via `pip` or `pip3`.\n\n```bash\nsudo pip install pandas requests\n```\n\nNote: If you would like to use [`pandas.read_sql`](https://pandas.pydata.org/docs/reference/api/pandas.read_sql.html) to query a database, you will need to install the below packages as well.\n\n```bash\nsudo pip install 'sqlalchemy<2.0' psycopg2-binary\n```\n\n\n\n### Configuration\n\n#### Options\n\nThere are 2 sections:\n\n* Global variables\n* One or more JOBS that can define multiple different instances to monitor.\n\nThe following options can be defined globally: priority, penalty, autodetection_retry, update_every, but can also be defined per JOB to override the global values.\n\nAdditionally, the following collapsed table contains all the options that can be configured inside a JOB definition.\n\nEvery configuration JOB starts with a `job_name` value which will appear in the dashboard, unless a `name` parameter is specified.\n\n\n{% details open=true summary=\"Config options\" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| chart_configs | an array of chart configuration dictionaries | [] | yes |\n| chart_configs.name | name of the chart to be displayed in the dashboard. | None | yes |\n| chart_configs.title | title of the chart to be displayed in the dashboard. | None | yes |\n| chart_configs.family | [family](https://github.com/netdata/netdata/blob/master/docs/dashboards-and-charts/netdata-charts.md#families) of the chart to be displayed in the dashboard. | None | yes |\n| chart_configs.context | [context](https://github.com/netdata/netdata/blob/master/docs/dashboards-and-charts/netdata-charts.md#contexts) of the chart to be displayed in the dashboard. | None | yes |\n| chart_configs.type | the type of the chart to be displayed in the dashboard. | None | yes |\n| chart_configs.units | the units of the chart to be displayed in the dashboard. | None | yes |\n| chart_configs.df_steps | a series of pandas operations (one per line) that each returns a dataframe. | None | yes |\n| update_every | Sets the default data collection frequency. | 5 | no |\n| priority | Controls the order of charts at the netdata dashboard. | 60000 | no |\n| autodetection_retry | Sets the job re-check interval in seconds. | 0 | no |\n| penalty | Indicates whether to apply penalty to update_every in case of failures. | yes | no |\n| name | Job name. This value will overwrite the `job_name` value. JOBS with the same name are mutually exclusive. Only one of them will be allowed running at any time. This allows autodetection to try several alternatives and pick the one that works. | | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `python.d/pandas.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\n\njob_name:\n job_option1: some_value\n job_option2: some_other_vlaue\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config python.d/pandas.conf\n```\n\n##### Examples\n\n###### Temperature API Example\n\nexample pulling some hourly temperature data, a chart for today forecast (mean,min,max) and another chart for current.\n\n{% details open=true summary=\"Config\" %}\n```yaml\ntemperature:\n name: \"temperature\"\n update_every: 5\n chart_configs:\n - name: \"temperature_forecast_by_city\"\n title: \"Temperature By City - Today Forecast\"\n family: \"temperature.today\"\n context: \"pandas.temperature\"\n type: \"line\"\n units: \"Celsius\"\n df_steps: >\n pd.DataFrame.from_dict(\n {city: requests.get(f'https://api.open-meteo.com/v1/forecast?latitude={lat}&longitude={lng}&hourly=temperature_2m').json()['hourly']['temperature_2m']\n for (city,lat,lng)\n in [\n ('dublin', 53.3441, -6.2675),\n ('athens', 37.9792, 23.7166),\n ('london', 51.5002, -0.1262),\n ('berlin', 52.5235, 13.4115),\n ('paris', 48.8567, 2.3510),\n ('madrid', 40.4167, -3.7033),\n ('new_york', 40.71, -74.01),\n ('los_angeles', 34.05, -118.24),\n ]\n }\n );\n df.describe(); # get aggregate stats for each city;\n df.transpose()[['mean', 'max', 'min']].reset_index(); # just take mean, min, max;\n df.rename(columns={'index':'city'}); # some column renaming;\n df.pivot(columns='city').mean().to_frame().reset_index(); # force to be one row per city;\n df.rename(columns={0:'degrees'}); # some column renaming;\n pd.concat([df, df['city']+'_'+df['level_0']], axis=1); # add new column combining city and summary measurement label;\n df.rename(columns={0:'measurement'}); # some column renaming;\n df[['measurement', 'degrees']].set_index('measurement'); # just take two columns we want;\n df.sort_index(); # sort by city name;\n df.transpose(); # transpose so its just one wide row;\n - name: \"temperature_current_by_city\"\n title: \"Temperature By City - Current\"\n family: \"temperature.current\"\n context: \"pandas.temperature\"\n type: \"line\"\n units: \"Celsius\"\n df_steps: >\n pd.DataFrame.from_dict(\n {city: requests.get(f'https://api.open-meteo.com/v1/forecast?latitude={lat}&longitude={lng}¤t_weather=true').json()['current_weather']\n for (city,lat,lng)\n in [\n ('dublin', 53.3441, -6.2675),\n ('athens', 37.9792, 23.7166),\n ('london', 51.5002, -0.1262),\n ('berlin', 52.5235, 13.4115),\n ('paris', 48.8567, 2.3510),\n ('madrid', 40.4167, -3.7033),\n ('new_york', 40.71, -74.01),\n ('los_angeles', 34.05, -118.24),\n ]\n }\n );\n df.transpose();\n df[['temperature']];\n df.transpose();\n\n```\n{% /details %}\n###### API CSV Example\n\nexample showing a read_csv from a url and some light pandas data wrangling.\n\n{% details open=true summary=\"Config\" %}\n```yaml\nexample_csv:\n name: \"example_csv\"\n update_every: 2\n chart_configs:\n - name: \"london_system_cpu\"\n title: \"London System CPU - Ratios\"\n family: \"london_system_cpu\"\n context: \"pandas\"\n type: \"line\"\n units: \"n\"\n df_steps: >\n pd.read_csv('https://london.my-netdata.io/api/v1/data?chart=system.cpu&format=csv&after=-60', storage_options={'User-Agent': 'netdata'});\n df.drop('time', axis=1);\n df.mean().to_frame().transpose();\n df.apply(lambda row: (row.user / row.system), axis = 1).to_frame();\n df.rename(columns={0:'average_user_system_ratio'});\n df*100;\n\n```\n{% /details %}\n###### API JSON Example\n\nexample showing a read_json from a url and some light pandas data wrangling.\n\n{% details open=true summary=\"Config\" %}\n```yaml\nexample_json:\n name: \"example_json\"\n update_every: 2\n chart_configs:\n - name: \"london_system_net\"\n title: \"London System Net - Total Bandwidth\"\n family: \"london_system_net\"\n context: \"pandas\"\n type: \"area\"\n units: \"kilobits/s\"\n df_steps: >\n pd.DataFrame(requests.get('https://london.my-netdata.io/api/v1/data?chart=system.net&format=json&after=-1').json()['data'], columns=requests.get('https://london.my-netdata.io/api/v1/data?chart=system.net&format=json&after=-1').json()['labels']);\n df.drop('time', axis=1);\n abs(df);\n df.sum(axis=1).to_frame();\n df.rename(columns={0:'total_bandwidth'});\n\n```\n{% /details %}\n###### XML Example\n\nexample showing a read_xml from a url and some light pandas data wrangling.\n\n{% details open=true summary=\"Config\" %}\n```yaml\nexample_xml:\n name: \"example_xml\"\n update_every: 2\n line_sep: \"|\"\n chart_configs:\n - name: \"temperature_forcast\"\n title: \"Temperature Forecast\"\n family: \"temp\"\n context: \"pandas.temp\"\n type: \"line\"\n units: \"celsius\"\n df_steps: >\n pd.read_xml('http://metwdb-openaccess.ichec.ie/metno-wdb2ts/locationforecast?lat=54.7210798611;long=-8.7237392806', xpath='./product/time[1]/location/temperature', parser='etree')|\n df.rename(columns={'value': 'dublin'})|\n df[['dublin']]|\n\n```\n{% /details %}\n###### SQL Example\n\nexample showing a read_sql from a postgres database using sqlalchemy.\n\n{% details open=true summary=\"Config\" %}\n```yaml\nsql:\n name: \"sql\"\n update_every: 5\n chart_configs:\n - name: \"sql\"\n title: \"SQL Example\"\n family: \"sql.example\"\n context: \"example\"\n type: \"line\"\n units: \"percent\"\n df_steps: >\n pd.read_sql_query(\n sql='\\\n select \\\n random()*100 as metric_1, \\\n random()*100 as metric_2 \\\n ',\n con=create_engine('postgresql://localhost/postgres?user=netdata&password=netdata')\n );\n\n```\n{% /details %}\n",troubleshooting:"## Troubleshooting\n\n### Debug Mode\n\n\nTo troubleshoot issues with the `pandas` collector, run the `python.d.plugin` with the debug option enabled. The output\nshould give you clues as to why the collector isn't working.\n\n- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on\n your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`.\n\n ```bash\n cd /usr/libexec/netdata/plugins.d/\n ```\n\n- Switch to the `netdata` user.\n\n ```bash\n sudo -u netdata -s\n ```\n\n- Run the `python.d.plugin` to debug the collector:\n\n ```bash\n ./python.d.plugin pandas debug trace\n ```\n\n### Getting Logs\n\nIf you're encountering problems with the `pandas` collector, follow these steps to retrieve logs and identify potential issues:\n\n- **Run the command** specific to your system (systemd, non-systemd, or Docker container).\n- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.\n\n#### System with systemd\n\nUse the following command to view logs generated since the last Netdata service restart:\n\n```bash\njournalctl _SYSTEMD_INVOCATION_ID=\"$(systemctl show --value --property=InvocationID netdata)\" --namespace=netdata --grep pandas\n```\n\n#### System without systemd\n\nLocate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name:\n\n```bash\ngrep pandas /var/log/netdata/collector.log\n```\n\n**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues.\n\n#### Docker Container\n\nIf your Netdata runs in a Docker container named \"netdata\" (replace if different), use this command:\n\n```bash\ndocker logs netdata 2>&1 | grep pandas\n```\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\nThis collector is expecting one row in the final pandas DataFrame. It is that first row that will be taken\nas the most recent values for each dimension on each chart using (`df.to_dict(orient='records')[0]`).\nSee [pd.to_dict()](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_dict.html).\"\n\n\n### Per Pandas instance\n\nThese metrics refer to the entire monitored application.\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n\n",integration_type:"collector",id:"python.d.plugin-pandas-Pandas",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/python.d.plugin/pandas/metadata.yaml",functions:"",related_resources:""},{meta:{id:"collector-scripts.d.plugin-nagios",plugin_name:"scripts.d.plugin",module_name:"nagios",monitored_instance:{name:"Nagios Plugins and Custom Scripts",link:"https://www.nagios-plugins.org/",categories:["data-collection.synthetic-testing"],icon_filename:"nagios.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["nagios","plugins","checks","scripts","monitoring"]},overview:"# Nagios Plugins and Custom Scripts\n\nPlugin: scripts.d.plugin\nModule: nagios\n\n## Overview\n\nThis collector runs [Nagios-compatible plugins](https://www.nagios-plugins.org/) and custom scripts in any language (Bash, PowerShell, Python, Go, etc.). It provides:\n\n- **Check state monitoring** \u2014 tracks whether each check returns OK, WARNING, CRITICAL, or UNKNOWN\n- **Execution metrics** \u2014 measures run duration, CPU time, and memory usage of each check\n- **Automatic performance data charts** \u2014 any [Nagios performance data](https://nagios-plugins.org/doc/guidelines.html) in the check output is parsed and charted automatically\n- **Threshold-based alerting** \u2014 when performance data includes warning/critical thresholds, Netdata derives threshold state and creates built-in alerts\n\n\nNetdata executes each configured command on a schedule, reads the process exit code to determine the check state, and parses the standard output for a status message and optional [performance data](https://nagios-plugins.org/doc/guidelines.html). Any performance data is automatically converted into charts.\n\n:::tip\n\nYou can use packaged [Nagios plugins](https://www.nagios-plugins.org/) or write your own scripts \u2014 any executable that follows the Nagios plugin output format will work.\n\n:::\n\n<details open><summary><strong>Nagios Plugin Output Format</strong></summary>\n\nA Nagios-compatible plugin communicates through two channels: the **process exit code** and **standard output**. For the full specification, see the [Nagios Plugin Development Guidelines](https://nagios-plugins.org/doc/guidelines.html).\n\n#### Exit Codes\n\nThe exit code is the **only** thing that determines the check state \u2014 the output text is for display purposes only.\n\n| Exit Code | State | Meaning |\n|:---------:|:------|:--------|\n| 0 | **OK** | Check passed |\n| 1 | **WARNING** | Above warning threshold or degraded |\n| 2 | **CRITICAL** | Above critical threshold or service down |\n| 3 | **UNKNOWN** | Invalid arguments or internal error |\n\n#### Standard Output\n\nThe output follows this structure:\n\n```text\nSTATUS TEXT | perfdata1=val;warn;crit;min;max perfdata2=val\nLONG OUTPUT LINE 1\nLONG OUTPUT LINE 2 | more_perfdata=val\n```\n\n| Part | Description |\n|:-----|:------------|\n| **Status text** | Text before the pipe on the first line. Shown as the job's status message. |\n| **Performance data** | Text after the pipe on any line. Parsed into charts automatically. |\n| **Long output** | Lines 2+ before the pipe. Additional detail text. |\n\n> **Note:** The pipe separator is optional. Without it, the entire first line is the status text and no performance data charts are created.\n\n#### Performance Data Format\n\nEach performance data metric uses this format:\n\n```text\n'label'=value[UOM];[warn];[crit];[min];[max]\n```\n\n| Field | Required | Description |\n|:------|:--------:|:------------|\n| `label` | Yes | Metric name. Quote with single quotes if it contains spaces. |\n| `value` | Yes | Numeric value. |\n| `UOM` | No | Unit of measurement (see table below). |\n| `warn` | No | Warning threshold range. |\n| `crit` | No | Critical threshold range. |\n| `min` | No | Minimum possible value. |\n| `max` | No | Maximum possible value. |\n\nSeparate multiple metrics with spaces.\n\n**Supported Units of Measurement (UOM):**\n\n| UOM | Meaning | How Netdata charts it |\n|:----|:--------|:----------------------|\n| *(none)* | Unitless number | Charted as-is |\n| `s` | Seconds (also `ms`, `us`, `ns`) | Normalized to seconds |\n| `%` | Percentage | Charted as percentage |\n| `B` | Bytes (also `KB`, `MB`, `GB`, `TB`) | Charted in bytes |\n| `b` | Bits (also `Kb`, `Mb`, `Gb`, `Tb`) | Charted in bits |\n| `c` | Continuous counter | Charted as incremental rate |\n\n#### Threshold Ranges\n\nThresholds use the format `[@]start:end`, where a bare number like `10` is shorthand for `0:10` and `~` represents negative infinity (no lower bound). An alert triggers when the value falls **outside** the range (or **inside** with the `@` prefix):\n\n| Range | Alert when... |\n|:------|:--------------|\n| `10` | value < 0 or value > 10 |\n| `10:` | value < 10 |\n| `~:10` | value > 10 |\n| `10:20` | value < 10 or value > 20 |\n| `@10:20` | 10 \u2264 value \u2264 20 |\n\nWhen `warn` and `crit` ranges are provided on non-counter metrics, Netdata automatically derives a threshold state (ok / warning / critical) and creates charts with built-in alerts.\n\n**Common threshold patterns:**\n\n| I want to alert when... | `warn` | `crit` |\n|:------------------------|:-------|:-------|\n| Value exceeds a limit (e.g., response time > 2s) | `~:2` | `~:5` |\n| Value drops below a floor (e.g., free space < 10%) | `10:` | `5:` |\n| Value is outside a band (e.g., temperature 20\u201380) | `20:80` | `10:90` |\n\n#### Example\n\nA minimal Nagios-compatible script:\n\n```bash\n#!/bin/sh\necho \"OK - 85% free memory | free_pct=85%;20:;10:;0;100 used_kb=2380912KB;;;0;16380000\"\nexit 0\n```\n\nThis produces:\n- **Check state**: OK (exit code 0)\n- **Status text**: `OK - 85% free memory`\n- **Charts**: `free_pct` (percentage with warning/critical thresholds) and `used_kb` (bytes)\n\n</details>\n\n:::info\n\n**Retry behavior:** When a check returns a non-OK state, Netdata does not alert immediately. The check enters a **soft state** and retries at the `retry_interval` rate. Only after `max_check_attempts` consecutive failures does it become a **hard state** and trigger alerts. If the check recovers during retries, it returns to OK without alerting. The `retry` dimension on state charts indicates a soft state is in progress.\n\n:::\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nNo additional permissions are required by the collector itself. If a check needs access to protected files, sockets, or system commands, provide that access to the check command or helper it uses.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nNo automatic detection is performed. Add one or more jobs explicitly and point each job to the script or executable you want Netdata to run.\n\n\n#### Limits\n\nEach job runs one configured command. Additional charts are created only when the check emits Nagios performance data.\n\n\n#### Performance Impact\n\nEach job starts an external command. The impact depends mostly on how often the job runs and how expensive the check command itself is.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Security requirements for plugin executables\n\nNetdata validates the `plugin` path before execution. On Linux/macOS, the executable must meet these requirements:\n\n- Must be a regular file (not a directory or device node)\n- Must be executable (at least one execute bit set)\n- Owned by **root**\n- Not writable by group or others (no `g+w` or `o+w`)\n- All ancestor directories (up to and including `/`) owned by **root**\n- All ancestor directories not writable by group or others\n- Symlinks are resolved \u2014 the target must meet these rules\n\nOn Windows, path validation is not enforced. Ensure executables are stored in directories with appropriate ACLs.\n\nThis prevents local privilege escalation through a modified check script. If validation fails, the job will not start and an error is logged.\n\n:::caution\n\n**Linux/macOS:** Using an interpreter (e.g. `/bin/bash`) as `plugin` with a script path in `args` is **discouraged**. Netdata validates the interpreter binary but **cannot verify scripts passed via `args`**. A writable script in `args` is a privilege escalation vector. Instead, make scripts directly executable and point `plugin` to the script itself.\n\n**Windows:** Point `plugin` directly to a `.ps1`, `.bat`, or `.cmd` script \u2014 Netdata invokes the correct interpreter automatically. Path validation is not enforced on Windows \u2014 ensure scripts are stored in directories with appropriate ACLs.\n\n:::\n\n\n#### Install check commands\n\nInstall the Nagios plugins or other Nagios-compatible scripts that you want Netdata to run.\n\nMost Linux distributions provide Nagios plugin packages:\n\n```bash\n# Debian/Ubuntu\napt install nagios-plugins\n\n# RHEL/CentOS/Fedora\ndnf install nagios-plugins-all\n```\n\nPackaged Nagios plugins are typically installed as root-owned executables, which satisfies the security requirements above.\n\n\n#### Prepare custom check scripts\n\nIf you are writing your own check scripts instead of using packaged Nagios plugins:\n\n- Place scripts in a root-owned directory (e.g., `/usr/local/lib/netdata/checks/`)\n- Set ownership and permissions: `sudo chown root:root /path/to/script.sh && sudo chmod 755 /path/to/script.sh`\n- Test as the `netdata` user to verify permissions and environment: `sudo -u netdata /path/to/script.sh`\n- Verify the exit code: `echo $?` (must be 0, 1, 2, or 3)\n- Verify the output matches the Nagios plugin output format described in the Overview above\n\n\n\n### Configuration\n\n#### Options\n\nAdd jobs under `jobs:`. Each job runs one Nagios-compatible check command.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Group | Option | Description | Default | Required |\n|:------|:-----|:------------|:--------|:---------:|\n| **Collection** | update_every | Minimum resolution of the collector\'s scheduler, in seconds. `check_interval` and `retry_interval` are rounded up to the nearest multiple of this value. For example, if `update_every` is 10 and `check_interval` is 25s, the check actually runs every 30s. In most cases the default is fine \u2014 just set `check_interval`. | 10 | no |\n| **Target** | check_name | Name that identifies this check type for chart grouping and metric naming. If omitted, Netdata derives it from the basename of `plugin` (removing any file extension). Use this when the plugin filename is generic and you want a more descriptive chart section \u2014 for example, when multiple jobs run `check_nrpe` against different remote checks, set `check_name` to distinguish them (`check_disk`, `check_load`, etc.). In the dashboard, charts appear under `Synthetic > Nagios > Perfdata > <check_name>`. For example, with `check_name: check_memory` and a script that outputs `caches=2380912KB`, Netdata creates: - `nagios.perfdata.check_memory.job.execution_state` \u2014 check state (ok, warning, critical, unknown, timeout, paused, retry) - `nagios.perfdata.check_memory.bytes_caches` \u2014 perfdata value chart - `nagios.perfdata.check_memory.bytes_caches_threshold_state` \u2014 threshold state (if warn/crit thresholds are present) | | no |\n| | plugin | Absolute path to the Nagios-compatible check command to run. This can be a packaged Nagios plugin or your own executable script. The executable must be root-owned and not writable by group or others (see prerequisites). The command should return exit code `0`, `1`, `2`, or `3` and may print performance data after <code>|</code>. | | yes |\n| | args | Arguments passed to the command. | | no |\n| | arg_values | Values exposed to `$ARG1$` through `$ARG32$` for macro expansion. The first value maps to `$ARG1$`, the second to `$ARG2$`, and so on. | | no |\n| | working_directory | Working directory used when running the command. | | no |\n| **Scheduling** | timeout | Maximum time allowed for one command run. If the check exceeds this limit, the job state becomes `timeout`. | 5s | no |\n| | check_interval | Interval between regular checks. | 5m | no |\n| | retry_interval | Interval between retries while a check remains in a non-OK soft state. | 1m | no |\n| | max_check_attempts | Number of attempts before a non-OK result becomes a hard state. | 3 | no |\n| | check_period | Name of the [time period](https://github.com/netdata/netdata/blob/master/src/go/plugin/scripts.d/pkg/timeperiod/README.md) that controls when the job is allowed to run. The built-in `24x7` period (always allowed) is the default. Outside the active period, the check does not execute and the job state becomes `paused`. | 24x7 | no |\n| | time_periods | Custom named [time periods](https://github.com/netdata/netdata/blob/master/src/go/plugin/scripts.d/pkg/timeperiod/README.md) defined inside the same job. Supports `weekly`, `nth_weekday`, and `date` rule types. | | no |\n| **Environment** | [environment](#option-environment-environment) | Extra environment variables added on top of the collector\'s limited execution baseline. The check does not inherit the full Netdata process environment. | | no |\n| | [custom_vars](#option-environment-custom-vars) | Custom service variables exposed to the check as Nagios-style macros. | | no |\n| **Virtual Node** | vnode | Associate the job with a virtual node so the check can use host-specific labels and macros. | | no |\n| **Misc** | notes | Optional notes for the job definition. | | no |\n\n<a id="option-environment-environment"></a>\n##### environment\n\nA key-value map of environment variables injected into the check\'s process. Use this when your script depends on variables that are not part of the collector\'s default environment.\n\n```yaml\njobs:\n - name: oracle_check\n plugin: /usr/local/bin/check_oracle.sh\n environment:\n ORACLE_HOME: /opt/oracle/product/19c\n LD_LIBRARY_PATH: /opt/oracle/product/19c/lib\n```\n\n\n<a id="option-environment-custom-vars"></a>\n##### custom_vars\n\nA key-value map of custom service variables. Each entry is exposed as a `NAGIOS__SERVICE<UPPERCASE_KEY>` environment variable and can be referenced in `args` using the Nagios macro syntax `$_SERVICE<KEY>$`.\n\n```yaml\njobs:\n - name: check_db\n plugin: /usr/lib/nagios/plugins/check_pgsql\n args: ["-H", "$_SERVICEDBHOST$", "-d", "$_SERVICEDBNAME$"]\n custom_vars:\n DBHOST: db.example.com\n DBNAME: production\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `scripts.d/nagios.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config scripts.d/nagios.conf\n```\n\n##### Examples\n\n###### Basic check\n\nRun a Nagios check command on a fixed interval.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: ping_localhost\n plugin: /usr/lib/nagios/plugins/check_ping\n args: ["-H", "127.0.0.1", "-w", "100.0,20%", "-c", "200.0,40%"]\n timeout: 5s\n check_interval: 1m\n retry_interval: 30s\n max_check_attempts: 3\n\n```\n{% /details %}\n###### End-to-end custom script\n\nWrite a custom check script, then configure Netdata to run it.\n\n**1. Create the script** (e.g., `/usr/local/lib/netdata/checks/check_api.sh`):\n\n```bash\n#!/bin/sh\n# Check HTTP endpoint health\nURL="http://localhost:8080/health"\n\nresponse=$(curl -s -o /dev/null -w "%{http_code} %{time_total}" --max-time 5 "$URL" 2>/dev/null)\ncurl_exit=$?\n\nif [ "$curl_exit" -ne 0 ]; then\n echo "UNKNOWN - Could not connect to $URL (curl exit code $curl_exit)"\n exit 3\nfi\n\nhttp_code=$(echo "$response" | cut -d\' \' -f1)\nresponse_time=$(echo "$response" | cut -d\' \' -f2)\n\nif [ "$http_code" -ge 500 ]; then\n echo "CRITICAL - $URL returned HTTP $http_code | response_time=${response_time}s;2;5;0;"\n exit 2\nelif [ "$http_code" -ne 200 ]; then\n echo "WARNING - $URL returned HTTP $http_code | response_time=${response_time}s;2;5;0;"\n exit 1\nfi\n\necho "OK - $URL returned HTTP $http_code | response_time=${response_time}s;2;5;0;"\nexit 0\n```\n\n**2. Set ownership, permissions, and test it:**\n\n```bash\nsudo chown root:root /usr/local/lib/netdata/checks/check_api.sh\nsudo chmod 755 /usr/local/lib/netdata/checks/check_api.sh\nsudo -u netdata /usr/local/lib/netdata/checks/check_api.sh\necho "Exit code: $?"\n```\n\n**3. Add the configuration below, then restart Netdata** (`sudo systemctl restart netdata`). After restarting, look for `nagios.job.execution_state` and related charts in the Netdata dashboard.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: api_health\n plugin: /usr/local/lib/netdata/checks/check_api.sh\n timeout: 10s\n check_interval: 1m\n retry_interval: 30s\n max_check_attempts: 3\n\n```\n{% /details %}\n###### Custom script (minimal)\n\nRun your own Nagios-compatible shell script with minimal configuration.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: custom_memory_check\n plugin: /opt/netdata/check_memory.sh\n timeout: 5s\n check_interval: 1m\n\n```\n{% /details %}\n###### Windows PowerShell check\n\nOn Windows, point `plugin` directly to a `.ps1` script. Netdata automatically invokes it through `powershell.exe` with `-NoProfile -ExecutionPolicy Bypass -File`. The `.bat` and `.cmd` scripts are also supported (invoked via `cmd.exe /c`).\n\n**1. Create the script** (e.g., `C:\\Netdata\\checks\\check_service.ps1`):\n\n```powershell\n# Check if a Windows service is running\nparam([string]$ServiceName = "W3SVC")\n\n$svc = Get-Service -Name $ServiceName -ErrorAction SilentlyContinue\n\nif (-not $svc) {\n Write-Host "UNKNOWN - Service $ServiceName not found | running=0;;;0;1"\n exit 3\n}\n\nif ($svc.Status -eq \'Running\') {\n Write-Host "OK - $ServiceName is running | running=1;;;0;1"\n exit 0\n} else {\n Write-Host "CRITICAL - $ServiceName is $($svc.Status) | running=0;;;0;1"\n exit 2\n}\n```\n\n**2. Test from PowerShell** (run as the user the Netdata service runs under):\n\n```powershell\npowershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\\Netdata\\checks\\check_service.ps1"\necho "Exit code: $LASTEXITCODE"\n```\n\n**3. Add the configuration below, then restart Netdata** (`Restart-Service netdata`).\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: service_health_win\n plugin: C:\\Netdata\\checks\\check_service.ps1\n timeout: 10s\n check_interval: 1m\n\n```\n{% /details %}\n###### Remote check via NRPE\n\nRun a check on a remote host using `check_nrpe`. This works exactly like a Nagios NRPE configuration \u2014 install `nagios-nrpe-plugin` and point to the remote NRPE agent. Increase `timeout` if the remote host is slow to respond.\n\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: remote_disk\n plugin: /usr/lib/nagios/plugins/check_nrpe\n args: ["-H", "192.168.1.10", "-c", "check_disk", "-a", "20% 10% /"]\n timeout: 30s\n check_interval: 5m\n\n```\n{% /details %}\n###### Check with a job-local schedule\n\nRun a check only during selected hours by defining time periods inside the job.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: business_hours_http\n plugin: /usr/lib/nagios/plugins/check_http\n args: ["-H", "example.com"]\n check_period: business_hours\n time_periods:\n - name: business_hours\n alias: Business hours\n rules:\n - type: weekly\n days: [monday, tuesday, wednesday, thursday, friday]\n ranges: ["09:00-18:00"]\n\n```\n{% /details %}\n###### Check with virtual node macros\n\nRun a check against a virtual node and fill command arguments from Nagios-style macros.\n\n{% details open=true summary="Config" %}\n```yaml\njobs:\n - name: check_ssh\n plugin: /usr/lib/nagios/plugins/check_ssh\n args: ["-H", "$HOSTADDRESS$", "-p", "$ARG1$"]\n arg_values: ["22"]\n vnode: remote-server\n check_interval: 5m\n\n```\n{% /details %}\n',troubleshooting:"## Troubleshooting\n\n### The command cannot be executed\n\nConfirm that the path in `plugin` exists, is executable, and can be accessed by the `netdata` user. If the check depends on external files or helpers, verify those paths and permissions too.\n\n\n### No performance-data charts appear\n\nPerformance-data charts are created only when the check prints Nagios performance data after the `|` separator. If the command returns only a status line without performance data, Netdata will still show the job state but no extra charts.\n\n\n### Some performance-data values are ignored\n\nCheck that each metric uses the Nagios performance-data format `label=value[UOM];warn;crit;min;max` and that multiple metrics are separated by spaces. If a label contains spaces, quote it. Netdata charts the main value for every perfdata metric, and for non-counter metrics it derives threshold state from `warn` and `crit`; it does not create separate charts for raw `min`, `max`, or raw threshold bounds.\n\n\n### The job state does not match the output text\n\nThe visible text does not decide the state. Netdata uses the process exit code instead: `0` for OK, `1` for WARNING, `2` for CRITICAL, and `3` for UNKNOWN. If the check exceeds the configured `timeout`, Netdata reports `timeout` even if the script never had a chance to print its own final state. If the current time is outside `check_period`, Netdata reports `paused` until the check is allowed to run again.\n\n\n### Only the first output line appears as the main status\n\nThis is expected. Netdata uses the first line as the summary shown for the job. Additional lines are kept as long output, and any `|` sections found on later lines are also parsed for performance data.\n\n\n### Macros are not expanded as expected\n\nCheck that positional values are provided in `arg_values`, custom service variables are defined in `custom_vars`, and any virtual-node labels needed for host macros are present on the selected `vnode`.\n\n\n### The script works in a shell but fails under Netdata\n\nNagios checks run with a limited execution environment rather than inheriting the full Netdata process environment. If the script depends on extra variables, set them explicitly in `environment` instead of relying on ambient shell state.\n\n\n### Built-in alerts cover warning and critical states only\n\nThis collector installs stock Netdata health alerts for the `warning` and `critical` states on `nagios.job.execution_state` and `nagios.job.perfdata_threshold_state`. Both stock alert families suppress soft retry states by checking that `retry` is not active. If you also want alerts for `unknown`, `timeout`, `paused`, or more specific perfdata behavior, build your own rules on top of these contexts. The `nagios.job.perfdata_threshold_state` chart uses the `perfdata_value` label to identify which perfdata metric each threshold state belongs to.\n\n\n### Configuration changes are not picked up\n\nAfter editing `scripts.d/nagios.conf`, restart the Netdata Agent for changes to take effect: `sudo systemctl restart netdata`.\n\n\n### Script stderr output is not visible\n\nNetdata captures the check's standard output for status and performance data parsing. Standard error (stderr) is logged by the collector but not used for state or charts. If your script writes errors to stderr, check the Netdata error log for details.\n\n\n### Job state is always timeout\n\nThe default timeout is 5 seconds, which is too short for many checks \u2014 especially remote checks (`check_nrpe`, `check_ssh`) or HTTP checks with SSL negotiation. Increase the `timeout` value in your job configuration (e.g. `timeout: 30s`).\n\n\n### Check works as root but fails under Netdata\n\nThe Netdata Agent runs as the `netdata` user. If a check needs to read protected files, access SNMP, or connect to local sockets, it must be accessible to the `netdata` user. Test as that user first: `sudo -u netdata /path/to/check`. Common fixes include adding the `netdata` user to the required system group or using `sudo` with a specific NOPASSWD rule for the check command.\n\n\n### Windows script support\n\nOn Windows, point `plugin` directly to a `.ps1`, `.bat`, or `.cmd` script. Netdata automatically invokes `.ps1` scripts through `powershell.exe` and `.bat`/`.cmd` scripts through `cmd.exe`. Ensure scripts are stored in directories with appropriate ACLs.\n\n\n",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ nagios_job_execution_state_warn ](https://github.com/netdata/netdata/blob/master/src/health/health.d/nagios.conf) | nagios.job.execution_state | Nagios job ${label:nagios_job} is in WARNING state |\n| [ nagios_job_execution_state_crit ](https://github.com/netdata/netdata/blob/master/src/health/health.d/nagios.conf) | nagios.job.execution_state | Nagios job ${label:nagios_job} is in CRITICAL state |\n| [ nagios_job_perfdata_threshold_state_warn ](https://github.com/netdata/netdata/blob/master/src/health/health.d/nagios.conf) | nagios.job.perfdata_threshold_state | Nagios job ${label:nagios_job} perfdata ${label:perfdata_value} is in WARNING threshold state |\n| [ nagios_job_perfdata_threshold_state_crit ](https://github.com/netdata/netdata/blob/master/src/health/health.d/nagios.conf) | nagios.job.perfdata_threshold_state | Nagios job ${label:nagios_job} perfdata ${label:perfdata_value} is in CRITICAL threshold state |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\nEach configured job produces execution state and resource usage charts. When a check emits Nagios performance data, additional charts are created automatically for each metric. Non-counter perfdata with warning/critical thresholds also get threshold state charts for alerting.\n\n\n### Per job\n\nThese metrics refer to each configured check job.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| nagios_job | Job name as defined in the configuration. |\n| perfdata_value | Identifies which performance data metric a threshold state belongs to. Format is `<unit_class>_<label>`, where `<unit_class>` is derived from the UOM (`time`, `bytes`, `bits`, `percent`, or `generic`) and `<label>` is the sanitized metric label from the check output. For example, `repl_lag=5s` produces `time_repl_lag`. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| nagios.job.execution_state | ok, warning, critical, unknown, timeout, paused, retry | state |\n| nagios.job.perfdata_threshold_state | no_threshold, ok, warning, critical, retry | state |\n| nagios.job.execution_duration | duration | seconds |\n| nagios.job.execution_cpu_total | total | seconds |\n| nagios.job.execution_max_rss | rss | bytes |\n\n",integration_type:"collector",id:"scripts.d.plugin-nagios-Nagios_Plugins_and_Custom_Scripts",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/scripts.d/collector/nagios/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"slabinfo.plugin",module_name:"slabinfo.plugin",monitored_instance:{name:"Linux kernel SLAB allocator statistics",link:"https://kernel.org/",categories:["data-collection.operating-systems"],icon_filename:"linuxserver.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["linux kernel","slab","slub","slob","slabinfo"]},overview:"# Linux kernel SLAB allocator statistics\n\nPlugin: slabinfo.plugin\nModule: slabinfo.plugin\n\n## Overview\n\nCollects metrics on kernel SLAB cache utilization to monitor the low-level performance impact of workloads in the kernel.\n\n\nThe plugin parses `/proc/slabinfo`\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\nThis integration requires read access to `/proc/slabinfo`, which is accessible only to the root user by default. Netdata uses Linux Capabilities to give the plugin access to this file. `CAP_DAC_READ_SEARCH` is added automatically during installation. This capability allows bypassing file read permission checks and directory read and execute permission checks. If file capabilities are not usable, then the plugin is instead installed with the SUID bit set in permissions sVko that it runs as root.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDue to the large number of metrics generated by this integration, it is disabled by default and must be manually enabled inside `/etc/netdata/netdata.conf`\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Minimum setup\n\nIf you installed `netdata` using a package manager, it is also necessary to install the package `netdata-plugin-slabinfo`.\n\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="The main configuration file." %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| Enable plugin | As described above plugin is disabled by default, this option is used to enable plugin. | no | yes |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugins]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\nSLAB cache utilization metrics for the whole system.\n\n### Per Linux kernel SLAB allocator statistics instance\n\n\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.slabmemory | a dimension per cache | B |\n| mem.slabfilling | a dimension per cache | % |\n| mem.slabwaste | a dimension per cache | B |\n\n",integration_type:"collector",id:"slabinfo.plugin-slabinfo.plugin-Linux_kernel_SLAB_allocator_statistics",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/slabinfo.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"tc.plugin",module_name:"tc.plugin",monitored_instance:{name:"tc QoS classes",link:"https://wiki.linuxfoundation.org/networking/iproute2",categories:["data-collection.networking"],icon_filename:"netdata.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# tc QoS classes\n\nPlugin: tc.plugin\nModule: tc.plugin\n\n## Overview\n\nExamine tc metrics to gain insights into Linux traffic control operations. Study packet flow rates, queue lengths, and drop rates to optimize network traffic flow.\n\nThe plugin uses `tc` command to collect information about Traffic control.\n\nThis collector is only supported on the following platforms:\n\n- Linux\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs to access command `tc` to get the necessary metrics. To achieve this netdata modifies permission of file `/usr/libexec/netdata/plugins.d/tc-qos-helper.sh`.\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Create `tc-qos-helper.conf`\n\nIn order to view tc classes, you need to create the file `/etc/netdata/tc-qos-helper.conf` with content:\n\n```text\ntc_show="class"\n```\n\n\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config option" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| script to run to get tc values | Path to script `tc-qos-helper.sh` | usr/libexec/netdata/plugins.d/tc-qos-helper.s | no |\n| enable show all classes and qdiscs for all interfaces | yes/no flag to control what data is presented. | yes | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:tc]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic example configuration using classes defined in `/etc/iproute2/tc_cls`.\n\nAn example of class IDs mapped to names in that file can be:\n\n```text\n2:1 Standard\n2:8 LowPriorityData\n2:10 HighThroughputData\n2:16 OAM\n2:18 LowLatencyData\n2:24 BroadcastVideo\n2:26 MultimediaStreaming\n2:32 RealTimeInteractive\n2:34 MultimediaConferencing\n2:40 Signalling\n2:46 Telephony\n2:48 NetworkControl\n```\n\nYou can read more about setting up the tc rules in rc.local in this [GitHub issue](https://github.com/netdata/netdata/issues/4563#issuecomment-455711973).\n\n\n```yaml\n[plugin:tc]\n script to run to get tc values = /usr/libexec/netdata/plugins.d/tc-qos-helper.sh\n enable show all classes and qdiscs for all interfaces = yes\n\n```\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per network device direction\n\nMetrics related to QoS network device directions. Each direction (in/out) produces its own set of the following metrics.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device | The network interface. |\n| device_name | The network interface name |\n| group | The device family |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| tc.qos | a dimension per class | kilobits/s |\n| tc.qos_packets | a dimension per class | packets/s |\n| tc.qos_dropped | a dimension per class | packets/s |\n| tc.qos_tokens | a dimension per class | tokens |\n| tc.qos_ctokens | a dimension per class | ctokens |\n\n",integration_type:"collector",id:"tc.plugin-tc.plugin-tc_QoS_classes",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/tc.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"timex.plugin",module_name:"timex.plugin",monitored_instance:{name:"Timex",link:"",categories:["data-collection.networking"],icon_filename:"syslog.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# Timex\n\nPlugin: timex.plugin\nModule: timex.plugin\n\n## Overview\n\nExamine Timex metrics to gain insights into system clock operations. Study time sync status, clock drift, and adjustments to ensure accurate system timekeeping.\n\nIt uses system call adjtimex on Linux and ntp_adjtime on FreeBSD or Mac to monitor the system kernel clock synchronization state.\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis integration doesn't support auto-detection.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nAt least one option ('clock synchronization state', 'time offset') needs to be enabled for this collector to run.\n\n{% details open=true summary=\"Config options\" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n| clock synchronization state | Make chart showing system clock synchronization state. | yes | yes |\n| time offset | Make chart showing computed time offset between local system and reference clock | yes | yes |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:timex]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\n\n###### Basic\n\nA basic configuration example.\n\n{% details open=true summary=\"Config\" %}\n```yaml\n[plugin:timex]\n update every = 1\n clock synchronization state = yes\n time offset = yes\n\n```\n{% /details %}\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ system_clock_sync_state ](https://github.com/netdata/netdata/blob/master/src/health/health.d/timex.conf) | system.clock_sync_state | when set to 0, the system kernel believes the system clock is not properly synchronized to a reliable server |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Timex instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.clock_sync_state | state | state |\n| system.clock_status | unsync, clockerr | status |\n| system.clock_sync_offset | offset | milliseconds |\n\n",integration_type:"collector",id:"timex.plugin-timex.plugin-Timex",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/timex.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"GetHardwareInfo",monitored_instance:{name:"Hardware information collected from kernel ring.",link:"https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/",categories:["data-collection.hardware-and-sensors"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["cpu","temperature"]},overview:"# Hardware information collected from kernel ring.\n\nPlugin: windows.plugin\nModule: GetHardwareInfo\n\n## Overview\n\nThis collector monitors cpu temperature on Windows systems.\n\n\nIt reads `msr` register using netdata_driver.sys driver.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis optional feature requires the Netdata Driver (netdata_driver.sys) to be installed on the host.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:GetHardwareInfo]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Hardware information collected from kernel ring. instance\n\nThis metric show latest CPU temperature.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cpu.temperature | a dimension per core | Celcius |\n\n",integration_type:"collector",id:"windows.plugin-GetHardwareInfo-Hardware_information_collected_from_kernel_ring.",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"GetPowerSupply",monitored_instance:{name:"Power Supply (Win)",link:"https://learn.microsoft.com/en-us/windows/win32/power/power-management-portal",categories:["data-collection.hardware-and-sensors"],icon_filename:"powersupply.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["power supply"]},overview:"# Power Supply (Win)\n\nPlugin: windows.plugin\nModule: GetPowerSupply\n\n## Overview\n\nThis collector monitors power supply statistics on Windows systems.\n\n\nIt uses Windows Internal API to retrieve available data.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:GetPowerSupply]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ power_supply_capacity ](https://github.com/netdata/netdata/blob/master/src/health/health.d/power_supply_capacity.conf) | powersupply.capacity | percentage of remaining power supply capacity |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Power Supply\n\nThese metrics refer to Power Supply device.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| device | Device name delivered as a Windows path. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| powersupply.capacity | capacity | percentage |\n| powersupply.voltage | now | V |\n\n",integration_type:"collector",id:"windows.plugin-GetPowerSupply-Power_Supply_(Win)",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"GetSensors",monitored_instance:{name:"Sensors",link:"https://learn.microsoft.com/en-us/windows/win32/sensorsapi/portal",categories:["data-collection.hardware-and-sensors"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["Sensors","Windows"]},overview:"# Sensors\n\nPlugin: windows.plugin\nModule: GetSensors\n\n## Overview\n\nThis collector monitors sensors on Windows systems.\n\n\nIt uses Sensors API to retrieve available data.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:GetSensors]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\n\n###### Specific Sensors\n\nYou can add custom sensor information by creating a dedicated sensor section.\n\n```yaml\n[plugin:windows:GetSensors:Your Sensor Name]\n units = Speed\n multiplier = 100\n title = Current speed.\n\n```\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Sensor\n\nThese metrics refer to Sensors.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| name | Sensor friendly name. |\n| manufacturer | The sensor manufacturer. |\n| model | The sensor model. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.hw.sensor.temperature.input | input | Cel |\n| system.hw.sensor.power.input | input | W |\n| system.hw.sensor.current.input | input | A |\n| system.hw.sensor.humidity.input | input | % |\n| system.hw.sensor.lux.input | input | lx |\n| system.hw.sensor.color.input | input | Cel |\n| system.hw.sensor.voltage.input | input | V |\n| system.hw.sensor.resistance.input | input | Ohms |\n| system.hw.sensor.capacitance.input | input | F |\n| system.hw.sensor.inductance.input | input | H |\n| system.hw.sensor.pressure.input | input | Pa |\n| system.hw.sensor.latitude.input | input | Degrees |\n| system.hw.sensor.longitude.input | input | Degrees |\n| system.hw.sensor.force.input | input | N |\n| system.hw.sensor.gauge_pressure.input | input | Pa |\n| system.hw.sensor.human_presence.input | input | presence |\n| system.hw.sensor.human_proximity.input | input | m |\n| system.hw.sensor.distance.input | inputX, inputY, inputZ | m |\n| system.hw.sensor.acceleration.input | inputX, inputY, inputZ | g |\n| system.hw.sensor.state.input | ready, not_available, no_data, initializing, access_denied, error | status |\n| system.hw.sensor.custom | inputN | nd |\n\n",integration_type:"collector",id:"windows.plugin-GetSensors-Sensors",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibAD",monitored_instance:{name:"Active Directory",link:"https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/get-started/virtual-dc/active-directory-domain-services-overview",categories:["data-collection.applications"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["windows","microsoft","active directory","ad"]},overview:"# Active Directory\n\nPlugin: windows.plugin\nModule: PerflibAD\n\n## Overview\n\nThis collector monitors Active Directory directory operations, replication, LDAP activity, binds, queueing, database, cleanup, security descriptor propagation, and SAM metrics.\n\n\nIt queries DirectoryServices object from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibAD]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Active Directory\n\nThese metrics refer to Active Directory.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| ad.address_book_ambiguous_name_resolution | ambiguous_name_resolution | operations/s |\n| ad.address_book_browse | browse | operations/s |\n| ad.address_book_find | find | operations/s |\n| ad.address_book_property_read | property_read | operations/s |\n| ad.address_book_search | search | operations/s |\n| ad.address_book_proxy_search | proxy_search | operations/s |\n| ad.address_book_client_sessions | sessions | sessions |\n| ad.approximate_highest_dnt | dnt | dnt |\n| ad.directory_operations | read, write, search | operations/s |\n| ad.searches_base | base | searches/s |\n| ad.searches_subtree | subtree | searches/s |\n| ad.searches_one_level | one_level | searches/s |\n| ad.name_cache_lookups | lookups | lookups/s |\n| ad.name_cache_hits | hits | hits/s |\n| ad.ldap_searches | searches | searches/s |\n| ad.dra_replication_properties_updated | inbound | properties/s |\n| ad.dra_replication_properties_filtered | inbound | properties/s |\n| ad.dra_replication_intersite_compressed_traffic | inbound, outbound | bytes/s |\n| ad.dra_replication_intrasite_uncompressed_traffic | inbound, outbound | bytes/s |\n| ad.replication_highest_usn_committed | committed | usn/s |\n| ad.replication_highest_usn_issued | issued | usn/s |\n| ad.replication_inbound_sync_objects_remaining | remaining | objects |\n| ad.replication_inbound_link_value_updates_remaining | remaining | updates |\n| ad.replication_inbound_objects_updated | updated | objects/s |\n| ad.replication_inbound_objects_filtered | filtered | objects/s |\n| ad.dra_replication_pending_syncs | pending | syncs |\n| ad.dra_replication_sync_requests | request | requests/s |\n| ad.replication_pending_operations | pending | operations |\n| ad.replication_sync_requests_success | success | requests/s |\n| ad.replication_sync_requests_schema_mismatch_failure | failure | requests/s |\n| ad.name_translations_client | client | translations/s |\n| ad.name_translations_server | server | translations/s |\n| ad.change_monitors_registered | registered | monitors |\n| ad.change_monitor_updates_pending | pending | updates |\n| ad.directory_search_suboperations | suboperations | operations/s |\n| ad.security_descriptor_propagation_events | events | events/s |\n| ad.security_descriptor_propagation_events_queued | queued | events |\n| ad.security_descriptor_propagation_access_wait | wait | seconds |\n| ad.security_descriptor_propagation_items_queued | queued | items |\n| ad.ds_threads | thread | threads |\n| ad.ldap_last_bind_time | last_bind | seconds |\n| ad.binds_digest | digest | binds/s |\n| ad.binds_ds_client | ds_client | binds/s |\n| ad.binds_ds_server | ds_server | binds/s |\n| ad.binds_external | external | binds/s |\n| ad.binds_fast | fast | binds/s |\n| ad.binds_negotiate | negotiate | binds/s |\n| ad.binds_ntlm | ntlm | binds/s |\n| ad.binds_simple | simple | binds/s |\n| ad.binds_ldap | ldap | binds/s |\n| ad.ldap_closed_connections | closed | connections/s |\n| ad.ldap_opened_connections_ldap | ldap | connections/s |\n| ad.ldap_opened_connections_ldaps | ldaps | connections/s |\n| ad.ldap_active_threads | active | threads |\n| ad.ldap_udp_operations | udp | operations/s |\n| ad.ldap_writes | writes | writes/s |\n| ad.ldap_client_sessions | sessions | sessions |\n| ad.atq_outstanding_requests | outstanding | requests |\n| ad.atq_estimated_delay | delay | seconds |\n| ad.atq_average_request_latency | time | seconds |\n| ad.atq_current_threads_ldap | ldap | threads |\n| ad.atq_current_threads_other | other | threads |\n| ad.atq_current_threads_total | total | threads |\n| ad.database_operations | add, delete, modify, recycle | operations/s |\n| ad.directory_reads | read | reads/s |\n| ad.directory_searches | search | searches/s |\n| ad.directory_writes | write | writes/s |\n| ad.replication_inbound_object_updates_remaining | remaining | updates |\n| ad.replication_inbound_values_dns_only | dns_only | values/s |\n| ad.replication_inbound_values_total | total | values/s |\n| ad.replication_outbound_objects_filtered | filtered | objects/s |\n| ad.replication_outbound_objects | objects | objects/s |\n| ad.replication_outbound_properties | properties | properties/s |\n| ad.replication_outbound_values_dns_only | dns_only | values/s |\n| ad.replication_outbound_values_total | total | values/s |\n| ad.replication_threads_getting_nc_changes | threads | threads |\n| ad.replication_threads_getting_nc_changes_holding_semaphore | threads | threads |\n| ad.transitive_operations | operations | operations/s |\n| ad.transitive_suboperations | suboperations | suboperations/s |\n| ad.replication_inbound_bytes_total | inbound | bytes/s |\n| ad.replication_outbound_bytes_total | outbound | bytes/s |\n| ad.link_values_cleaned | cleaned | values/s |\n| ad.phantom_objects_cleaned | cleaned | objects/s |\n| ad.phantom_objects_visited | visited | objects/s |\n| ad.tombstoned_objects_collected | collected | objects/s |\n| ad.tombstoned_objects_visited | visited | objects/s |\n| ad.sam_group_membership_evaluations | global, domain_local, universal | evaluations/s |\n| ad.sam_group_membership_global_catalog_evaluations | global_catalog | evaluations/s |\n| ad.sam_group_membership_evaluations_nontransitive | nontransitive | evaluations/s |\n| ad.sam_group_membership_evaluations_transitive | transitive | evaluations/s |\n| ad.sam_group_evaluation_latency | account_group, resource_group | latency |\n| ad.sam_computer_creation_requests | request | requests/s |\n| ad.sam_computer_creation_successful_requests | success | requests/s |\n| ad.sam_user_creation_requests | request | requests/s |\n| ad.sam_user_creation_successful_requests | success | requests/s |\n| ad.sam_query_display_requests | query | requests/s |\n| ad.sam_enumerations | enumeration | enumerations/s |\n| ad.sam_membership_changes | change | changes/s |\n| ad.sam_password_changes | change | changes/s |\n\n",integration_type:"collector",id:"windows.plugin-PerflibAD-Active_Directory",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibADCS",monitored_instance:{name:"Active Directory Certificate Service",link:"https://learn.microsoft.com/en-us/windows-server/identity/ad-cs/",categories:["data-collection.applications"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["windows","microsoft","active directory","adcs","ad"]},overview:"# Active Directory Certificate Service\n\nPlugin: windows.plugin\nModule: PerflibADCS\n\n## Overview\n\nThis collector monitors Active Directory Certificate Services statistics.\n\n\nIt queries 'Certification Authority' object per certificate from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibADCS]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Certificate Service Certificate\n\nThese metrics refer to the Certificate instances defined on host.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cert | The certificate name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| adcs.cert_requests | requests | requests/s |\n| adcs.cert_request_processing_time | processing_times | seconds |\n| adcs.cert_retrievals | retrievals | retrievals/s |\n| adcs.cert_failed_requests | failed | requests/s |\n| adcs.cert_issued_requests | issued | requests/s |\n| adcs.cert_pending_requests | pending | requests/s |\n| adcs.cert_challenge_responses | challenge | responses/s |\n| adcs.cert_retrieval_processing_time | processing_time | seconds |\n| adcs.cert_request_cryptographic_signing_time | singing_time | seconds |\n| adcs.cert_request_policy_module_processing | processing_time | seconds |\n| adcs.cert_request_policy_module_processing | processing_time | seconds |\n| adcs.cert_challenge_response_processing_time | processing_time | seconds |\n| adcs.cert_signed_certificate_timestamp_lists | processing_time | lists/s |\n| adcs.cert_signed_certificate_timestamp_lists | lists | lists/s |\n| adcs.cert_signed_certificate_timestamp_list_processing_time | processing_time | seconds |\n| adcs.cert_retrieval_processing_time | processing_time | seconds |\n\n",integration_type:"collector",id:"windows.plugin-PerflibADCS-Active_Directory_Certificate_Service",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibADFS",monitored_instance:{name:"Active Directory Federation Service",link:"https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/ad-fs-overview",categories:["data-collection.applications"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["windows","microsoft","active directory","adfs","ad"]},overview:"# Active Directory Federation Service\n\nPlugin: windows.plugin\nModule: PerflibADFS\n\n## Overview\n\nThis collector monitors Active Directory Federation Services statistics.\n\n\nIt queries 'AD FS' object from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibADFS]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Federation Service\n\nThese metrics refer to the Federated Identity and Access Management on host.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| adfs.ad_login_connection_failures | connection | failures/s |\n| adfs.certificate_authentications | authentications | authentications/s |\n| adfs.db_artifact_failures | connection | failures/s |\n| adfs.db_artifact_query_time_seconds | query_time | seconds/s |\n| adfs.db_config_failures | connection | failures/s |\n| adfs.db_config_query_time_seconds | query_time | seconds/s |\n| adfs.device_authentications | authentications | authentications/s |\n| adfs.extranet_account_lockouts | lockouts | lockouts/s |\n| adfs.external_authentications | success, failure | authentications/s |\n| adfs.federated_authentications | authentications | authentications/s |\n| adfs.federation_metadata_requests | requests | requests/s |\n| adfs.oauth_authorization_requests | requests | requests/s |\n| adfs.oauth_client_authentications | success, failure | authentications/s |\n| adfs.oauth_client_credentials_requests | success, failure | requests/s |\n| adfs.oauth_client_privkey_jwt_authentications | success, failure | authentications/s |\n| adfs.oauth_client_secret_basic_authentications | success, failure | authentications/s |\n| adfs.oauth_client_secret_basic_authentications | success, failure | authentications/s |\n| adfs.oauth_client_secret_post_authentications | success, failure | authentications/s |\n| adfs.oauth_client_windows_authentications | success, failure | requests/s |\n| adfs.oauth_logon_certificate_requests | success, failure | requests/s |\n| adfs.oauth_password_grant_requests | success, failure | requests/s |\n| adfs.oauth_token_requests_success | success | requests/s |\n| adfs.passive_requests | passive | requests/s |\n| adfs.passport_authentications | passport | authentications/s |\n| adfs.password_change_requests | success, failure | requests/s |\n| adfs.samlp_token_requests_success | success | requests/s |\n| adfs.sso_authentications | success, failure | authentications/s |\n| adfs.token_requests | requests | requests/s |\n| adfs.userpassword_authentications | success, failure | authentications/s |\n| adfs.windows_integrated_authentications | authentications | authentications/s |\n| adfs.wsfed_token_requests_success | success | requests/s |\n| adfs.wstrust_token_requests_success | success | requests/s |\n\n",integration_type:"collector",id:"windows.plugin-PerflibADFS-Active_Directory_Federation_Service",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibASP",monitored_instance:{name:"ASP.NET",link:"https://dotnet.microsoft.com/en-us/apps/aspnet",categories:["data-collection.web-servers-and-proxies"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["windows","ASP","webservice"]},overview:"# ASP.NET\n\nPlugin: windows.plugin\nModule: PerflibASP\n\n## Overview\n\nThis collector monitors ASP.NET applications.\n\n\nIt queries for the 'ASP.NET' and 'ASP.NET Applications' objects from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| PerflibASP | An option to enable or disable the data collection. | yes | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per ASP.NET Global Data\n\nThese metrics refer to ASP.NET global metrics.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| aspnet.application_restarts | restarts | restarts |\n| aspnet.worker_process_restarts | restarts | restarts |\n\n### Per ASP.NET Applications\n\nASP.NET application performance counters\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| aspnet_app | The application name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| aspnet.anonymous_request | requests | requests |\n| aspnet.compilation_totals | compilations | compilations |\n| aspnet.errors_during_preprocessing | preprocessing | errors |\n| aspnet.errors_during_compilation | compilation | errors |\n| aspnet.errors_during_execution | execution | errors |\n| aspnet.errors_during_unhandled_execution | unhandled | errors |\n| aspnet.requests_byte_total | in, out | bytes |\n| aspnet.requests_executing | executing | requests |\n| aspnet.requests_failed | executing | requests |\n| aspnet.requests_not_found | not found | requests |\n| aspnet.requests_not_authorized | not_authorized | requests |\n| aspnet.requests_in_application_queue | queue | requests |\n| aspnet.requests_timeout | timeout | requests |\n| aspnet.requests_succeeded | success | requests |\n| aspnet.sessions_active | active | sessions |\n| aspnet.sessions_abandoned | abandoned | sessions |\n| aspnet.sessions_abandoned | abandoned | sessions |\n| aspnet.sessions_timed_out | timed out | sessions |\n| aspnet.transactions_aborted | aborted | transactions |\n| aspnet.transactions_committed | committed | transactions |\n| aspnet.transactions_pending | pending | transactions |\n| aspnet.events_raised_per_sec | raised | events |\n| aspnet.error_events_raised_per_sec | events | errors |\n| aspnet.events_audit_success | events | errors |\n| aspnet.events_audit_failure | audit | failures |\n| aspnet.membership_auth_success | success | auth |\n| aspnet.form_authentication_success | success | auth |\n| aspnet.form_authentication_success | success | auth |\n| aspnet.form_authentication_failure | failure | auth |\n\n",integration_type:"collector",id:"windows.plugin-PerflibASP-ASP.NET",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibExchange",monitored_instance:{name:"MS Exchange",link:"https://www.microsoft.com/en-us/microsoft-365/exchange/email",categories:["data-collection.applications"],icon_filename:"exchange.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["windows","microsoft","exchange","mail"]},overview:"# MS Exchange\n\nPlugin: windows.plugin\nModule: PerflibExchange\n\n## Overview\n\nThis collector monitors Microsoft Exchange.\n\n\nIt queries different Exchange objects from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 10 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibExchange]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Windows Exchange\n\nThese metrics refer to Windows Exchange.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| exchange.transport_queues_active_mail_box_delivery | active | messages |\n| exchange.transport_queues_external_active_remote_delivery | active | messages |\n| exchange.transport_queues_internal_active_remote_delivery | active | messages |\n| exchange.transport_queues_unreachable | unreachable | messages |\n| exchange.transport_queues_poison | unreachable | messages |\n| exchange.activesync_ping_cmds_pending | pending | commands |\n| exchange.activesync_requests | received | requests/s |\n| exchange.activesync_sync_cmds | processed | commands/s |\n| exchange.rpc_active_user_count | active | users |\n| exchange.rpc_avg_latency | latency | seconds |\n| exchange.rpc_connection_count | connections | connections |\n| exchange.rpc_requests | processed | requests |\n| exchange.rpc_active_user | users | users |\n| exchange.rpc_connection | connections | connections |\n| exchange.rpc_operations | operations | operations/s |\n| exchange.rpc_user_count | users | users |\n| exchange.owa_current_unique_users | logged-in | users |\n| exchange.owa_requests_total | handled | requests/s |\n| exchange.workload_active_tasks | active | tasks |\n| exchange.workload_completed_tasks | completed | tasks/s |\n| exchange.workload_queued_tasks | queued | tasks/s |\n| exchange.workload_yielded_tasks | yielded | tasks/s |\n| exchange.workload_activity_status | active, paused | status |\n| exchange.http_proxy_avg_auth_latency | latency | seconds |\n| exchange.http_proxy_avg_cas_processing_latency_sec | latency | seconds |\n| exchange.http_proxy_mailbox_proxy_failure_rate | failures | seconds |\n| exchange.http_proxy_mailbox_server_locator_avg_latency_sec | latency | seconds |\n| exchange.http_proxy_outstanding_proxy_requests | requests | seconds |\n| exchange.http_proxy_requests | requests | seconds |\n| exchange.autodiscover_requests | processed | requests/s |\n| exchange.avail_service_requests | serviced | requests/s |\n\n",integration_type:"collector",id:"windows.plugin-PerflibExchange-MS_Exchange",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibHyperV",monitored_instance:{name:"Hyper-V",link:"https://learn.microsoft.com/en-us/virtualization/hyper-v-on-windows/about/",categories:["data-collection.containers-and-vms"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["windows","microsoft","hyperv","virtualization","vm","azure-local","azure-stack-hci"]},overview:"# Hyper-V\n\nPlugin: windows.plugin\nModule: PerflibHyperV\n\n## Overview\n\nThis collector monitors Hyper-V virtualization metrics including virtual machine health status, root partition virtualization layer statistics (TLB flushes, address spaces, attached devices, GPA space), per-VM CPU usage, memory allocation and pressure, storage device I/O and errors, network interface traffic and packets, and virtual switch traffic, packets, and dropped packets.\n\n\nIt queries the 'HyperV' object from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 5 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibHyperV]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Hyper-V\n\nThese metrics refer to the Hyper-V instance.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| hyperv.vms_health | ok, critical | vms |\n| hyperv.root_partition_io_tlb_flush | gpa | flushes/s |\n| hyperv.root_partition_virtual_tlb_flush_entries | flushes | flushes/s |\n| hyperv.root_partition_virtual_tlb_pages | used | pages |\n| hyperv.root_partition_address_space | address_spaces | address spaces |\n| hyperv.root_partition_attached_devices | attached | devices |\n| hyperv.root_partition_device_dma_errors | illegal_dma | requests |\n| hyperv.root_partition_device_interrupt_errors | illegal_interrupt | requests |\n| hyperv.root_partition_device_interrupt_throttle_events | throttling | events |\n| hyperv.root_partition_deposited_pages | gpa | pages |\n| hyperv.root_partition_device_space_pages | 4K, 2M, 1G | pages |\n| hyperv.root_partition_gpa_space_pages | 4K, 2M, 1G | pages |\n| hyperv.root_partition_gpa_space_modifications | gpa | modifications/s |\n\n### Per Virtual Machine\n\nThese metrics refer to the Virtual Machine.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| vm_name | The name of the Virtual Machine. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| hyperv.vm_cpu_usage | usage | percentage |\n| hyperv.vm_cpu_usage_by_run_context | guest, hypervisor, remote | percentage |\n| hyperv.vm_memory_physical | assigned | bytes |\n| hyperv.vm_memory_physical_guest_visible | visible, available | bytes |\n| hyperv.vm_memory_pressure_current | pressure | percentage |\n| hyperv.vm_vid_physical_pages_allocated | allocated | pages |\n| hyperv.vm_vid_remote_physical_pages | remote_physical | pages |\n\n### Per Virtual Machine Storage Device\n\nThese metrics refer to the Virtual Machine Storage Device.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| vm_storage_device | The name of the Storage Device. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| hyperv.vm_storage_device_bytes | read, write | bytes/s |\n| hyperv.vm_storage_device_operations | read, write | operations/s |\n| hyperv.vm_storage_device_errors | errors | errors/s |\n\n### Per Virtual Machine Network Interface\n\nThese metrics refer to the Virtual Machine Network Interface.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| vm_net_interface | The name of the Network Interface. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| hyperv.vm_net_interface_traffic | received, sent | kilobits/s |\n| hyperv.vm_net_interface_ipsec_traffic | received, sent | kilobits/s |\n| hyperv.vm_net_interface_packets | received, sent | packets/s |\n| hyperv.vm_net_interface_directed_packets | received, sent | packets/s |\n| hyperv.vm_net_interface_broadcast_packets | received, sent | packets/s |\n| hyperv.vm_net_interface_multicast_packets | received, sent | packets/s |\n| hyperv.vm_net_interface_packets_dropped | incoming, outgoing | drops/s |\n\n### Per Virtual Switch\n\nThese metrics refer to the Virtual Switch.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| vswitch | The name of the Virtual Switch. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| hyperv.vswitch_traffic | received, sent | kilobits/s |\n| hyperv.vswitch_packets | received, sent | packets/s |\n| hyperv.vswitch_directed_packets | received, sent | packets/s |\n| hyperv.vswitch_broadcast_packets | received, sent | packets/s |\n| hyperv.vswitch_multicast_packets | received, sent | packets/s |\n| hyperv.vswitch_dropped_packets | incoming, outgoing | drops/s |\n| hyperv.vswitch_extensions_dropped_packets | incoming, outgoing | drops/s |\n| hyperv.vswitch_packets_flooded | flooded | packets/s |\n| hyperv.vswitch_learned_mac_addresses | learned | mac addresses/s |\n| hyperv.vswitch_purged_mac_addresses | purged | mac addresses/s |\n\n",integration_type:"collector",id:"windows.plugin-PerflibHyperV-Hyper-V",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibMemory",monitored_instance:{name:"Memory Statistics (Win)",link:"https://learn.microsoft.com/en-us/windows/win32/Memory/memory-management",categories:["data-collection.operating-systems"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["memory","swap"]},overview:"# Memory Statistics (Win)\n\nPlugin: windows.plugin\nModule: PerflibMemory\n\n## Overview\n\nThis collector monitors swap and memory pool statistics on Windows systems.\n\n\nIt queries for the 'Memory' object from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibMemory]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per System\n\nThese metrics refer to the entire system.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.swap_iops | read, write | operations/s |\n| mem.swapio | in, out | KiB/s |\n| mem.system_pool_size | paged, non-paged | bytes |\n| mem.system_pool_paged | resident | bytes |\n| mem.system_pool_allocs | paged, non-paged | allocations/s |\n| mem.system_page_table_entries | free | pages |\n| mem.committed | committed, limit | bytes |\n| mem.system_cache | cache, peak, resident | bytes |\n| mem.page_lists | free, modified, standby_core, standby_normal, standby_reserve | bytes |\n| mem.system_code | resident, total | bytes |\n| mem.system_drivers | resident, total | bytes |\n| mem.page_faults_breakdown | cache, demand_zero, transition, write_copies | faults/s |\n| mem.transition_repurposed | repurposed | pages/s |\n\n",integration_type:"collector",id:"windows.plugin-PerflibMemory-Memory_Statistics_(Win)",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibNUMA",monitored_instance:{name:"NUMA Architecture",link:"https://learn.microsoft.com/en-us/windows/win32/procthread/numa-support",categories:["data-collection.operating-systems"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["windows","NUMA","processor"]},overview:"# NUMA Architecture\n\nPlugin: windows.plugin\nModule: PerflibNUMA\n\n## Overview\n\nThis collector monitors NUMA Architecture on Windows.\n\n\nIt queries NUMA Node Memory from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibNUMA]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per NUMA\n\nThese metrics refer to memory utilization on NUMA systems.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| node | The identifier of the CPU node. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| mem.numa_node_mem_usage | free, standby | bytes |\n\n",integration_type:"collector",id:"windows.plugin-PerflibNUMA-NUMA_Architecture",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibNetFramework",monitored_instance:{name:"NET Framework",link:"https://dotnet.microsoft.com/en-us/learn/dotnet/what-is-dotnet-framework",categories:["data-collection.applications"],icon_filename:"dotnet.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["windows","microsoft","netframework","dotnet"]},overview:"# NET Framework\n\nPlugin: windows.plugin\nModule: PerflibNetFramework\n\n## Overview\n\nThis collector monitors application built with .NET\n\n\nIt queries different NET Framework objects per process from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibNetFramework]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Processes running\n\nThese metrics refer to NET applications.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| process | The process name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| netframework.clrexception_thrown | exceptions | exceptions/s |\n| netframework.clrexception_filters | filters | filters/s |\n| netframework.clrexception_finallys | finallys | finallys/s |\n| netframework.clrexception_throw_to_catch_depth | traversed | stack_frames/s |\n| netframework.clrinterop_com_callable_wrappers | com_callable_wrappers | ccw/s |\n| netframework.clrinterop_interop_marshallings | marshallings | marshallings/s |\n| netframework.clrinterop_interop_stubs_created | created | stubs/s |\n| netframework.clrjit_methods | jit-compiled | methods/s |\n| netframework.clrjit_time | time | percentage |\n| netframework.clrjit_standard_failures | failures | failures/s |\n| netframework.clrjit_il_bytes | compiled_msil | bytes/s |\n| netframework.clrloading_loader_heap_size | committed | bytes |\n| netframework.clrloading_appdomains_loaded | loaded | domain/s |\n| netframework.clrloading_appdomains_unloaded | unloaded | domain/s |\n| netframework.clrloading_assemblies_loaded | loaded | assemblies/s |\n| netframework.clrloading_classes_loaded | loaded | classes/s |\n| netframework.clrloading_class_load_failures | class_load | failures/s |\n| netframework.clrremoting_channels | registered | channels/s |\n| netframework.clrremoting_context_bound_classes_loaded | loaded | classes |\n| netframework.clrremoting_context_bound_objects | allocated | objects/s |\n| netframework.clrremoting_context_proxies | objects | objects/s |\n| netframework.clrremoting_remote_calls | calls | calls/s |\n| netframework.clrsecurity_link_time_checks | linktime | checks/s |\n| netframework.clrsecurity_checks_time | time | percentage |\n| netframework.clrsecurity_stack_walk_depth | stack | depth |\n| netframework.clrsecurity_runtime_checks | runtime | checks/s |\n| netframework.clrlocksandthreads_queue_length | threads | threads/s |\n| netframework.clrlocksandthreads_current_logical_threads | logical | threads |\n| netframework.clrlocksandthreads_current_physical_threads | physical | threads |\n| netframework.clrlocksandthreads_recognized_threads | threads | threads/s |\n| netframework.clrlocksandthreads_contentions | contentions | contentions/s |\n\n",integration_type:"collector",id:"windows.plugin-PerflibNetFramework-NET_Framework",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibNetwork",monitored_instance:{name:"Network Subsystem",link:"https://learn.microsoft.com/en-us/windows/win32/networking",categories:["data-collection.networking"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["network","bandwidth","ip","udp","tcp","interface"]},overview:"# Network Subsystem\n\nPlugin: windows.plugin\nModule: PerflibNetwork\n\n## Overview\n\nMonitor network interface metrics about bandwidth, state, errors and more.\n\n\nIt queries 'Network Interface' and 'Network Adapter' objects from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibNetwork]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ inbound_packets_dropped_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.drops | Ratio of inbound dropped packets for the network interface ${label:device} over the last 10 minutes |\n| [ outbound_packets_dropped_ratio ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.drops | Ratio of outbound dropped packets for the network interface ${label:device} over the last 10 minutes |\n| [ 1m_received_traffic_overflow ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.net | Average inbound utilization for the network interface ${label:device} over the last minute |\n| [ 1m_sent_traffic_overflow ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.net | Average outbound utilization for the network interface ${label:device} over the last minute |\n| [ network_interface_output_queue_length ](https://github.com/netdata/netdata/blob/master/src/health/health.d/net.conf) | net.queue_length | Output Queue Length on interface ${label:device} should be zero, otherwise there are delays and bottlenecks. |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per System\n\nThese metrics refer to the entire System.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.net | received, sent | kilobits/s |\n| ip.tcppackets | received, sent | packets/s |\n| ipv4.packets | received, sent, forwarded, delivered | packets/s |\n| ipv4.tcppackets | received, sent | packets/s |\n| ipv4.udppackets | received, sent | packets/s |\n| ipv4.icmp | received, sent | packets/s |\n| ipv4.errors | InDiscards, OutDiscards, OutNoRoutes, InAddrErrors, InHdrErrors, InUnknownProtos | packets/s |\n| ipv4.icmpmsg | InEchoReps, OutEchoReps, InDestUnreachs, OutDestUnreachs, InRedirects, OutRedirects, InEchos, OutEchos, InRouterAdvert, OutRouterAdvert, InRouterSelect, OutRouterSelect, InTimeExcds, OutTimeExcds, InParmProbs, OutParmProbs, InTimestamps, OutTimestamps, InTimestampReps, OutTimestampReps | packets/s |\n| ipv6.packets | received, sent, forwarded, delivered | packets/s |\n| ipv6.tcppackets | received, sent | packets/s |\n| ipv6.udppackets | received, sent | packets/s |\n| ipv6.icmp | received, sent | packets/s |\n| ipv6.errors | InDiscards, OutDiscards, OutNoRoutes, InAddrErrors, InHdrErrors, InUnknownProtos | packets/s |\n| ipv6.icmpmsg | InEchoReps, OutEchoReps, InDestUnreachs, OutDestUnreachs, InRedirects, OutRedirects, InEchos, OutEchos, InRouterAdvert, OutRouterAdvert, InRouterSelect, OutRouterSelect, InTimeExcds, OutTimeExcds, InParmProbs, OutParmProbs, InTimestamps, OutTimestamps, InTimestampReps, OutTimestampReps | packets/s |\n\n### Per network device\n\nThese metrics refer to Network Interfaces.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| interface_type | Classification of the network interface (real or virtual). |\n| device | System-assigned network interface identifier. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| net.net | received, sent | kilobits/s |\n| net.packets | received, sent | packets/s |\n| net.speed | speed | kilobits/s |\n| net.errors | inbound, outbound | errors/s |\n| net.drops | inbound, outbound | drops/s |\n| net.queue_length | length | packets |\n| net.rsc_connections | connections | connections |\n| net.rsc_packets | packets | packets/s |\n| net.rsc_exceptions | exceptions | exceptions/s |\n| net.rsc_average_packet_size | average | bytes |\n| net.chimney_connections | connections | connections |\n\n",integration_type:"collector",id:"windows.plugin-PerflibNetwork-Network_Subsystem",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibObjects",monitored_instance:{name:"Semaphore statistics",link:"https://learn.microsoft.com/en-us/windows/win32/sync/semaphore-objects",categories:["data-collection.operating-systems"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["ipc","semaphores"]},overview:"# Semaphore statistics\n\nPlugin: windows.plugin\nModule: PerflibObjects\n\n## Overview\n\nInter-Process Communication (IPC) enables different processes to communicate and coordinate with each other. This collector monitors IPC semaphores, which are synchronization tools that:\n\n- Control access to shared resources (like files, memory, or devices).\n- Ensure only one process can access a resource at a time.\n- Prevent conflicts between competing processes.\n\n\nIt queries for the 'Objects' object from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibObjects]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per System\n\nThese metrics refer to the entire system.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.ipc_semaphores | semaphores | semaphores |\n| system.ipc_mutexes | mutexes | mutexes |\n\n",integration_type:"collector",id:"windows.plugin-PerflibObjects-Semaphore_statistics",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibProcesses",monitored_instance:{name:"System statistics",link:"https://learn.microsoft.com/en-us/windows/win32/procthread/processes-and-threads",categories:["data-collection.operating-systems"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["process counts","threads","context switch"]},overview:"# System statistics\n\nPlugin: windows.plugin\nModule: PerflibProcesses\n\n## Overview\n\nThis collector monitors the current number of processes, threads, and context switches on Windows systems.\n\n\nIt queries the 'System' object from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibProcesses]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per System\n\nThese metrics refer to the entire system.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.processes | running | processes |\n| system.threads | threads | threads |\n| system.ctxt | switches | context switches/s |\n| system.processor_queue_length | threads | threads |\n\n",integration_type:"collector",id:"windows.plugin-PerflibProcesses-System_statistics",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibProcessor",monitored_instance:{name:"Processor",link:"https://learn.microsoft.com/en-us/windows-hardware/design/minimum/windows-processor-requirements",categories:["data-collection.operating-systems"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["windows","microsoft","processor","CPU"]},overview:"# Processor\n\nPlugin: windows.plugin\nModule: PerflibProcessor\n\n## Overview\n\nThis collector monitors processors statistics on host.\n\n\nIt queries Processor object from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibProcessor]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\n\nThe following alerts are available:\n\n| Alert name | On metric | Description |\n|:------------|:----------|:------------|\n| [ 10min_cpu_usage ](https://github.com/netdata/netdata/blob/master/src/health/health.d/cpu.conf) | system.cpu | Average CPU utilization over the last 10 minutes |\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per System\n\nThese metrics refer to the entire system.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.cpu | interrupts, user, privileged, dpc | percentage |\n\n### Per CPU\n\nThese metrics provide information about individual CPU cores.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| cpu | The identifier of the CPU core. On Windows systems, CPU cores are labeled as 'cpu0', 'cpu1', etc. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| cpu.cpu | interrupts, user, privileged, dpc | percentage |\n\n",integration_type:"collector",id:"windows.plugin-PerflibProcessor-Processor",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibSMB",monitored_instance:{name:"SMB Server Shares",link:"https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-smb/",categories:["data-collection.storage"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["windows","microsoft","smb","share","file sharing"]},overview:"# SMB Server Shares\n\nPlugin: windows.plugin\nModule: PerflibSMB\n\n## Overview\n\nMonitor SMB server share activity and throughput counters on Windows systems.\n\n\nIt queries the 'SMB Server Shares' object from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis collector is disabled by default. When enabled, it automatically detects all available SMB share instances and metrics.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibSMB]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per SMB Share\n\nThese metrics refer to SMB shares.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| share | SMB share name as exposed by the Windows SMB Server Shares performance object. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| smb.server_shares_current_open_file_count | open | files |\n| smb.server_shares_write_requests | writes | requests/s |\n| smb.server_shares_read_requests | reads | requests/s |\n| smb.server_shares_metadata_requests | metadata | requests/s |\n| smb.server_shares_files_opened | opened | files/s |\n\n",integration_type:"collector",id:"windows.plugin-PerflibSMB-SMB_Server_Shares",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibServices",monitored_instance:{name:"Windows Services",link:"https://learn.microsoft.com/en-us/dotnet/framework/windows-services/",categories:["data-collection.operating-systems"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["windows","microsoft","services"]},overview:"# Windows Services\n\nPlugin: windows.plugin\nModule: PerflibServices\n\n## Overview\n\nThis collector monitors Windows Services Status and States.\n\n\nIt queries Service Management to get the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 30 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibServices]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Windows Service\n\nThese metrics refer to Windows Services.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| service | The service name |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| windows.service_state | running, stopped, start_pending, stop_pending, continue_pending, pause_pending, paused, unknown | state |\n\n",integration_type:"collector",id:"windows.plugin-PerflibServices-Windows_Services",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibStorage",monitored_instance:{name:"Physical and Logical Disk Performance Metrics",link:"https://learn.microsoft.com/en-us/windows/win32/fileio/disk-management",categories:["data-collection.storage"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["disk","disks","io","volume","physical","logical"]},overview:"# Physical and Logical Disk Performance Metrics\n\nPlugin: windows.plugin\nModule: PerflibStorage\n\n## Overview\n\nDetailed statistics for all disk devices and volumes.\n\n\nIt queries 'LogicalDisk' and 'PhysicalDisk' objects from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibStorage]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per System\n\nThese metrics refer to the entire System.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.io | reads, writes | KiB/s |\n\n### Per Logical Disk\n\nThese metrics refer to Logical Disks.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| mount_point | Drive letter or mount point path assigned by Windows (e.g., 'C:', 'D:'). |\n| driver_type | Classification of the disk device (e.g., norootdir, removable, cdrom, ramdisk). |\n| filesystem | File system format used on the volume (e.g., NTFS, FAT32). |\n| rw_mode | Current read/write permissions status of the volume (read-only access, read and write access). |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| disk.space | avail, used | GiB |\n\n### Per Physical Disk\n\nThese metrics refer to Physical Disks.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| mount_point | Drive letter or mount point path assigned by Windows (e.g., 'C:', 'D:'). |\n| device | Manufacturer model name. |\n| model | The device model. |\n| device_id | Unique hardware identifier for the storage device within the system. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| disk.io | reads, writes | KiB/s |\n| disk.avgsz | reads, writes | KiB/operation |\n| disk.ops | reads, writes | operations/s |\n| disk.split | discards | operations/s |\n| disk.await | reads, writes | milliseconds/operation |\n| disk.svctm | svctm | milliseconds/operation |\n| disk.util | utilization | percent |\n| disk.busy | busy | milliseconds |\n| disk.iotime | reads, writes | milliseconds/s |\n| disk.qops | operations | operations |\n\n",integration_type:"collector",id:"windows.plugin-PerflibStorage-Physical_and_Logical_Disk_Performance_Metrics",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibThermalZone",monitored_instance:{name:"System thermal zone",link:"https://learn.microsoft.com/en-us/windows-hardware/design/device-experiences/design-guide",categories:["data-collection.hardware-and-sensors"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["thermal","temperature"]},overview:"# System thermal zone\n\nPlugin: windows.plugin\nModule: PerflibThermalZone\n\n## Overview\n\nThis collector monitors thermal zone statistics on Windows systems.\n\n\nIt queries for the 'Thermal Zone Information' object from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 5 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibThermalZone]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Thermal zone\n\nThese metrics refer to a Thermal zone\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| system.thermalzone_temperature | temperature | celsius |\n\n",integration_type:"collector",id:"windows.plugin-PerflibThermalZone-System_thermal_zone",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"windows.plugin",module_name:"PerflibWebService",monitored_instance:{name:"IIS",link:"https://www.iis.net/",categories:["data-collection.web-servers-and-proxies"],icon_filename:"windows.svg"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:["IIS","HTTP","Web service"]},overview:"# IIS\n\nPlugin: windows.plugin\nModule: PerflibWebService\n\n## Overview\n\nThis collector monitors website requests and logins.\n\n\nIt queries the 'Web Service' object from Perflib in order to gather the metrics.\n\n\nThis collector is only supported on the following platforms:\n\n- windows\n\nThis collector only supports collecting metrics from a single instance of this integration.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe collector automatically detects all of the metrics, no further configuration is required.\n\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\n\n\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n\n\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:windows:PerflibWebService]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per IIS website\n\nThese metrics refer to the IIS website.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| website | The name of the IIS website. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| iis.website_traffic | received, sent | bytes/s |\n| iis.website_requests_rate | requests | requests/s |\n| iis.website_requests_by_type_rate | options, get, post, head, put, delete, trace, move, copy, mkcol, propfind, proppatch, search, lock, unlock, other | requests/s |\n| iis.website_active_connections_count | active | connections |\n| iis.website_users_count | anonymous, non_anonymous | users |\n| iis.website_connection_attempts_rate | connection | attempts/s |\n| iis.website_isapi_extension_requests_count | isapi | requests |\n| iis.website_isapi_extension_requests_rate | isapi | requests/s |\n| iis.website_ftp_file_transfer_rate | received, sent | files/s |\n| iis.website_logon_attempts_rate | logon | attempts/s |\n| iis.website_errors_rate | document_locked, document_not_found | errors/s |\n| iis.website_uptime | uptime | seconds |\n\n### Per IIS Application Pool\n\nThese metrics refer to the IIS application pool WAS (Windows Process Activation Service).\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| app | The name of the Application Pool. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| iis.application_pool_current_status | uninitialized, initialized, running, disabling, disabled, shutdown_pending, delete_pending | status |\n| iis.application_pool_current_worker_processes | running | processes |\n| iis.application_pool_worker_processes_created | created | processes/s |\n| iis.application_pool_maximum_worker_processes | created | processes |\n| iis.application_pool_recent_worker_process_failures | failures | failures/s |\n| iis.application_pool_worker_process_failures | crash, ping, startup, shutdown | failures/s |\n| iis.application_pool_recycles | recycles | recycles/s |\n| iis.application_pool_uptime | uptime | seconds |\n\n### Per IIS W3SCV W3MP\n\nThese metrics refer to the World Wide Web Publishing Service, the service responsible for hosting and serving web content.\n\nLabels:\n\n| Label | Description |\n|:-----------|:----------------|\n| app | Application name. |\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| iis.w3svc_w3wp_active_threads | threads | threads |\n| iis.w3svc_w3wp_requests_total | requests | requests/s |\n| iis.w3svc_w3wp_requests_active | requests | requests |\n| iis.w3svc_w3wp_file_cache_mem_usage | used | bytes |\n| iis.w3svc_w3wp_files_cache_total | cached_files | files/s |\n| iis.w3svc_w3wp_files_flushed_total | file_handles | flushes/s |\n| iis.w3svc_w3wp_uri_cache_flushed | cached_uris | flushes/s |\n| iis.w3svc_w3wp_total_uri_cached | uri_cache_blocks | blocks/s |\n| iis.w3svc_w3wp_total_metadata_cached | metadata_blocks | blocks/s |\n| iis.w3svc_w3wp_total_metadata_flushed | metadata_blocks | flushes/s |\n| iis.w3svc_w3wp_output_cache_active_flushed_items | used | items |\n| iis.w3svc_w3wp_output_cache_memory_usage | used | bytes |\n| iis.w3svc_w3wp_output_cache_flushed_total | output_cache_entries | flushes |\n\n",integration_type:"collector",id:"windows.plugin-PerflibWebService-IIS",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows.plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"xenstat.plugin",module_name:"xenstat.plugin",monitored_instance:{name:"Xen XCP-ng",link:"https://xenproject.org/",categories:["data-collection.containers-and-vms"],icon_filename:"xen.png"},related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""},keywords:[]},overview:"# Xen XCP-ng\n\nPlugin: xenstat.plugin\nModule: xenstat.plugin\n\n## Overview\n\nThis collector monitors XenServer and XCP-ng host and domains statistics.\n\n\n\nThis collector is supported on all platforms.\n\nThis collector supports collecting metrics from multiple instances of this integration, including remote instances.\n\nThe plugin needs setuid.\n\n### Default Behavior\n\n#### Auto-Detection\n\nThis plugin requires the `xen-dom0-libs-devel` and `yajl-devel` libraries to be installed.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits on data collection.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Libraries\n\n1. Install `xen-dom0-libs-devel` and `yajl-devel` using the package manager of your system.\n\n Note: On Cent-OS systems you will need `centos-release-xen` repository and the required package for xen is `xen-devel`\n\n2. Re-install Netdata from source. The installer will detect that the required libraries are now available and will also build xenstat.plugin.\n\n\n\n### Configuration\n\n#### Options\n\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| update every | Data collection frequency. | 1 | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netdata.conf`.\nConfiguration for this specific integration is located in the `[plugin:xenstat]` section within that file.\n\nThe file format is a modified INI syntax. The general structure is:\n\n```ini\n[section1]\n option1 = some value\n option2 = some other value\n\n[section2]\n option3 = some third value\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netdata.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n',troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nMetrics grouped by *scope*.\n\nThe scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.\n\n\n\n### Per Xen XCP-ng instance\n\nThese metrics refer to the entire monitored application.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| xenstat.mem | free, used | MiB |\n| xenstat.domains | domains | domains |\n| xenstat.cpus | cpus | cpus |\n| xenstat.cpu_freq | frequency | MHz |\n\n### Per xendomain\n\nMetrics related to Xen domains. Each domain provides its own set of the following metrics.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| xendomain.states | running, blocked, paused, shutdown, crashed, dying | boolean |\n| xendomain.cpu | used | percentage |\n| xendomain.mem | maximum, current | MiB |\n| xendomain.vcpu | a dimension per vcpu | percentage |\n\n### Per xendomain vbd\n\nMetrics related to Xen domain Virtual Block Device. Each VBD provides its own set of the following metrics.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| xendomain.oo_req_vbd | requests | requests/s |\n| xendomain.requests_vbd | read, write | requests/s |\n| xendomain.sectors_vbd | read, write | sectors/s |\n\n### Per xendomain network\n\nMetrics related to Xen domain network interfaces. Each network interface provides its own set of the following metrics.\n\nThis scope has no labels.\n\nMetrics:\n\n| Metric | Dimensions | Unit |\n|:------|:----------|:----|\n| xendomain.bytes_network | received, sent | kilobits/s |\n| xendomain.packets_network | received, sent | packets/s |\n| xendomain.errors_network | received, sent | errors/s |\n| xendomain.drops_network | received, sent | drops/s |\n\n",integration_type:"collector",id:"xenstat.plugin-xenstat.plugin-Xen_XCP-ng",edit_link:"https://github.com/netdata/netdata/blob/master/src/collectors/xenstat.plugin/metadata.yaml",functions:"",related_resources:""},{id:"deploy-alpinelinux",meta:{name:"Alpine Linux",link:"https://www.alpinelinux.org/",categories:["deploy.operating-systems"],icon_filename:"alpine.svg"},keywords:["linux"],install_description:"Run the following command on your node to install and connnect Netdata to your Space:",methods:[{method:"wget",commands:[{channel:"nightly",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]},{method:"curl",commands:[{channel:"nightly",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]}],additional_info:'Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId="deploy.docker-kubernetes" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId="deploy.docker-kubernetes" %}Docker{% /goToCategory %}?\n',related_resources:{},platform_info:"",quick_start:-1,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-amazonlinux",meta:{name:"Amazon Linux",link:"https://aws.amazon.com/amazon-linux-2/",categories:["deploy.operating-systems"],icon_filename:"amazonlinux.png"},keywords:["linux"],install_description:"Run the following command on your node to install and connnect Netdata to your Space:",methods:[{method:"wget",commands:[{channel:"nightly",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]},{method:"curl",commands:[{channel:"nightly",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]}],additional_info:'Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId="deploy.docker-kubernetes" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId="deploy.docker-kubernetes" %}Docker{% /goToCategory %}?\n',related_resources:{},platform_info:"We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 2 | Core | x86_64, aarch64 | |\n| 2023 | Core | x86_64, aarch64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.\n",quick_start:-1,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-archlinux",meta:{name:"Arch Linux",link:"https://archlinux.org/",categories:["deploy.operating-systems"],icon_filename:"archlinux.png"},keywords:["linux"],install_description:"Run the following command on your node to install and connnect Netdata to your Space:",methods:[{method:"wget",commands:[{channel:"nightly",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]},{method:"curl",commands:[{channel:"nightly",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]}],additional_info:'Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId="deploy.docker-kubernetes" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId="deploy.docker-kubernetes" %}Docker{% /goToCategory %}?\n',related_resources:{},platform_info:"We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| latest | Intermediate | | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.\n",quick_start:-1,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-centos",meta:{name:"CentOS",link:"https://www.centos.org/",categories:["deploy.operating-systems"],icon_filename:"centos.svg"},keywords:["linux"],install_description:"Run the following command on your node to install and connnect Netdata to your Space:",methods:[{method:"wget",commands:[{channel:"nightly",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]},{method:"curl",commands:[{channel:"nightly",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]}],additional_info:'Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId="deploy.docker-kubernetes" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId="deploy.docker-kubernetes" %}Docker{% /goToCategory %}?\n',related_resources:{},platform_info:"We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 7 | Core | x86_64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.\n",quick_start:-1,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-centos-stream",meta:{name:"CentOS Stream",link:"https://www.centos.org/centos-stream",categories:["deploy.operating-systems"],icon_filename:"centos.svg"},keywords:["linux"],install_description:"Run the following command on your node to install and connnect Netdata to your Space:",methods:[{method:"wget",commands:[{channel:"nightly",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]},{method:"curl",commands:[{channel:"nightly",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]}],additional_info:'Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId="deploy.docker-kubernetes" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId="deploy.docker-kubernetes" %}Docker{% /goToCategory %}?\n',related_resources:{},platform_info:"We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 10 | Community | x86_64, aarch64 | |\n| 9 | Community | x86_64, aarch64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.\n",quick_start:-1,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-debian",meta:{name:"Debian",link:"https://www.debian.org/",categories:["deploy.operating-systems"],icon_filename:"debian.svg"},keywords:["linux"],install_description:"Run the following command on your node to install and connnect Netdata to your Space:",methods:[{method:"wget",commands:[{channel:"nightly",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]},{method:"curl",commands:[{channel:"nightly",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]}],additional_info:'Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId="deploy.docker-kubernetes" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId="deploy.docker-kubernetes" %}Docker{% /goToCategory %}?\n',related_resources:{},platform_info:"We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 13 | Core | amd64, armhf, arm64 | |\n| 12 | Core | i386, amd64, armhf, arm64 | |\n| 11 | Core | i386, amd64, armhf, arm64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.\n",quick_start:-1,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-docker",meta:{name:"Docker",link:"https://www.docker.com/",categories:["deploy.docker-kubernetes"],icon_filename:"docker.svg"},keywords:["docker","container","containers"],install_description:"Install and connect new Docker containers\nFind the commands for `docker run`, `docker compose` or `Docker Swarm`. On the last two you can copy the configs, then run `docker-compose up -d` in the same directory as the `docker-compose.yml`\n\n> Netdata container requires different privileges and mounts to provide functionality similar to that provided by Netdata installed on the host. More info [here](https://learn.netdata.cloud/docs/installing/docker?_gl=1*f2xcnf*_ga*MTI1MTUwMzU0OS4xNjg2NjM1MDA1*_ga_J69Z2JCTFB*MTY5MDMxMDIyMS40MS4xLjE2OTAzMTAzNjkuNTguMC4w#create-a-new-netdata-agent-container)\n> Netdata will use the hostname from the container in which it is run instead of that of the host system. To change the default hostname check [here](https://learn.netdata.cloud/docs/agent/packaging/docker?_gl=1*i5weve*_ga*MTI1MTUwMzU0OS4xNjg2NjM1MDA1*_ga_J69Z2JCTFB*MTY5MDMxMjM4Ny40Mi4xLjE2OTAzMTIzOTAuNTcuMC4w#change-the-default-hostname)\n",methods:[{method:"Docker CLI",commands:[{channel:"nightly",command:"docker run -d --name=netdata \\\n--pid=host \\\n--network=host \\\n-v netdataconfig:/etc/netdata \\\n-v netdatalib:/var/lib/netdata \\\n-v netdatacache:/var/cache/netdata \\\n-v /:/host/root:ro,rslave \\\n-v /etc/passwd:/host/etc/passwd:ro \\\n-v /etc/group:/host/etc/group:ro \\\n-v /etc/localtime:/etc/localtime:ro \\\n-v /proc:/host/proc:ro \\\n-v /sys:/host/sys:ro \\\n-v /etc/os-release:/host/etc/os-release:ro \\\n-v /var/log:/host/var/log:ro \\\n-v /var/run/docker.sock:/var/run/docker.sock:ro \\\n-v /run/dbus:/run/dbus:ro \\\n--restart unless-stopped \\\n--cap-add SYS_PTRACE \\\n--cap-add SYS_ADMIN \\\n--security-opt apparmor=unconfined \\\n{% if $showClaimingOptions %}\n-e NETDATA_CLAIM_TOKEN={% claim_token %} \\\n-e NETDATA_CLAIM_URL={% claim_url %} \\\n-e NETDATA_CLAIM_ROOMS={% $claim_rooms %} \\\n{% /if %}\nnetdata/netdata:edge\n"},{channel:"stable",command:"docker run -d --name=netdata \\\n--pid=host \\\n--network=host \\\n-v netdataconfig:/etc/netdata \\\n-v netdatalib:/var/lib/netdata \\\n-v netdatacache:/var/cache/netdata \\\n-v /:/host/root:ro,rslave \\\n-v /etc/passwd:/host/etc/passwd:ro \\\n-v /etc/group:/host/etc/group:ro \\\n-v /etc/localtime:/etc/localtime:ro \\\n-v /proc:/host/proc:ro \\\n-v /sys:/host/sys:ro \\\n-v /etc/os-release:/host/etc/os-release:ro \\\n-v /var/log:/host/var/log:ro \\\n-v /var/run/docker.sock:/var/run/docker.sock:ro \\\n-v /run/dbus:/run/dbus:ro \\\n--restart unless-stopped \\\n--cap-add SYS_PTRACE \\\n--cap-add SYS_ADMIN \\\n--security-opt apparmor=unconfined \\\n{% if $showClaimingOptions %}\n-e NETDATA_CLAIM_TOKEN={% claim_token %} \\\n-e NETDATA_CLAIM_URL={% claim_url %} \\\n-e NETDATA_CLAIM_ROOMS={% $claim_rooms %} \\\n{% /if %}\nnetdata/netdata:stable\n"}]},{method:"Docker Compose",commands:[{channel:"nightly",command:"version: '3'\nservices:\n netdata:\n image: netdata/netdata:edge\n container_name: netdata\n pid: host\n network_mode: host\n restart: unless-stopped\n cap_add:\n - SYS_PTRACE\n - SYS_ADMIN\n security_opt:\n - apparmor:unconfined\n volumes:\n - netdataconfig:/etc/netdata\n - netdatalib:/var/lib/netdata\n - netdatacache:/var/cache/netdata\n - /:/host/root:ro,rslave\n - /etc/passwd:/host/etc/passwd:ro\n - /etc/group:/host/etc/group:ro\n - /etc/localtime:/etc/localtime:ro\n - /proc:/host/proc:ro\n - /sys:/host/sys:ro\n - /etc/os-release:/host/etc/os-release:ro\n - /var/log:/host/var/log:ro\n - /var/run/docker.sock:/var/run/docker.sock:ro\n - /run/dbus:/run/dbus:ro\n{% if $showClaimingOptions %}\n environment:\n - NETDATA_CLAIM_TOKEN={% claim_token %}\n - NETDATA_CLAIM_URL={% claim_url %}\n - NETDATA_CLAIM_ROOMS={% $claim_rooms %}\n{% /if %}\nvolumes:\n netdataconfig:\n netdatalib:\n netdatacache:\n"},{channel:"stable",command:"version: '3'\nservices:\n netdata:\n image: netdata/netdata:stable\n container_name: netdata\n pid: host\n network_mode: host\n restart: unless-stopped\n cap_add:\n - SYS_PTRACE\n - SYS_ADMIN\n security_opt:\n - apparmor:unconfined\n volumes:\n - netdataconfig:/etc/netdata\n - netdatalib:/var/lib/netdata\n - netdatacache:/var/cache/netdata\n - /:/host/root:ro,rslave\n - /etc/passwd:/host/etc/passwd:ro\n - /etc/group:/host/etc/group:ro\n - /etc/localtime:/etc/localtime:ro\n - /proc:/host/proc:ro\n - /sys:/host/sys:ro\n - /etc/os-release:/host/etc/os-release:ro\n - /var/log:/host/var/log:ro\n - /var/run/docker.sock:/var/run/docker.sock:ro\n - /run/dbus:/run/dbus:ro\n{% if $showClaimingOptions %}\n environment:\n - NETDATA_CLAIM_TOKEN={% claim_token %}\n - NETDATA_CLAIM_URL={% claim_url %}\n - NETDATA_CLAIM_ROOMS={% $claim_rooms %}\n{% /if %}\nvolumes:\n netdataconfig:\n netdatalib:\n netdatacache:\n"}]},{method:"Docker Swarm",commands:[{channel:"nightly",command:"version: '3'\nservices:\n netdata:\n image: netdata/netdata:edge\n pid: host\n network_mode: host\n cap_add:\n - SYS_PTRACE\n - SYS_ADMIN\n security_opt:\n - apparmor:unconfined\n volumes:\n - netdataconfig:/etc/netdata\n - netdatalib:/var/lib/netdata\n - netdatacache:/var/cache/netdata\n - /:/host/root:ro,rslave\n - /etc/passwd:/host/etc/passwd:ro\n - /etc/group:/host/etc/group:ro\n - /etc/localtime:/etc/localtime:ro\n - /proc:/host/proc:ro\n - /sys:/host/sys:ro\n - /etc/os-release:/host/etc/os-release:ro\n - /etc/hostname:/etc/hostname:ro\n - /var/log:/host/var/log:ro\n - /var/run/docker.sock:/var/run/docker.sock:ro\n - /run/dbus:/run/dbus:ro\n{% if $showClaimingOptions %}\n environment:\n - NETDATA_CLAIM_TOKEN={% claim_token %}\n - NETDATA_CLAIM_URL={% claim_url %}\n - NETDATA_CLAIM_ROOMS={% $claim_rooms %}\n{% /if %}\n deploy:\n mode: global\n restart_policy:\n condition: on-failure\nvolumes:\n netdataconfig:\n netdatalib:\n netdatacache:\n"},{channel:"stable",command:"version: '3'\nservices:\n netdata:\n image: netdata/netdata:stable\n pid: host\n network_mode: host\n cap_add:\n - SYS_PTRACE\n - SYS_ADMIN\n security_opt:\n - apparmor:unconfined\n volumes:\n - netdataconfig:/etc/netdata\n - netdatalib:/var/lib/netdata\n - netdatacache:/var/cache/netdata\n - /:/host/root:ro,rslave\n - /etc/passwd:/host/etc/passwd:ro\n - /etc/group:/host/etc/group:ro\n - /etc/localtime:/etc/localtime:ro\n - /proc:/host/proc:ro\n - /sys:/host/sys:ro\n - /etc/os-release:/host/etc/os-release:ro\n - /etc/hostname:/etc/hostname:ro\n - /var/log:/host/var/log:ro\n - /var/run/docker.sock:/var/run/docker.sock:ro\n - /run/dbus:/run/dbus:ro\n{% if $showClaimingOptions %}\n environment:\n - NETDATA_CLAIM_TOKEN={% claim_token %}\n - NETDATA_CLAIM_URL={% claim_url %}\n - NETDATA_CLAIM_ROOMS={% $claim_rooms %}\n{% /if %}\n deploy:\n mode: global\n restart_policy:\n condition: on-failure\nvolumes:\n netdataconfig:\n netdatalib:\n netdatacache:\n"}]}],additional_info:"",related_resources:{},platform_info:"We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 19.03 or newer | Core | linux/i386, linux/amd64, linux/arm/v7, linux/arm64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.\n",quick_start:3,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-fedora",meta:{name:"Fedora",link:"https://www.fedoraproject.org/",categories:["deploy.operating-systems"],icon_filename:"fedora.png"},keywords:["linux"],install_description:"Run the following command on your node to install and connnect Netdata to your Space:",methods:[{method:"wget",commands:[{channel:"nightly",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]},{method:"curl",commands:[{channel:"nightly",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]}],additional_info:'Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId="deploy.docker-kubernetes" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId="deploy.docker-kubernetes" %}Docker{% /goToCategory %}?\n',related_resources:{},platform_info:"We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 44 | Core | x86_64, aarch64 | |\n| 43 | Core | x86_64, aarch64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.\n",quick_start:-1,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-freebsd",meta:{name:"FreeBSD",link:"https://www.freebsd.org/",categories:["deploy.operating-systems"],icon_filename:"freebsd.svg"},keywords:["freebsd"],install_description:"## Install dependencies\nPlease install the following packages using the command below:\n\n```pkg install bash e2fsprogs-libuuid git curl autoconf automake pkgconf pidof liblz4 libuv json-c cmake gmake```\nThis step needs root privileges. Please respond in the affirmative for any relevant prompts during the installation process.\n\nRun the following command on your node to install and claim Netdata:\n",methods:[{method:"curl",commands:[{channel:"nightly",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]},{method:"fetch",commands:[{channel:"nightly",command:"fetch -o /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"fetch -o /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]}],additional_info:"Netdata can also be installed via [FreeBSD ports](https://www.freshports.org/net-mgmt/netdata).\n",related_resources:{},platform_info:"We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 13-STABLE | Community | | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.\n",quick_start:6,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-kubernetes",meta:{name:"Kubernetes (Helm)",link:"",categories:["deploy.docker-kubernetes"],icon_filename:"kubernetes.svg"},keywords:["kubernetes","container","Orchestrator"],install_description:"**Use helm install to install Netdata on your Kubernetes cluster**\nFor a new installation use `helm install` or for existing clusters add the content below to your `override.yaml` and then run `helm upgrade -f override.yml netdata netdata/netdata`\n",methods:[{method:"Helm",commands:[{channel:"nightly",command:'helm repo add netdata https://netdata.github.io/helmchart/ && helm repo update\nhelm install netdata netdata/netdata \\\n--set image.tag=edge{% if $showClaimingOptions %} \\\n--set parent.claiming.enabled="true" \\\n--set parent.claiming.token={% claim_token %} \\\n--set parent.claiming.rooms={% $claim_rooms %} \\\n--set child.claiming.enabled="true" \\\n--set child.claiming.token={% claim_token %} \\\n--set child.claiming.rooms={% $claim_rooms %}{% /if %}\n'},{channel:"stable",command:'helm repo add netdata https://netdata.github.io/helmchart/ && helm repo update\nhelm install netdata netdata/netdata \\\n--set image.tag=stable{% if $showClaimingOptions %} \\\n--set parent.claiming.enabled="true" \\\n--set parent.claiming.token={% claim_token %} \\\n--set parent.claiming.rooms={% $claim_rooms %} \\\n--set child.claiming.enabled="true" \\\n--set child.claiming.token={% claim_token %} \\\n--set child.claiming.rooms={% $claim_rooms %}{% /if %}\n'}]},{method:"Existing Cluster",commands:[{channel:"nightly",command:"image:\n tag: edge\n\nrestarter:\n enabled: true\n{% if $showClaimingOptions %}\n\nparent:\n claiming:\n enabled: true\n token: {% claim_token %}\n rooms: {% $claim_rooms %}\n\nchild:\n claiming:\n enabled: true\n token: {% claim_token %}\n rooms: {% $claim_rooms %}\n{% /if %}\n"},{channel:"stable",command:"image:\n tag: stable\n\nrestarter:\n enabled: true\n{% if $showClaimingOptions %}\n\nparent:\n claiming:\n enabled: true\n token: {% claim_token %}\n rooms: {% $claim_rooms %}\n\nchild:\n claiming:\n enabled: true\n token: {% claim_token %}\n rooms: {% $claim_rooms %}\n{% /if %}\n"}]}],additional_info:"",related_resources:{},platform_info:"",quick_start:4,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-linux-generic",meta:{name:"Linux",link:"",categories:["deploy.operating-systems"],icon_filename:"linux.svg"},keywords:["linux"],install_description:"Run the following command on your node to install and connnect Netdata to your Space:",methods:[{method:"wget",commands:[{channel:"nightly",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]},{method:"curl",commands:[{channel:"nightly",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]}],additional_info:'Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId="deploy.docker-kubernetes" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId="deploy.docker-kubernetes" %}Docker{% /goToCategory %}?\n',related_resources:{},platform_info:"",quick_start:1,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-macos",meta:{name:"macOS",link:"",categories:["deploy.operating-systems"],icon_filename:"macos.svg"},keywords:["macOS","mac","apple"],install_description:"Run the following command on your Intel based OSX, macOS servers to install and claim Netdata:",methods:[{method:"curl",commands:[{channel:"nightly",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]}],additional_info:'Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId="deploy.docker-kubernetes" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId="deploy.docker-kubernetes" %}Docker{% /goToCategory %}?\n',related_resources:{},platform_info:"We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 13 | Community | | |\n| 12 | Community | | |\n| 11 | Community | | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.\n",quick_start:5,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-manjarolinux",meta:{name:"Manjaro Linux",link:"https://manjaro.org/",categories:["deploy.operating-systems"],icon_filename:"manjaro.svg"},keywords:["linux"],install_description:"Run the following command on your node to install and connnect Netdata to your Space:",methods:[{method:"wget",commands:[{channel:"nightly",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]},{method:"curl",commands:[{channel:"nightly",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]}],additional_info:'Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId="deploy.docker-kubernetes" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId="deploy.docker-kubernetes" %}Docker{% /goToCategory %}?\n',related_resources:{},platform_info:"We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| latest | Intermediate | | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.\n",quick_start:-1,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-opensuse",meta:{name:"SUSE Linux",link:"https://www.suse.com/",categories:["deploy.operating-systems"],icon_filename:"openSUSE.svg"},keywords:["linux"],install_description:"Run the following command on your node to install and connnect Netdata to your Space:",methods:[{method:"wget",commands:[{channel:"nightly",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]},{method:"curl",commands:[{channel:"nightly",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]}],additional_info:'Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId="deploy.docker-kubernetes" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId="deploy.docker-kubernetes" %}Docker{% /goToCategory %}?\n',related_resources:{},platform_info:"We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| tumbleweed | Core | x86_64, aarch64 | |\n| 16.0 | Core | x86_64, aarch64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.\n",quick_start:-1,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-oraclelinux",meta:{name:"Oracle Linux",link:"https://www.oracle.com/linux/",categories:["deploy.operating-systems"],icon_filename:"oraclelinux.svg"},keywords:["linux"],install_description:"Run the following command on your node to install and connnect Netdata to your Space:",methods:[{method:"wget",commands:[{channel:"nightly",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]},{method:"curl",commands:[{channel:"nightly",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]}],additional_info:'Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId="deploy.docker-kubernetes" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId="deploy.docker-kubernetes" %}Docker{% /goToCategory %}?\n',related_resources:{},platform_info:"We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 10 | Core | x86_64, aarch64 | |\n| 9 | Core | x86_64, aarch64 | |\n| 8 | Core | x86_64, aarch64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.\n",quick_start:-1,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-rhel",meta:{name:"Red Hat Enterprise Linux",link:"https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux",categories:["deploy.operating-systems"],icon_filename:"rhel.png"},keywords:["linux"],install_description:"Run the following command on your node to install and connnect Netdata to your Space:",methods:[{method:"wget",commands:[{channel:"nightly",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]},{method:"curl",commands:[{channel:"nightly",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]}],additional_info:'Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId="deploy.docker-kubernetes" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId="deploy.docker-kubernetes" %}Docker{% /goToCategory %}?\n',related_resources:{},platform_info:"We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 10.x | Core | x86_64, aarch64 | |\n| 9.x | Core | x86_64, aarch64 | |\n| 8.x | Core | x86_64, aarch64 | |\n| 7.x | Core | x86_64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.\n",quick_start:-1,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-rockylinux",meta:{name:"Rocky Linux",link:"https://rockylinux.org/",categories:["deploy.operating-systems"],icon_filename:"rocky.svg"},keywords:["linux"],install_description:"Run the following command on your node to install and connnect Netdata to your Space:",methods:[{method:"wget",commands:[{channel:"nightly",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]},{method:"curl",commands:[{channel:"nightly",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]}],additional_info:'Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId="deploy.docker-kubernetes" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId="deploy.docker-kubernetes" %}Docker{% /goToCategory %}?\n',related_resources:{},platform_info:"We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 10 | Core | x86_64, aarch64 | |\n| 9 | Core | x86_64, aarch64 | |\n| 8 | Core | x86_64, aarch64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.\n",quick_start:-1,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-ubuntu",meta:{name:"Ubuntu",link:"https://ubuntu.com/",categories:["deploy.operating-systems"],icon_filename:"ubuntu.svg"},keywords:["linux"],install_description:"Run the following command on your node to install and connnect Netdata to your Space:",methods:[{method:"wget",commands:[{channel:"nightly",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]},{method:"curl",commands:[{channel:"nightly",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --nightly-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"},{channel:"stable",command:"curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh && sh /tmp/netdata-kickstart.sh --stable-channel{% if $showClaimingOptions %} --claim-token {% claim_token %} --claim-rooms {% $claim_rooms %} --claim-url {% claim_url %}{% /if %}\n"}]}],additional_info:'Did you know you can also deploy Netdata on your OS using {% goToCategory navigateToSettings=$navigateToSettings categoryId="deploy.docker-kubernetes" %}Kubernetes{% /goToCategory %} or {% goToCategory categoryId="deploy.docker-kubernetes" %}Docker{% /goToCategory %}?\n',related_resources:{},platform_info:"We build native packages for the following releases:\n\n| Version | Support Tier | Native Package Architectures | Notes |\n|:-------:|:------------:|:----------------------------:|:----- |\n| 26.04 | Core | amd64, armhf, arm64 | |\n| 25.10 | Core | amd64, armhf, arm64 | |\n| 24.04 | Core | amd64, armhf, arm64 | |\n| 22.04 | Core | amd64, armhf, arm64 | |\n\nOn other releases of this distribution, a static binary will be installed in `/opt/netdata`.\n",quick_start:-1,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"deploy-windows",meta:{name:"Windows",link:"https://www.microsoft.com/en-us/windows",categories:["deploy.operating-systems"],icon_filename:"windows.svg"},keywords:["windows"],install_description:"Netdata offers a convenient Windows installer for easy setup. This executable provides two distinct installation modes, outlined below.\n\n## Graphical User Interface (GUI)\n\n**Download the MSI Installer**:\n - [Stable version](https://github.com/netdata/netdata/releases/latest/download/netdata-x64.msi)\n - [Nightly version](https://github.com/netdata/netdata-nightlies/releases/latest/download/netdata-x64.msi)\n\nDouble-click the installer to start the installation process. As Netdata adds a service to your system, you'll need to provide administrator privileges.\n\nOnce installed, you can access your Netdata dashboard at `localhost:19999`.\n\n## Silent Mode (Command line)\n\nIf you prefer to install Netdata through the command line, you can do so by running the following command on Windows Powershell with administrator rights.\n",methods:[{method:"Silent Mode (Command line)",commands:[{channel:"stable",command:"$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest https://github.com/netdata/netdata/releases/latest/download/netdata-x64.msi -OutFile \"netdata-x64.msi\"; msiexec /qn /i netdata-x64.msi {% if $showClaimingOptions %}TOKEN={% claim_token %} ROOMS={% $claim_rooms %}{% /if %}\n"},{channel:"nightly",command:"$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest https://github.com/netdata/netdata-nightlies/releases/latest/download/netdata-x64.msi -OutFile \"netdata-x64.msi\"; msiexec /qn /i netdata-x64.msi {% if $showClaimingOptions %}TOKEN={% claim_token %} ROOMS={% $claim_rooms %}{% /if %}\n"}]}],additional_info:"### Available CLI Options\n\n| Option | Description |\n|--------------|--------------------------------------------------------------------------------------------------|\n| `/qn` | Enables silent mode installation. |\n| `/i` | Specifies the path to the MSI installer file. |\n| `INSECURE=1` | Forces insecure connections, bypassing hostname verification (use only if absolutely necessary). |\n| `TOKEN=` | Sets the Claim Token for your Netdata Cloud Space. |\n| `ROOMS=` | Comma-separated list of Room IDs where you want your node to appear. |\n| `PROXY=` | Sets the proxy server address if your network requires one. |\n",related_resources:{},platform_info:"",quick_start:2,integration_type:"deploy",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/deploy.yaml"},{id:"export-appoptics",meta:{name:"AppOptics",link:"https://www.solarwinds.com/appoptics",categories:["export"],icon_filename:"solarwinds.svg",keywords:["app optics","AppOptics","Solarwinds"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# AppOptics\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-aws-kinesis",meta:{name:"AWS Kinesis",link:"https://aws.amazon.com/kinesis/",categories:["export"],icon_filename:"aws-kinesis.svg"},keywords:["exporter","AWS","Kinesis"],overview:"# AWS Kinesis\n\nExport metrics to AWS Kinesis Data Streams\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- First [install](https://docs.aws.amazon.com/en_us/sdk-for-cpp/v1/developer-guide/setup.html) AWS SDK for C++\n- Here are the instructions when building from source, to ensure 3rd party dependencies are installed:\n ```bash\n git clone --recursive https://github.com/aws/aws-sdk-cpp.git\n cd aws-sdk-cpp/\n git submodule update --init --recursive\n mkdir BUILT\n cd BUILT\n cmake -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_ONLY=kinesis ..\n make\n make install\n ```\n- `libcrypto`, `libssl`, and `libcurl` are also required to compile Netdata with Kinesis support enabled.\n- Next, Netdata should be re-installed from the source. The installer will detect that the required libraries are now available.\n\n\n\n### Configuration\n\n#### Options\n\nNetdata automatically computes a partition key for every record with the purpose to distribute records across available shards evenly.\nThe following options can be defined for this exporter.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | Netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 2 * update_every * 1000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:4242 10.11.14.3:4242 10.11.14.4:4242\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic configuration\n\n```yaml\n[kinesis:my_instance]\n enabled = yes\n destination = us-east-1\n\n```\n###### Configuration with AWS credentials\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[kinesis:my_instance]\n enabled = yes\n destination = us-east-1\n # AWS credentials\n aws_access_key_id = your_access_key_id\n aws_secret_access_key = your_secret_access_key\n # destination stream\n stream name = your_stream_name\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/aws_kinesis/metadata.yaml",troubleshooting:""},{id:"export-azure-data",meta:{name:"Azure Data Explorer",link:"https://azure.microsoft.com/en-us/pricing/details/data-explorer/",categories:["export"],icon_filename:"azuredataex.jpg",keywords:["Azure Data Explorer","Azure"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# Azure Data Explorer\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-azure-event",meta:{name:"Azure Event Hub",link:"https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-about",categories:["export"],icon_filename:"azureeventhub.png",keywords:["Azure Event Hub","Azure"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# Azure Event Hub\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-bigquery",meta:{name:"Google BigQuery",link:"https://cloud.google.com/bigquery/",categories:["export"],icon_filename:"bigquery.png",keywords:["export","Google BigQuery","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# Google BigQuery\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-blueflood",meta:{name:"Blueflood",link:"http://blueflood.io/",categories:["export"],icon_filename:"blueflood.png",keywords:["export","Blueflood","graphite"]},keywords:["exporter","graphite","remote write","time series"],overview:"# Blueflood\n\nExport your Netdata metrics to Blueflood DB using the Graphite protocol, allowing you to archive your data for long-term storage, further analysis, or correlation with data from other sources.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic configuration\n\n```yaml\n[graphite:netdata]\n enabled = yes\n destination = localhost:2003\n\n```\n###### Configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[graphite:netdata]\n enabled = yes\n destination = localhost:2003\n username = my_username\n password = my_password\n\n```\n###### Detailed Configuration for a remote, secure host\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[graphite:https:netdata]\n enabled = yes\n username = my_username\n password = my_password\n destination = 10.10.1.114:2003\n # data source = average\n # prefix = netdata\n # hostname = my_hostname\n # update every = 10\n # buffer on failures = 10\n # timeout ms = 20000\n # send names instead of ids = yes\n # send charts matching = *\n # send hosts matching = localhost *\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/graphite/metadata.yaml",troubleshooting:""},{id:"export-chronix",meta:{name:"Chronix",link:"https://dbdb.io/db/chronix",categories:["export"],icon_filename:"chronix.png",keywords:["export","chronix","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# Chronix\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-cortex",meta:{name:"Cortex",link:"https://cortexmetrics.io/",categories:["export"],icon_filename:"cortex.png",keywords:["export","cortex","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# Cortex\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-crate",meta:{name:"CrateDB",link:"https://crate.io/",categories:["export"],icon_filename:"crate.svg",keywords:["export","CrateDB","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# CrateDB\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-elastic",meta:{name:"ElasticSearch",link:"https://www.elastic.co/",categories:["export"],icon_filename:"elasticsearch.svg",keywords:["export","ElasticSearch","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# ElasticSearch\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-gnocchi",meta:{name:"Gnocchi",link:"https://wiki.openstack.org/wiki/Gnocchi",categories:["export"],icon_filename:"gnocchi.svg",keywords:["export","Gnocchi","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# Gnocchi\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-google-pubsub",meta:{name:"Google Cloud Pub Sub",link:"https://cloud.google.com/pubsub",categories:["export"],icon_filename:"pubsub.png"},keywords:["exporter","Google Cloud","Pub Sub"],overview:"# Google Cloud Pub Sub\n\nExport metrics to Google Cloud Pub/Sub Service\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- First [install](https://github.com/googleapis/google-cloud-cpp/) install Google Cloud Platform C++ Client Libraries\n- Pub/Sub support is also dependent on the dependencies of those libraries, like `protobuf`, `protoc`, and `grpc`\n- Next, Netdata should be re-installed from the source. The installer will detect that the required libraries are now available.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | pubsub.googleapis.com | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | Netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 2 * update_every * 1000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = pubsub.googleapis.com\n ```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Basic configuration\n\n- Set the destination option to a Pub/Sub service endpoint. pubsub.googleapis.com is the default one.\n- Create the credentials JSON file by following Google Cloud\'s authentication guide.\n- The user running the Agent (typically netdata) needs read access to google_cloud_credentials.json, which you can set\n `chmod 400 google_cloud_credentials.json; chown netdata google_cloud_credentials.json`\n- Set the credentials file option to the full path of the file.\n\n\n```yaml\n[pubsub:my_instance]\n enabled = yes\n destination = pubsub.googleapis.com\n credentials file = /etc/netdata/google_cloud_credentials.json\n project id = my_project\n topic id = my_topic\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/pubsub/metadata.yaml",troubleshooting:""},{id:"export-graphite",meta:{name:"Graphite",link:"https://graphite.readthedocs.io/en/latest/",categories:["export"],icon_filename:"graphite.png"},keywords:["exporter","graphite","remote write","time series"],overview:"# Graphite\n\nUse the Graphite connector for the exporting engine to archive your Netdata metrics to Graphite providers for long-term storage,\nfurther analysis, or correlation with data from other sources.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic configuration\n\n```yaml\n[graphite:netdata]\n enabled = yes\n destination = localhost:2003\n\n```\n###### Configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[graphite:netdata]\n enabled = yes\n destination = localhost:2003\n username = my_username\n password = my_password\n\n```\n###### Detailed Configuration for a remote, secure host\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[graphite:https:netdata]\n enabled = yes\n username = my_username\n password = my_password\n destination = 10.10.1.114:2003\n # data source = average\n # prefix = netdata\n # hostname = my_hostname\n # update every = 10\n # buffer on failures = 10\n # timeout ms = 20000\n # send names instead of ids = yes\n # send charts matching = *\n # send hosts matching = localhost *\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/graphite/metadata.yaml",troubleshooting:""},{id:"export-greptimedb",meta:{name:"GreptimeDB",link:"https://greptime.com/product/db",categories:["export"],icon_filename:"greptimedb.svg",keywords:["export","GreptimeDB","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# GreptimeDB\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-irondb",meta:{name:"IRONdb",link:"https://docs.circonus.com/irondb/",categories:["export"],icon_filename:"irondb.png",keywords:["export","IRONdb","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# IRONdb\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-json",meta:{name:"JSON",link:"",categories:["export"],icon_filename:"json.svg"},keywords:["exporter","json"],overview:"# JSON\n\nUse the JSON connector for the exporting engine to archive your Agent's metrics to JSON document databases for long-term storage,\nfurther analysis, or correlation with data from other sources\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | pubsub.googleapis.com | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | Netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 2 * update_every * 1000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = localhost:5448\n ```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Basic configuration\n\n\n\n```yaml\n[json:my_json_instance]\n enabled = yes\n destination = localhost:5448\n\n```\n###### Configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `json:https:my_json_instance`.\n\n```yaml\n[json:my_json_instance]\n enabled = yes\n destination = localhost:5448\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/json/metadata.yaml",troubleshooting:""},{id:"export-kafka",meta:{name:"Kafka",link:"https://kafka.apache.org/",categories:["export"],icon_filename:"kafka.svg",keywords:["export","Kafka","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# Kafka\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-kairosdb",meta:{name:"KairosDB",link:"https://kairosdb.github.io/",categories:["export"],icon_filename:"kairos.png",keywords:["KairosDB","kairos","export","graphite"]},keywords:["exporter","graphite","remote write","time series"],overview:"# KairosDB\n\nExport your Netdata metrics to KairosDB using the Graphite protocol, allowing you to archive your data for long-term storage, further analysis, or correlation with data from other sources.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\nNo action required.\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic configuration\n\n```yaml\n[graphite:netdata]\n enabled = yes\n destination = localhost:2003\n\n```\n###### Configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[graphite:netdata]\n enabled = yes\n destination = localhost:2003\n username = my_username\n password = my_password\n\n```\n###### Detailed Configuration for a remote, secure host\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[graphite:https:netdata]\n enabled = yes\n username = my_username\n password = my_password\n destination = 10.10.1.114:2003\n # data source = average\n # prefix = netdata\n # hostname = my_hostname\n # update every = 10\n # buffer on failures = 10\n # timeout ms = 20000\n # send names instead of ids = yes\n # send charts matching = *\n # send hosts matching = localhost *\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/graphite/metadata.yaml",troubleshooting:""},{id:"export-m3db",meta:{name:"M3DB",link:"https://m3db.io/",categories:["export"],icon_filename:"m3db.png",keywords:["export","M3DB","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# M3DB\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-metricfire",meta:{name:"MetricFire",link:"https://www.metricfire.com/",categories:["export"],icon_filename:"metricfire.png",keywords:["export","MetricFire","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# MetricFire\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-mongodb",meta:{name:"MongoDB",link:"https://www.mongodb.com/",categories:["export"],icon_filename:"mongodb.svg"},keywords:["exporter","MongoDB"],overview:"# MongoDB\n\nUse the MongoDB connector for the exporting engine to archive your Agent's metrics to a MongoDB database\nfor long-term storage, further analysis, or correlation with data from other sources.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- To use MongoDB as an external storage for long-term archiving, you should first [install](https://www.mongodb.com/docs/languages/c/c-driver/current/libmongoc/tutorials/obtaining-libraries/installing/#std-label-installing) libmongoc 1.7.0 or higher.\n- Next, re-install Netdata from the source, which detects that the required library is now available.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | localhost | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | Netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 2 * update_every * 1000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:27017 10.11.14.3:4242 10.11.14.4:27017\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Basic configuration\n\nThe default socket timeout depends on the exporting connector update interval.\nThe timeout is 500 ms shorter than the interval (but not less than 1000 ms). You can alter the timeout using the sockettimeoutms MongoDB URI option.\n\n\n```yaml\n[mongodb:my_instance]\n enabled = yes\n destination = mongodb://<hostname>\n database = your_database_name\n collection = your_collection_name\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/mongodb/metadata.yaml",troubleshooting:""},{id:"export-newrelic",meta:{name:"New Relic",link:"https://newrelic.com/",categories:["export"],icon_filename:"newrelic.svg",keywords:["export","NewRelic","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# New Relic\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-opensearch",meta:{name:"OpeanSearch",link:"https://opensearch.org/",categories:["export"],icon_filename:"opensearch.svg",keywords:["export","OpenSearch","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# OpeanSearch\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-opentsdb",meta:{name:"OpenTSDB",link:"https://github.com/OpenTSDB/opentsdb",categories:["export"],icon_filename:"opentsdb.png"},keywords:["exporter","OpenTSDB","scalable time series"],overview:"# OpenTSDB\n\nUse the OpenTSDB connector for the exporting engine to archive your Netdata metrics to OpenTSDB databases for long-term storage,\nfurther analysis, or correlation with data from other sources.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- OpenTSDB and Netdata, installed, configured and operational.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | Netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 2 * update_every * 1000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to OpenTSDB. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used (opentsdb = 4242).\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:4242 10.11.14.3:4242 10.11.14.4:4242\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Minimal configuration\n\nAdd `:http` or `:https` modifiers to the connector type if you need to use other than a plaintext protocol.\nFor example: `opentsdb:http:my_opentsdb_instance`, `opentsdb:https:my_opentsdb_instance`.\n\n\n```yaml\n[opentsdb:my_opentsdb_instance]\n enabled = yes\n destination = localhost:4242\n\n```\n###### HTTP authentication\n\n\n\n```yaml\n[opentsdb:my_opentsdb_instance]\n enabled = yes\n destination = localhost:4242\n username = my_username\n password = my_password\n\n```\n###### Using `send hosts matching`\n\n\n\n```yaml\n[opentsdb:my_opentsdb_instance]\n enabled = yes\n destination = localhost:4242\n send hosts matching = localhost *\n\n```\n###### Using `send charts matching`\n\n\n\n```yaml\n[opentsdb:my_opentsdb_instance]\n enabled = yes\n destination = localhost:4242\n send charts matching = *\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/opentsdb/metadata.yaml",troubleshooting:""},{id:"export-pgsql",meta:{name:"PostgreSQL",link:"https://www.postgresql.org/",categories:["export"],icon_filename:"postgres.svg",keywords:["export","PostgreSQL","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# PostgreSQL\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-prometheus-remote",meta:{name:"Prometheus Remote Write",link:"https://prometheus.io/docs/operating/integrations/#remote-endpoints-and-storage",categories:["export"],icon_filename:"prometheus.svg"},keywords:["exporter","Prometheus","remote write","time series"],overview:"# Prometheus Remote Write\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-quasar",meta:{name:"QuasarDB",link:"https://doc.quasar.ai/master/",categories:["export"],icon_filename:"quasar.jpeg",keywords:["export","quasar","quasarDB","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# QuasarDB\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-splunk",meta:{name:"Splunk SignalFx",link:"https://www.splunk.com/en_us/products/observability.html",categories:["export"],icon_filename:"splunk.svg",keywords:["export","splunk","signalfx","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# Splunk SignalFx\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-thanos",meta:{name:"Thanos",link:"https://thanos.io/",categories:["export"],icon_filename:"thanos.png",keywords:["export","thanos","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# Thanos\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-tikv",meta:{name:"TiKV",link:"https://tikv.org/",categories:["export"],icon_filename:"tikv.png",keywords:["export","TiKV","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# TiKV\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-timescaledb",meta:{name:"TimescaleDB",link:"https://www.timescale.com/",categories:["export"],icon_filename:"timescale.png",keywords:["export","TimescaleDB","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# TimescaleDB\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-victoria",meta:{name:"VictoriaMetrics",link:"https://victoriametrics.com/products/open-source/",categories:["export"],icon_filename:"victoriametrics.png",keywords:["export","victoriametrics","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# VictoriaMetrics\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-vmware",meta:{name:"VMware Aria",link:"https://www.vmware.com/products/aria-operations-for-applications.html",categories:["export"],icon_filename:"aria.png",keywords:["export","VMware","Aria","Tanzu","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# VMware Aria\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"export-wavefront",meta:{name:"Wavefront",link:"https://docs.wavefront.com/wavefront_data_ingestion.html",categories:["export"],icon_filename:"wavefront.png",keywords:["export","Wavefront","prometheus","remote write"]},keywords:["exporter","Prometheus","remote write","time series"],overview:"# Wavefront\n\nUse the Prometheus remote write exporting connector to archive your Netdata metrics to the external storage provider of your choice for long-term storage and further analysis.\n\n\n## Limitations\n\nThe remote write exporting connector does not support buffer on failures.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Netdata and the external storage provider of your choice, installed, configured and operational.\n- `protobuf` and `snappy` libraries installed.\n- Netdata reinstalled after the libraries.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this exporter.\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Enables or disables an exporting connector instance (yes/no). | no | yes |\n| [destination](#option-destination) | Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics. | no | yes |\n| username | Username for HTTP authentication | my_username | no |\n| password | Password for HTTP authentication | my_password | no |\n| data source | Selects the kind of data that will be sent to the external database. (as collected/average/sum) | | no |\n| hostname | The hostname to be used for sending data to the external database server. | [global].hostname | no |\n| prefix | The prefix to add to all metrics. | netdata | no |\n| [update every](#option-update-every) | Frequency of sending sending data to the external database, in seconds. | 10 | no |\n| [buffer on failures](#option-buffer-on-failures) | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. | 10 | no |\n| timeout ms | The timeout in milliseconds to wait for the external database server to process the data. | 20000 | no |\n| [send hosts matching](#option-send-hosts-matching) | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). | localhost * | no |\n| [send charts matching](#option-send-charts-matching) | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. | * | no |\n| [send names instead of ids](#option-send-names-instead-of-ids) | Controls the metric names Netdata should send to the external database (yes/no). | | no |\n| send configured labels | Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes/no). | | no |\n| send automatic labels | Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes/no). | | no |\n\n<a id="option-destination"></a>\n##### destination\n\nThe format of each item in this list, is: [PROTOCOL:]IP[:PORT].\n- PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine.\n- IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port.\n- PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used.\n\nExample IPv4:\n ```yaml\n destination = 10.11.14.2:2003 10.11.14.3:4242 10.11.14.4:2003\n ```\nExample IPv6 and IPv4 together:\n```yaml\ndestination = [ffff:...:0001]:2003 10.11.12.1:2003\n```\nWhen multiple servers are defined, Netdata will try the next one when the previous one fails.\n\n\n<a id="option-update-every"></a>\n##### update every\n\nNetdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers\nsend data to the same database. This randomness does not affect the quality of the data, only the time they are sent.\n\n\n<a id="option-buffer-on-failures"></a>\n##### buffer on failures\n\nIf the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it).\n\n\n<a id="option-send-hosts-matching"></a>\n##### send hosts matching\n\nIncludes one or more space separated patterns, using * as wildcard (any number of times within each pattern).\nThe patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to\nfilter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts.\n\nA pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`,\nuse `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative).\n\n\n<a id="option-send-charts-matching"></a>\n##### send charts matching\n\nA pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads,\nuse !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used,\npositive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter\nhas a higher priority than the configuration option.\n\n\n<a id="option-send-names-instead-of-ids"></a>\n##### send names instead of ids\n\nNetdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names\nare human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are\ndifferent : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `exporting.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config exporting.conf\n```\n\n##### Examples\n\n###### Example configuration\n\nBasic example configuration for Prometheus remote write.\n\n```yaml\n[prometheus_remote_write:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n\n```\n###### Example configuration with HTTPS and HTTP authentication\n\nAdd `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.\n\n```yaml\n[prometheus_remote_write:https:my_instance]\n enabled = yes\n destination = 10.11.14.2:2003\n remote write URL path = /receive\n username = my_username\n password = my_password\n\n```\n',integration_type:"exporter",edit_link:"https://github.com/netdata/netdata/blob/master/src/exporting/prometheus/metadata.yaml",troubleshooting:""},{id:"notify-alerta",meta:{name:"Alerta",link:"https://alerta.io/",categories:["notify.agent"],icon_filename:"alerta.png"},keywords:["Alerta"],overview:"# Alerta\n\nThe [Alerta](https://alerta.io/) monitoring system is a tool used to consolidate and de-duplicate alerts from multiple sources for quick \u2018at-a-glance\u2019 visualization. With just one system you can monitor alerts from many other monitoring tools on a single screen.\nYou can send Netdata alerts to Alerta to see alerts coming from many Netdata hosts or also from a multi-host Netdata configuration.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- A working Alerta instance\n- An Alerta API key (if authentication in Alerta is enabled)\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_ALERTA | Set `SEND_ALERTA` to YES | | yes |\n| ALERTA_WEBHOOK_URL | set `ALERTA_WEBHOOK_URL` to the API url you defined when you installed the Alerta server. | | yes |\n| [ALERTA_API_KEY](#option-alerta-api-key) | Set `ALERTA_API_KEY` to your API key. | | yes |\n| DEFAULT_RECIPIENT_ALERTA | Set `DEFAULT_RECIPIENT_ALERTA` to the default recipient environment you want the alert notifications to be sent to. All roles will default to this variable if left unconfigured. | | yes |\n| [DEFAULT_RECIPIENT_CUSTOM](#option-default-recipient-custom) | Set different recipient environments per role, by editing `DEFAULT_RECIPIENT_CUSTOM` with the environment name of your choice | | no |\n\n<a id="option-alerta-api-key"></a>\n##### ALERTA_API_KEY\n\nYou will need an API key to send messages from any source, if Alerta is configured to use authentication (recommended). To create a new API key:\n1. Go to Configuration > API Keys.\n2. Create a new API key called "netdata" with `write:alerts` permission.\n\n\n<a id="option-default-recipient-custom"></a>\n##### DEFAULT_RECIPIENT_CUSTOM\n\nThe `DEFAULT_RECIPIENT_CUSTOM` can be edited in the following entries at the bottom of the same file:\n\n```text\nrole_recipients_alerta[sysadmin]="Systems"\nrole_recipients_alerta[domainadmin]="Domains"\nrole_recipients_alerta[dba]="Databases Systems"\nrole_recipients_alerta[webmaster]="Marketing Development"\nrole_recipients_alerta[proxyadmin]="Proxy"\nrole_recipients_alerta[sitemgr]="Sites"\n```\n\nThe values you provide should be defined as environments in `/etc/alertad.conf` with `ALLOWED_ENVIRONMENTS` option.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# alerta (alerta.io) global notification options\n\nSEND_ALERTA="YES"\nALERTA_WEBHOOK_URL="http://yourserver/alerta/api"\nALERTA_API_KEY="INSERT_YOUR_API_KEY_HERE"\nDEFAULT_RECIPIENT_ALERTA="Production"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/alerta/metadata.yaml"},{id:"notify-awssns",meta:{name:"AWS SNS",link:"https://aws.amazon.com/sns/",categories:["notify.agent"],icon_filename:"aws.svg"},keywords:["AWS SNS"],overview:"# AWS SNS\n\nAs part of its AWS suite, Amazon provides a notification broker service called 'Simple Notification Service' (SNS). Amazon SNS works similarly to Netdata's own notification system, allowing to dispatch a single notification to multiple subscribers of different types. Among other things, SNS supports sending notifications to:\n- Email addresses\n- Mobile Phones via SMS\n- HTTP or HTTPS web hooks\n- AWS Lambda functions\n- AWS SQS queues\n- Mobile applications via push notifications\nYou can send notifications through Amazon SNS using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n\n## Limitations\n\n- While Amazon SNS supports sending differently formatted messages for different delivery methods, Netdata does not currently support this functionality.\n- For email notification support, we recommend using Netdata's email notifications, as it has the following benefits:\n - In most cases, it requires less configuration.\n - Netdata's emails are nicely pre-formatted and support features like threading, which requires a lot of manual effort in SNS.\n - It is less resource intensive and more cost-efficient than SNS.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- The [Amazon Web Services CLI tools](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) (awscli).\n- An actual home directory for the user you run Netdata as, instead of just using `/` as a home directory. The setup depends on the distribution, but `/var/lib/netdata` is the recommended directory. If you are using Netdata as a dedicated user, the permissions will already be correct.\n- An Amazon SNS topic to send notifications to with one or more subscribers. The Getting Started section of the Amazon SNS documentation covers the basics of how to set this up. Make note of the Topic ARN when you create the topic.\n- While not mandatory, it is highly recommended to create a dedicated IAM user on your account for Netdata to send notifications. This user needs to have programmatic access, and should only allow access to SNS. For an additional layer of security, you can create one for each system or group of systems.\n- Terminal access to the Agent you wish to configure.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| aws path | The full path of the aws command. If empty, the system `$PATH` will be searched for it. If not found, Amazon SNS notifications will be silently disabled. | | yes |\n| SEND_AWSNS | Set `SEND_AWSNS` to YES | YES | yes |\n| [AWSSNS_MESSAGE_FORMAT](#option-awssns-message-format) | Set `AWSSNS_MESSAGE_FORMAT` to the string that you want the alert to be sent into. | ${status} on ${host} at ${date}: ${chart} ${value_string} | yes |\n| [DEFAULT_RECIPIENT_AWSSNS](#option-default-recipient-awssns) | Set `DEFAULT_RECIPIENT_AWSSNS` to the Topic ARN you noted down upon creating the Topic. | | yes |\n\n<a id="option-awssns-message-format"></a>\n##### AWSSNS_MESSAGE_FORMAT\n\nFor the complete list of supported notification variables, see the [Alert Notification Variables](../../REFERENCE.md#alert-notification-variables) section in the Health Reference.\n\n\n<a id="option-default-recipient-awssns"></a>\n##### DEFAULT_RECIPIENT_AWSSNS\n\nAll roles will default to this variable if left unconfigured.\n\nYou can have different recipient Topics per **role**, by editing `DEFAULT_RECIPIENT_AWSSNS` with the Topic ARN you want, in the following entries at the bottom of the same file:\n\n```text\nrole_recipients_awssns[sysadmin]="arn:aws:sns:us-east-2:123456789012:Systems"\nrole_recipients_awssns[domainadmin]="arn:aws:sns:us-east-2:123456789012:Domains"\nrole_recipients_awssns[dba]="arn:aws:sns:us-east-2:123456789012:Databases"\nrole_recipients_awssns[webmaster]="arn:aws:sns:us-east-2:123456789012:Development"\nrole_recipients_awssns[proxyadmin]="arn:aws:sns:us-east-2:123456789012:Proxy"\nrole_recipients_awssns[sitemgr]="arn:aws:sns:us-east-2:123456789012:Sites"\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\nAn example working configuration would be:\n\n```yaml\n```text\n#------------------------------------------------------------------------------\n# Amazon SNS notifications\n\nSEND_AWSSNS="YES"\nAWSSNS_MESSAGE_FORMAT="${status} on ${host} at ${date}: ${chart} ${value_string}"\nDEFAULT_RECIPIENT_AWSSNS="arn:aws:sns:us-east-2:123456789012:MyTopic"\n```\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/awssns/metadata.yaml"},{id:"notify-custom",meta:{name:"Custom",link:"",categories:["notify.agent"],icon_filename:"custom.png"},keywords:["custom"],overview:"# Custom\n\nNetdata Agent's alert notification feature allows you to send custom notifications to any endpoint you choose.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_CUSTOM | Set `SEND_CUSTOM` to YES | YES | yes |\n| [DEFAULT_RECIPIENT_CUSTOM](#option-default-recipient-custom) | This value is dependent on how you handle the `${to}` variable inside the `custom_sender()` function. | | yes |\n| [custom_sender()](#option-custom-sender) | You can look at the other senders in `/usr/libexec/netdata/plugins.d/alarm-notify.sh` for examples of how to modify the function in this configuration file. | | no |\n\n<a id="option-default-recipient-custom"></a>\n##### DEFAULT_RECIPIENT_CUSTOM\n\nAll roles will default to this variable if left unconfigured. You can edit `DEFAULT_RECIPIENT_CUSTOM` with the variable you want, in the following entries at the bottom of the same file:\n```\nrole_recipients_custom[sysadmin]="systems"\nrole_recipients_custom[domainadmin]="domains"\nrole_recipients_custom[dba]="databases systems"\nrole_recipients_custom[webmaster]="marketing development"\nrole_recipients_custom[proxyadmin]="proxy-admin"\nrole_recipients_custom[sitemgr]="sites"\n```\n\n\n<a id="option-custom-sender"></a>\n##### custom_sender()\n\nThe following is a sample custom_sender() function in health_alarm_notify.conf, to send an SMS via an imaginary HTTPS endpoint to the SMS gateway:\n```\ncustom_sender() {\n # example human readable SMS\n local msg="${host} ${status_message}: ${alarm} ${raised_for}"\n\n # limit it to 160 characters and encode it for use in a URL\n urlencode "${msg:0:160}" >/dev/null; msg="${REPLY}"\n\n # a space separated list of the recipients to send alarms to\n to="${1}"\n\n for phone in ${to}; do\n httpcode=$(docurl -X POST \\\n --data-urlencode "From=XXX" \\\n --data-urlencode "To=${phone}" \\\n --data-urlencode "Body=${msg}" \\\n -u "${accountsid}:${accounttoken}" \\\n https://domain.website.com/)\n\n if [ "${httpcode}" = "200" ]; then\n info "sent custom notification ${msg} to ${phone}"\n sent=$((sent + 1))\n else\n error "failed to send custom notification ${msg} to ${phone} with HTTP error code ${httpcode}."\n fi\n done\n}\n```\n\nFor the complete list of supported notification variables, see the [Alert Notification Variables](../../REFERENCE.md#alert-notification-variables) section in the Health Reference.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# custom notifications\n\nSEND_CUSTOM="YES"\nDEFAULT_RECIPIENT_CUSTOM=""\n\n# The custom_sender() is a custom function to do whatever you need to do\ncustom_sender() {\n # example human readable SMS\n local msg="${host} ${status_message}: ${alarm} ${raised_for}"\n\n # limit it to 160 characters and encode it for use in a URL\n urlencode "${msg:0:160}" >/dev/null; msg="${REPLY}"\n\n # a space separated list of the recipients to send alarms to\n to="${1}"\n\n for phone in ${to}; do\n httpcode=$(docurl -X POST \\\n --data-urlencode "From=XXX" \\\n --data-urlencode "To=${phone}" \\\n --data-urlencode "Body=${msg}" \\\n -u "${accountsid}:${accounttoken}" \\\n https://domain.website.com/)\n\n if [ "${httpcode}" = "200" ]; then\n info "sent custom notification ${msg} to ${phone}"\n sent=$((sent + 1))\n else\n error "failed to send custom notification ${msg} to ${phone} with HTTP error code ${httpcode}."\n fi\n done\n}\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/custom/metadata.yaml"},{id:"notify-discord",meta:{name:"Discord",link:"https://discord.com/",categories:["notify.agent"],icon_filename:"discord.png"},keywords:["Discord"],overview:"# Discord\n\nSend notifications to Discord using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- The incoming webhook URL as given by Discord. Create a webhook by following the official [Discord documentation](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks). You can use the same on all your Netdata servers (or you can have multiple if you like - your decision).\n- One or more Discord channels to post the messages to\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_DISCORD | Set `SEND_DISCORD` to YES | YES | yes |\n| DISCORD_WEBHOOK_URL | set `DISCORD_WEBHOOK_URL` to your webhook URL. | | yes |\n| [DEFAULT_RECIPIENT_DISCORD](#option-default-recipient-discord) | Set `DEFAULT_RECIPIENT_DISCORD` to the channel you want the alert notifications to be sent to. You can define multiple channels like this: `alerts` `systems`. | | yes |\n\n<a id="option-default-recipient-discord"></a>\n##### DEFAULT_RECIPIENT_DISCORD\n\nAll roles will default to this variable if left unconfigured.\nYou can then have different channels per role, by editing `DEFAULT_RECIPIENT_DISCORD` with the channel you want, in the following entries at the bottom of the same file:\n```text\nrole_recipients_discord[sysadmin]="systems"\nrole_recipients_discord[domainadmin]="domains"\nrole_recipients_discord[dba]="databases systems"\nrole_recipients_discord[webmaster]="marketing development"\nrole_recipients_discord[proxyadmin]="proxy-admin"\nrole_recipients_discord[sitemgr]="sites"\n```\n\nThe values you provide should already exist as Discord channels in your server.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# discord (discordapp.com) global notification options\n\nSEND_DISCORD="YES"\nDISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/XXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"\nDEFAULT_RECIPIENT_DISCORD="alerts"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/discord/metadata.yaml"},{id:"notify-dynatrace",meta:{name:"Dynatrace",link:"https://dynatrace.com",categories:["notify.agent"],icon_filename:"dynatrace.svg"},keywords:["Dynatrace"],overview:"# Dynatrace\n\nDynatrace allows you to receive notifications using their Events REST API. See the [Dynatrace documentation](https://www.dynatrace.com/support/help/dynatrace-api/environment-api/events-v2/post-event) about POSTing an event in the Events API for more details.\nYou can send notifications to Dynatrace using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- A Dynatrace Server. You can use the same on all your Netdata servers but make sure the server is network visible from your Netdata hosts. The Dynatrace server should be with protocol prefixed (http:// or https://), for example: https://monitor.example.com.\n- An API Token. Generate a secure access API token that enables access to your Dynatrace monitoring data via the REST-based API. See [Dynatrace API - Authentication](https://www.dynatrace.com/support/help/extend-dynatrace/dynatrace-api/basics/dynatrace-api-authentication/) for more details.\n- An API Space. This is the URL part of the page you have access in order to generate the API Token. For example, the URL for a generated API token might look like: https://monitor.illumineit.com/e/2a93fe0e-4cd5-469a-9d0d-1a064235cfce/#settings/integration/apikeys;gf=all In that case, the Space is 2a93fe0e-4cd5-469a-9d0d-1a064235cfce.\n- A Server Tag. To generate one on your Dynatrace Server, go to Settings --\x3e Tags --\x3e Manually applied tags and create the Tag. The Netdata alarm is sent as a Dynatrace Event to be correlated with all those hosts tagged with this Tag you have created.\n- Terminal access to the Agent you wish to configure\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_DYNATRACE | Set `SEND_DYNATRACE` to YES | YES | yes |\n| DYNATRACE_SERVER | Set `DYNATRACE_SERVER` to the Dynatrace server with the protocol prefix, for example `https://monitor.example.com`. | | yes |\n| DYNATRACE_TOKEN | Set `DYNATRACE_TOKEN` to your Dynatrace API authentication token | | yes |\n| [DYNATRACE_SPACE](#option-dynatrace-space) | Set `DYNATRACE_SPACE` to the API Space, it is the URL part of the page you have access in order to generate the API Token. | | yes |\n| DYNATRACE_TAG_VALUE | Set `DYNATRACE_TAG_VALUE` to your Dynatrace Server Tag. | | yes |\n| DYNATRACE_ANNOTATION_TYPE | `DYNATRACE_ANNOTATION_TYPE` can be left to its default value Netdata Alarm, but you can change it to better fit your needs. | Netdata Alarm | no |\n| [DYNATRACE_EVENT](#option-dynatrace-event) | Set `DYNATRACE_EVENT` to the Dynatrace eventType you want. | Netdata Alarm | no |\n\n<a id="option-dynatrace-space"></a>\n##### DYNATRACE_SPACE\n\nFor example, the URL for a generated API token might look like: https://monitor.illumineit.com/e/2a93fe0e-4cd5-469a-9d0d-1a064235cfce/#settings/integration/apikeys;gf=all In that case, the Space is 2a93fe0e-4cd5-469a-9d0d-1a064235cfce.\n\n\n<a id="option-dynatrace-event"></a>\n##### DYNATRACE_EVENT\n\n`AVAILABILITY_EVENT`, `CUSTOM_ALERT`, `CUSTOM_ANNOTATION`, `CUSTOM_CONFIGURATION`, `CUSTOM_DEPLOYMENT`, `CUSTOM_INFO`, `ERROR_EVENT`,\n`MARKED_FOR_TERMINATION`, `PERFORMANCE_EVENT`, `RESOURCE_CONTENTION_EVENT`.\nYou can read more [here](https://www.dynatrace.com/support/help/dynatrace-api/environment-api/events-v2/post-event#request-body-objects).\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# Dynatrace global notification options\n\nSEND_DYNATRACE="YES"\nDYNATRACE_SERVER="https://monitor.example.com"\nDYNATRACE_TOKEN="XXXXXXX"\nDYNATRACE_SPACE="2a93fe0e-4cd5-469a-9d0d-1a064235cfce"\nDYNATRACE_TAG_VALUE="SERVERTAG"\nDYNATRACE_ANNOTATION_TYPE="Netdata Alert"\nDYNATRACE_EVENT="AVAILABILITY_EVENT"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/dynatrace/metadata.yaml"},{id:"notify-email",meta:{name:"Email",link:"",categories:["notify.agent"],icon_filename:"email.png"},keywords:["email"],overview:"# Email\n\nSend notifications via Email using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- A working sendmail command is required for email alerts to work. Almost all MTAs provide a sendmail interface. Netdata sends all emails as user netdata, so make sure your sendmail works for local users.\n- Access to the terminal where Netdata Agent is running\n- When running Netdata with Docker Compose the emails are sent with `msmtp`, and you need a basic configuration for it to work. \n \n - Add a [msmtprc](https://marlam.de/msmtp/msmtprc.txt) config file on your Docker root folder, and edit it according to your needs.\n - Link it into your Netdata container with this:\n \n ```yaml\n volumes:\n - /path/to/netdata-docker/msmtprc:/etc/msmtprc:ro\n ```\n \n - Update your container with `docker compose up -d`.\n- If you use Gmail as the SMTP relay and your mail client cannot use Google\'s OAuth-based sign-in flow, configure your `msmtprc` file with `smtp.gmail.com`, port `587`, TLS enabled, and a Gmail [App Password](https://support.google.com/accounts/answer/185833) instead of your regular account password. Set `EMAIL_SENDER` in `health_alarm_notify.conf` to the same Gmail address used in the `msmtprc` `from` field.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| EMAIL_SENDER | You can change `EMAIL_SENDER` to the email address sending the notifications. | netdata | no |\n| SEND_EMAIL | Set `SEND_EMAIL` to YES, NO, or AUTO (enables email when sendmail is available). | AUTO | yes |\n| [DEFAULT_RECIPIENT_EMAIL](#option-default-recipient-email) | Set `DEFAULT_RECIPIENT_EMAIL` to the email address you want the email to be sent by default. You can define multiple email addresses like this: `alarms@example.com` `systems@example.com`. | root | yes |\n\n<a id="option-default-recipient-email"></a>\n##### DEFAULT_RECIPIENT_EMAIL\n\nAll roles will default to this variable if left unconfigured.\nThe `DEFAULT_RECIPIENT_CUSTOM` can be edited in the following entries at the bottom of the same file:\n```text\nrole_recipients_email[sysadmin]="systems@example.com"\nrole_recipients_email[domainadmin]="domains@example.com"\nrole_recipients_email[dba]="databases@example.com systems@example.com"\nrole_recipients_email[webmaster]="marketing@example.com development@example.com"\nrole_recipients_email[proxyadmin]="proxy-admin@example.com"\nrole_recipients_email[sitemgr]="sites@example.com"\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# email global notification options\n\nEMAIL_SENDER="example@domain.com"\nSEND_EMAIL="YES"\nDEFAULT_RECIPIENT_EMAIL="recipient@example.com"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/email/metadata.yaml"},{id:"notify-flock",meta:{name:"Flock",link:"https://support.flock.com/",categories:["notify.agent"],icon_filename:"flock.png"},keywords:["Flock"],overview:"# Flock\n\nSend notifications to Flock using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- The incoming webhook URL as given by flock.com. You can use the same on all your Netdata servers (or you can have multiple if you like). Read more about flock webhooks and how to get one [here](https://admin.flock.com/webhooks).\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_FLOCK | Set `SEND_FLOCK` to YES | YES | yes |\n| FLOCK_WEBHOOK_URL | set `FLOCK_WEBHOOK_URL` to your webhook URL. | | yes |\n| [DEFAULT_RECIPIENT_FLOCK](#option-default-recipient-flock) | Set `DEFAULT_RECIPIENT_FLOCK` to the Flock channel you want the alert notifications to be sent to. All roles will default to this variable if left unconfigured. | | yes |\n\n<a id="option-default-recipient-flock"></a>\n##### DEFAULT_RECIPIENT_FLOCK\n\nYou can have different channels per role, by editing DEFAULT_RECIPIENT_FLOCK with the channel you want, in the following entries at the bottom of the same file:\n```text\nrole_recipients_flock[sysadmin]="systems"\nrole_recipients_flock[domainadmin]="domains"\nrole_recipients_flock[dba]="databases systems"\nrole_recipients_flock[webmaster]="marketing development"\nrole_recipients_flock[proxyadmin]="proxy-admin"\nrole_recipients_flock[sitemgr]="sites"\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# flock (flock.com) global notification options\n\nSEND_FLOCK="YES"\nFLOCK_WEBHOOK_URL="https://api.flock.com/hooks/sendMessage/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"\nDEFAULT_RECIPIENT_FLOCK="alarms"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/flock/metadata.yaml"},{id:"notify-gotify",meta:{name:"Gotify",link:"https://gotify.net/",categories:["notify.agent"],icon_filename:"gotify.png"},keywords:["gotify"],overview:"# Gotify\n\n[Gotify](https://gotify.net/) is a self-hosted push notification service created for sending and receiving messages in real time.\nYou can send alerts to your Gotify instance using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- An application token. You can generate a new token in the Gotify Web UI.\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_GOTIFY | Set `SEND_GOTIFY` to YES | YES | yes |\n| GOTIFY_APP_TOKEN | set `GOTIFY_APP_TOKEN` to the app token you generated. | | yes |\n| GOTIFY_APP_URL | Set `GOTIFY_APP_URL` to point to your Gotify instance, for example `https://push.example.domain/` | | yes |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\nSEND_GOTIFY="YES"\nGOTIFY_APP_TOKEN="XXXXXXXXXXXXXXX"\nGOTIFY_APP_URL="https://push.example.domain/"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/gotify/metadata.yaml"},{id:"notify-ilert",meta:{name:"ilert",link:"https://www.ilert.com/",categories:["notify.agent"],icon_filename:"ilert.svg"},keywords:["ilert"],overview:"# ilert\n\nilert is an alerting and incident management tool. It helps teams reduce response times by enhancing monitoring and ticketing tools with reliable alerts, automatic escalations, on-call schedules, and features for incident response, communication, and status updates.\nSending notification to ilert via Netdata's Agent alert notification feature includes links, images and resolving of corresponding alerts.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- A Netdata alert source in ilert. You can create a [Netdata alert source](https://docs.ilert.com/inbound-integrations/netdata) in [ilert](https://www.ilert.com/).\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_ILERT | Set `SEND_ILERT` to YES | YES | yes |\n| ILERT_ALERT_SOURCE_URL | Set `ILERT_ALERT_SOURCE_URL` to your Netdata alert source url in ilert. | | yes |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\nSEND_ILERT="YES"\nILERT_ALERT_SOURCE_URL="https://api.ilert.com/api/v1/events/netdata/{API-KEY}"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/ilert/metadata.yaml"},{id:"notify-irc",meta:{name:"IRC",link:"",categories:["notify.agent"],icon_filename:"irc.png"},keywords:["IRC"],overview:"# IRC\n\nSend notifications to IRC using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- The `nc` utility. You can set the path to it, or Netdata will search for it in your system `$PATH`.\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| [nc path](#option-nc-path) | Set the path for nc, otherwise Netdata will search for it in your system $PATH | | yes |\n| SEND_IRC | Set `SEND_IRC` YES. | YES | yes |\n| IRC_NETWORK | Set `IRC_NETWORK` to the IRC network which your preferred channels belong to. | | yes |\n| IRC_PORT | Set `IRC_PORT` to the IRC port to which a connection will occur. | | no |\n| IRC_NICKNAME | Set `IRC_NICKNAME` to the IRC nickname which is required to send the notification. It must not be an already registered name as the connection\'s MODE is defined as a guest. | | yes |\n| IRC_REALNAME | Set `IRC_REALNAME` to the IRC realname which is required in order to make the connection. | | yes |\n| [DEFAULT_RECIPIENT_IRC](#option-default-recipient-irc) | You can have different channels per role, by editing `DEFAULT_RECIPIENT_IRC` with the channel you want | | yes |\n\n<a id="option-nc-path"></a>\n##### nc path\n\n```sh\n#------------------------------------------------------------------------------\n# external commands\n#\n# The full path of the nc command.\n# If empty, the system $PATH will be searched for it.\n# If not found, irc notifications will be silently disabled.\nnc="/usr/bin/nc"\n```\n\n\n<a id="option-default-recipient-irc"></a>\n##### DEFAULT_RECIPIENT_IRC\n\nThe `DEFAULT_RECIPIENT_IRC` can be edited in the following entries at the bottom of the same file:\n```text\nrole_recipients_irc[sysadmin]="#systems"\nrole_recipients_irc[domainadmin]="#domains"\nrole_recipients_irc[dba]="#databases #systems"\nrole_recipients_irc[webmaster]="#marketing #development"\nrole_recipients_irc[proxyadmin]="#proxy-admin"\nrole_recipients_irc[sitemgr]="#sites"\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# irc notification options\n#\nSEND_IRC="YES"\nDEFAULT_RECIPIENT_IRC="#system-alarms"\nIRC_NETWORK="irc.freenode.net"\nIRC_NICKNAME="netdata-alarm-user"\nIRC_REALNAME="netdata-user"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/irc/metadata.yaml"},{id:"notify-kavenegar",meta:{name:"Kavenegar",link:"https://kavenegar.com/",categories:["notify.agent"],icon_filename:"kavenegar.png"},keywords:["Kavenegar"],overview:"# Kavenegar\n\n[Kavenegar](https://kavenegar.com/) as service for software developers, based in Iran, provides send and receive SMS, calling voice by using its APIs.\nYou can send notifications to Kavenegar using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- The APIKEY and Sender from http://panel.kavenegar.com/client/setting/account\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_KAVENEGAR | Set `SEND_KAVENEGAR` to YES | YES | yes |\n| KAVENEGAR_API_KEY | Set `KAVENEGAR_API_KEY` to your API key. | | yes |\n| KAVENEGAR_SENDER | Set `KAVENEGAR_SENDER` to the value of your Sender. | | yes |\n| [DEFAULT_RECIPIENT_KAVENEGAR](#option-default-recipient-kavenegar) | Set `DEFAULT_RECIPIENT_KAVENEGAR` to the SMS recipient you want the alert notifications to be sent to. You can define multiple recipients like this: 09155555555 09177777777. | | yes |\n\n<a id="option-default-recipient-kavenegar"></a>\n##### DEFAULT_RECIPIENT_KAVENEGAR\n\nAll roles will default to this variable if lest unconfigured.\n\nYou can then have different SMS recipients per role, by editing `DEFAULT_RECIPIENT_KAVENEGAR` with the SMS recipients you want, in the following entries at the bottom of the same file:\n```text\nrole_recipients_kavenegar[sysadmin]="09100000000"\nrole_recipients_kavenegar[domainadmin]="09111111111"\nrole_recipients_kavenegar[dba]="0922222222"\nrole_recipients_kavenegar[webmaster]="0933333333"\nrole_recipients_kavenegar[proxyadmin]="0944444444"\nrole_recipients_kavenegar[sitemgr]="0955555555"\n```\n\nThe values you provide should be defined as environments in `/etc/alertad.conf` with `ALLOWED_ENVIRONMENTS` option.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# Kavenegar (Kavenegar.com) SMS options\n\nSEND_KAVENEGAR="YES"\nKAVENEGAR_API_KEY="XXXXXXXXXXXX"\nKAVENEGAR_SENDER="YYYYYYYY"\nDEFAULT_RECIPIENT_KAVENEGAR="0912345678"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/kavenegar/metadata.yaml"},{id:"notify-matrix",meta:{name:"Matrix",link:"https://spec.matrix.org/unstable/push-gateway-api/",categories:["notify.agent"],icon_filename:"matrix.svg"},keywords:["Matrix"],overview:"# Matrix\n\nSend notifications to Matrix network rooms using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- The url of the homeserver (`https://homeserver:port`).\n- Credentials for connecting to the homeserver, in the form of a valid access token for your account (or for a dedicated notification account). These tokens usually don\'t expire.\n- The Room ids that you want to sent the notification to.\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_MATRIX | Set `SEND_MATRIX` to YES | YES | yes |\n| MATRIX_HOMESERVER | set `MATRIX_HOMESERVER` to the URL of the Matrix homeserver. | | yes |\n| [MATRIX_ACCESSTOKEN](#option-matrix-accesstoken) | Set `MATRIX_ACCESSTOKEN` to the access token from your Matrix account. | | yes |\n| [DEFAULT_RECIPIENT_MATRIX](#option-default-recipient-matrix) | Set `DEFAULT_RECIPIENT_MATRIX` to the Rooms you want the alert notifications to be sent to. The format is `!roomid:homeservername`. | | yes |\n\n<a id="option-matrix-accesstoken"></a>\n##### MATRIX_ACCESSTOKEN\n\nTo obtain the access token, you can use the following curl command:\n```\ncurl -XPOST -d \'{"type":"m.login.password", "user":"example", "password":"wordpass"}\' "https://homeserver:8448/_matrix/client/r0/login"\n```\n\n\n<a id="option-default-recipient-matrix"></a>\n##### DEFAULT_RECIPIENT_MATRIX\n\nThe Room ids are unique identifiers and can be obtained from the Room settings in a Matrix client (e.g. Riot).\n\nYou can define multiple Rooms like this: `!roomid1:homeservername` `!roomid2:homeservername`.\n\nAll roles will default to this variable if left unconfigured.\n\nYou can have different Rooms per role, by editing `DEFAULT_RECIPIENT_MATRIX` with the `!roomid:homeservername` you want, in the following entries at the bottom of the same file:\n\n```text\nrole_recipients_matrix[sysadmin]="!roomid1:homeservername"\nrole_recipients_matrix[domainadmin]="!roomid2:homeservername"\nrole_recipients_matrix[dba]="!roomid3:homeservername"\nrole_recipients_matrix[webmaster]="!roomid4:homeservername"\nrole_recipients_matrix[proxyadmin]="!roomid5:homeservername"\nrole_recipients_matrix[sitemgr]="!roomid6:homeservername"\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# Matrix notifications\n\nSEND_MATRIX="YES"\nMATRIX_HOMESERVER="https://matrix.org:8448"\nMATRIX_ACCESSTOKEN="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"\nDEFAULT_RECIPIENT_MATRIX="!XXXXXXXXXXXX:matrix.org"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/matrix/metadata.yaml"},{id:"notify-messagebird",meta:{name:"MessageBird",link:"https://messagebird.com/",categories:["notify.agent"],icon_filename:"messagebird.svg"},keywords:["MessageBird"],overview:"# MessageBird\n\nSend notifications to MessageBird using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- An access key under \'API ACCESS (REST)\' (you will want a live key), you can read more [here](https://developers.messagebird.com/quickstarts/sms/test-credits-api-keys/).\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_MESSAGEBIRD | Set `SEND_MESSAGEBIRD` to YES | YES | yes |\n| MESSAGEBIRD_ACCESS_KEY | Set `MESSAGEBIRD_ACCESS_KEY` to your API key. | | yes |\n| MESSAGEBIRD_NUMBER | Set `MESSAGEBIRD_NUMBER` to the MessageBird number you want to use for the alert. | | yes |\n| [DEFAULT_RECIPIENT_MESSAGEBIRD](#option-default-recipient-messagebird) | Set `DEFAULT_RECIPIENT_MESSAGEBIRD` to the number you want the alert notification to be sent as an SMS. You can define multiple recipients like this: +15555555555 +17777777777. | | yes |\n\n<a id="option-default-recipient-messagebird"></a>\n##### DEFAULT_RECIPIENT_MESSAGEBIRD\n\nAll roles will default to this variable if left unconfigured.\n\nYou can then have different recipients per role, by editing `DEFAULT_RECIPIENT_MESSAGEBIRD` with the number you want, in the following entries at the bottom of the same file:\n```text\nrole_recipients_messagebird[sysadmin]="+15555555555"\nrole_recipients_messagebird[domainadmin]="+15555555556"\nrole_recipients_messagebird[dba]="+15555555557"\nrole_recipients_messagebird[webmaster]="+15555555558"\nrole_recipients_messagebird[proxyadmin]="+15555555559"\nrole_recipients_messagebird[sitemgr]="+15555555550"\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# Messagebird (messagebird.com) SMS options\n\nSEND_MESSAGEBIRD="YES"\nMESSAGEBIRD_ACCESS_KEY="XXXXXXXX"\nMESSAGEBIRD_NUMBER="XXXXXXX"\nDEFAULT_RECIPIENT_MESSAGEBIRD="+15555555555"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/messagebird/metadata.yaml"},{id:"notify-ntfy",meta:{name:"ntfy",link:"https://ntfy.sh/",categories:["notify.agent"],icon_filename:"ntfy.svg"},keywords:["ntfy"],overview:"# ntfy\n\n[ntfy](https://ntfy.sh/) (pronounce: notify) is a simple HTTP-based [pub-sub](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) notification service. It allows you to send notifications to your phone or desktop via scripts from any computer, entirely without signup, cost or setup. It's also [open source](https://github.com/binwiederhier/ntfy) if you want to run your own server.\nYou can send alerts to an ntfy server using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- (Optional) A [self-hosted ntfy server](https://docs.ntfy.sh/faq/#can-i-self-host-it), in case you don\'t want to use https://ntfy.sh\n- A new [topic](https://ntfy.sh/#subscribe) for the notifications to be published to\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_NTFY | Set `SEND_NTFY` to YES | YES | yes |\n| [DEFAULT_RECIPIENT_NTFY](#option-default-recipient-ntfy) | URL formed by the server-topic combination you want the alert notifications to be sent to. Unless hosting your own server, the server should always be set to https://ntfy.sh. | | yes |\n| [NTFY_USERNAME](#option-ntfy-username) | The username for netdata to use to authenticate with an ntfy server. | | no |\n| [NTFY_PASSWORD](#option-ntfy-password) | The password for netdata to use to authenticate with an ntfy server. | | no |\n| [NTFY_ACCESS_TOKEN](#option-ntfy-access-token) | The access token for netdata to use to authenticate with an ntfy server. | | no |\n\n<a id="option-default-recipient-ntfy"></a>\n##### DEFAULT_RECIPIENT_NTFY\n\nYou can define multiple recipient URLs like this: `https://SERVER1/TOPIC1` `https://SERVER2/TOPIC2`\n\nAll roles will default to this variable if left unconfigured.\n\nYou can then have different servers and/or topics per role, by editing DEFAULT_RECIPIENT_NTFY with the server-topic combination you want, in the following entries at the bottom of the same file:\n```text\nrole_recipients_ntfy[sysadmin]="https://SERVER1/TOPIC1"\nrole_recipients_ntfy[domainadmin]="https://SERVER2/TOPIC2"\nrole_recipients_ntfy[dba]="https://SERVER3/TOPIC3"\nrole_recipients_ntfy[webmaster]="https://SERVER4/TOPIC4"\nrole_recipients_ntfy[proxyadmin]="https://SERVER5/TOPIC5"\nrole_recipients_ntfy[sitemgr]="https://SERVER6/TOPIC6"\n```\n\n\n<a id="option-ntfy-username"></a>\n##### NTFY_USERNAME\n\nOnly useful on self-hosted ntfy instances. See [users and roles](https://docs.ntfy.sh/config/#users-and-roles) for details.\nEnsure that your user has proper read/write access to the provided topic in `DEFAULT_RECIPIENT_NTFY`\n\n\n<a id="option-ntfy-password"></a>\n##### NTFY_PASSWORD\n\nOnly useful on self-hosted ntfy instances. See [users and roles](https://docs.ntfy.sh/config/#users-and-roles) for details.\nEnsure that your user has proper read/write access to the provided topic in `DEFAULT_RECIPIENT_NTFY`\n\n\n<a id="option-ntfy-access-token"></a>\n##### NTFY_ACCESS_TOKEN\n\nThis can be used in place of `NTFY_USERNAME` and `NTFY_PASSWORD` to authenticate with a self-hosted ntfy instance. See [access tokens](https://docs.ntfy.sh/config/?h=access+to#access-tokens) for details.\nEnsure that the token user has proper read/write access to the provided topic in `DEFAULT_RECIPIENT_NTFY`\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\nSEND_NTFY="YES"\nDEFAULT_RECIPIENT_NTFY="https://ntfy.sh/netdata-X7seHg7d3Tw9zGOk https://ntfy.sh/netdata-oIPm4IK1IlUtlA30"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/ntfy/metadata.yaml"},{id:"notify-opsgenie",meta:{name:"OpsGenie",link:"https://www.atlassian.com/software/opsgenie",categories:["notify.agent"],icon_filename:"opsgenie.png"},keywords:["OpsGenie"],overview:"# OpsGenie\n\nOpsgenie is an alerting and incident response tool. It is designed to group and filter alarms, build custom routing rules for on-call teams, and correlate deployments and commits to incidents.\nYou can send notifications to Opsgenie using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- An Opsgenie integration. You can create an [integration](https://docs.opsgenie.com/docs/api-integration) in the [Opsgenie](https://www.atlassian.com/software/opsgenie) dashboard.\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_OPSGENIE | Set `SEND_OPSGENIE` to YES | YES | yes |\n| OPSGENIE_API_KEY | Set `OPSGENIE_API_KEY` to your API key. | | yes |\n| OPSGENIE_API_URL | Set `OPSGENIE_API_URL` to the corresponding URL if required, for example there are region-specific API URLs such as `https://eu.api.opsgenie.com`. | https://api.opsgenie.com | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\nSEND_OPSGENIE="YES"\nOPSGENIE_API_KEY="11111111-2222-3333-4444-555555555555"\nOPSGENIE_API_URL=""\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/opsgenie/metadata.yaml"},{id:"notify-pagerduty",meta:{name:"PagerDuty",link:"https://www.pagerduty.com/",categories:["notify.agent"],icon_filename:"pagerduty.png"},keywords:["PagerDuty"],overview:"# PagerDuty\n\nPagerDuty is an enterprise incident resolution service that integrates with ITOps and DevOps monitoring stacks to improve operational reliability and agility. From enriching and aggregating events to correlating them into incidents, PagerDuty streamlines the incident management process by reducing alert noise and resolution times.\nYou can send notifications to PagerDuty using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- An installation of the [PagerDuty](https://www.pagerduty.com/docs/guides/agent-install-guide/) Agent on the node running the Netdata Agent\n- A PagerDuty Generic API service using either the `Events API v2` or `Events API v1`\n- [Add a new service](https://support.pagerduty.com/docs/services-and-integrations#section-configuring-services-and-integrations) to PagerDuty. Click Use our API directly and select either `Events API v2` or `Events API v1`. Once you finish creating the service, click on the Integrations tab to find your Integration Key.\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_PD | Set `SEND_PD` to YES | YES | yes |\n| [DEFAULT_RECIPIENT_PD](#option-default-recipient-pd) | Set `DEFAULT_RECIPIENT_PD` to the PagerDuty service key you want the alert notifications to be sent to. You can define multiple service keys like this: `pd_service_key_1` `pd_service_key_2`. | | yes |\n\n<a id="option-default-recipient-pd"></a>\n##### DEFAULT_RECIPIENT_PD\n\nAll roles will default to this variable if left unconfigured.\n\nThe `DEFAULT_RECIPIENT_PD` can be edited in the following entries at the bottom of the same file:\n```text\nrole_recipients_pd[sysadmin]="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxa"\nrole_recipients_pd[domainadmin]="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxb"\nrole_recipients_pd[dba]="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc"\nrole_recipients_pd[webmaster]="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd"\nrole_recipients_pd[proxyadmin]="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxe"\nrole_recipients_pd[sitemgr]="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf"\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# pagerduty.com notification options\n\nSEND_PD="YES"\nDEFAULT_RECIPIENT_PD="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"\nUSE_PD_VERSION="2"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/pagerduty/metadata.yaml"},{id:"notify-prowl",meta:{name:"Prowl",link:"https://www.prowlapp.com/",categories:["notify.agent"],icon_filename:"prowl.png"},keywords:["Prowl"],overview:"# Prowl\n\nSend notifications to Prowl using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n\n## Limitations\n\n- Because of how Netdata integrates with Prowl, there is a hard limit of at most 1000 notifications per hour (starting from the first notification sent). Any alerts beyond the first thousand in an hour will be dropped.\n- Warning messages will be sent with the 'High' priority, critical messages will be sent with the 'Emergency' priority, and all other messages will be sent with the normal priority. Opening the notification's associated URL will take you to the Netdata dashboard of the system that issued the alert, directly to the chart that it triggered on.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- A Prowl API key, which can be requested through the Prowl website after registering\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_PROWL | Set `SEND_PROWL` to YES | YES | yes |\n| [DEFAULT_RECIPIENT_PROWL](#option-default-recipient-prowl) | Set `DEFAULT_RECIPIENT_PROWL` to the Prowl API key you want the alert notifications to be sent to. You can define multiple API keys like this: `APIKEY1`, `APIKEY2`. | | yes |\n\n<a id="option-default-recipient-prowl"></a>\n##### DEFAULT_RECIPIENT_PROWL\n\nAll roles will default to this variable if left unconfigured.\n\nThe `DEFAULT_RECIPIENT_PROWL` can be edited in the following entries at the bottom of the same file:\n```text\nrole_recipients_prowl[sysadmin]="AAAAAAAA"\nrole_recipients_prowl[domainadmin]="BBBBBBBBB"\nrole_recipients_prowl[dba]="CCCCCCCCC"\nrole_recipients_prowl[webmaster]="DDDDDDDDDD"\nrole_recipients_prowl[proxyadmin]="EEEEEEEEEE"\nrole_recipients_prowl[sitemgr]="FFFFFFFFFF"\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# iOS Push Notifications\n\nSEND_PROWL="YES"\nDEFAULT_RECIPIENT_PROWL="XXXXXXXXXX"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/prowl/metadata.yaml"},{id:"notify-pushbullet",meta:{name:"Pushbullet",link:"https://www.pushbullet.com/",categories:["notify.agent"],icon_filename:"pushbullet.png"},keywords:["Pushbullet"],overview:"# Pushbullet\n\nSend notifications to Pushbullet using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- A Pushbullet access token that can be created in your [account settings](https://www.pushbullet.com/#settings/account).\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| Send_PUSHBULLET | Set `Send_PUSHBULLET` to YES | YES | yes |\n| PUSHBULLET_ACCESS_TOKEN | set `PUSHBULLET_ACCESS_TOKEN` to the access token you generated. | | yes |\n| [DEFAULT_RECIPIENT_PUSHBULLET](#option-default-recipient-pushbullet) | Set `DEFAULT_RECIPIENT_PUSHBULLET` to the email (e.g. `example@domain.com`) or the channel tag (e.g. `#channel`) you want the alert notifications to be sent to. | | yes |\n\n<a id="option-default-recipient-pushbullet"></a>\n##### DEFAULT_RECIPIENT_PUSHBULLET\n\nYou can define multiple entries like this: user1@email.com user2@email.com.\n\nAll roles will default to this variable if left unconfigured.\n\nThe `DEFAULT_RECIPIENT_PUSHBULLET` can be edited in the following entries at the bottom of the same file:\n```text\nrole_recipients_pushbullet[sysadmin]="user1@email.com"\nrole_recipients_pushbullet[domainadmin]="user2@mail.com"\nrole_recipients_pushbullet[dba]="#channel1"\nrole_recipients_pushbullet[webmaster]="#channel2"\nrole_recipients_pushbullet[proxyadmin]="user3@mail.com"\nrole_recipients_pushbullet[sitemgr]="user4@mail.com"\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# pushbullet (pushbullet.com) push notification options\n\nSEND_PUSHBULLET="YES"\nPUSHBULLET_ACCESS_TOKEN="XXXXXXXXX"\nDEFAULT_RECIPIENT_PUSHBULLET="admin1@example.com admin3@somemail.com #examplechanneltag #anotherchanneltag"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/pushbullet/metadata.yaml"},{id:"notify-pushover",meta:{name:"PushOver",link:"https://pushover.net/",categories:["notify.agent"],icon_filename:"pushover.png"},keywords:["PushOver"],overview:"# PushOver\n\nSend notification to Pushover using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n- Netdata will send warning messages with priority 0 and critical messages with priority 1.\n- Pushover allows you to select do-not-disturb hours. The way this is configured, critical notifications will ring and vibrate your phone, even during the do-not-disturb-hours.\n- All other notifications will be delivered silently.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- An Application token. You can use the same on all your Netdata servers.\n- A User token for each user you are going to send notifications to. This is the actual recipient of the notification.\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_PUSHOVER | Set `SEND_PUSHOVER` to YES | YES | yes |\n| PUSHOVER_WEBHOOK_URL | set `PUSHOVER_WEBHOOK_URL` to your Pushover Application token. | | yes |\n| [DEFAULT_RECIPIENT_PUSHOVER](#option-default-recipient-pushover) | Set `DEFAULT_RECIPIENT_PUSHOVER` the Pushover User token you want the alert notifications to be sent to. You can define multiple User tokens like this: `USERTOKEN1` `USERTOKEN2`. | | yes |\n\n<a id="option-default-recipient-pushover"></a>\n##### DEFAULT_RECIPIENT_PUSHOVER\n\nAll roles will default to this variable if left unconfigured.\n\nThe `DEFAULT_RECIPIENT_PUSHOVER` can be edited in the following entries at the bottom of the same file:\n```text\nrole_recipients_pushover[sysadmin]="USERTOKEN1"\nrole_recipients_pushover[domainadmin]="USERTOKEN2"\nrole_recipients_pushover[dba]="USERTOKEN3 USERTOKEN4"\nrole_recipients_pushover[webmaster]="USERTOKEN5"\nrole_recipients_pushover[proxyadmin]="USERTOKEN6"\nrole_recipients_pushover[sitemgr]="USERTOKEN7"\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# pushover (pushover.net) global notification options\n\nSEND_PUSHOVER="YES"\nPUSHOVER_APP_TOKEN="XXXXXXXXX"\nDEFAULT_RECIPIENT_PUSHOVER="USERTOKEN"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/pushover/metadata.yaml"},{id:"notify-rocketchat",meta:{name:"RocketChat",link:"https://rocket.chat/",categories:["notify.agent"],icon_filename:"rocketchat.png"},keywords:["RocketChat"],overview:"# RocketChat\n\nSend notifications to Rocket.Chat using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- The incoming webhook URL as given by RocketChat. You can use the same on all your Netdata servers (or you can have multiple if you like - your decision).\n- One or more channels to post the messages to\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_ROCKETCHAT | Set `SEND_ROCKETCHAT` to `YES` | YES | yes |\n| ROCKETCHAT_WEBHOOK_URL | set `ROCKETCHAT_WEBHOOK_URL` to your webhook URL. | | yes |\n| [DEFAULT_RECIPIENT_ROCKETCHAT](#option-default-recipient-rocketchat) | Set `DEFAULT_RECIPIENT_ROCKETCHAT` to the channel you want the alert notifications to be sent to. You can define multiple channels like this: `alerts` `systems`. | | yes |\n\n<a id="option-default-recipient-rocketchat"></a>\n##### DEFAULT_RECIPIENT_ROCKETCHAT\n\nAll roles will default to this variable if left unconfigured.\n\nThe `DEFAULT_RECIPIENT_ROCKETCHAT` can be edited in the following entries at the bottom of the same file:\n```text\nrole_recipients_rocketchat[sysadmin]="systems"\nrole_recipients_rocketchat[domainadmin]="domains"\nrole_recipients_rocketchat[dba]="databases systems"\nrole_recipients_rocketchat[webmaster]="marketing development"\nrole_recipients_rocketchat[proxyadmin]="proxy_admin"\nrole_recipients_rocketchat[sitemgr]="sites"\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# rocketchat (rocket.chat) global notification options\n\nSEND_ROCKETCHAT="YES"\nROCKETCHAT_WEBHOOK_URL="<your_incoming_webhook_url>"\nDEFAULT_RECIPIENT_ROCKETCHAT="monitoring_alarms"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/rocketchat/metadata.yaml"},{id:"notify-signl4",meta:{name:"SIGNL4",link:"https://www.signl4.com/",categories:["notify.agent"],icon_filename:"signl4.svg"},keywords:["signl4"],overview:"# SIGNL4\n\nSIGNL4 offers critical alerting, incident response and service dispatching for operating critical infrastructure. It alerts you persistently via app push, SMS text, voice calls, and email including tracking, escalation, on-call duty scheduling and collaboration.\nYou can send notifications to SIGNL4 using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- An inbound webhook in SIGNL4\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_SIGNL4 | Set `SEND_SIGNL4` to YES | YES | yes |\n| SIGNL4_WEBHOOK_URL | set `SIGNL4_WEBHOOK_URL` to your SIGNL4 webhook URL. | | yes |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\nSEND_SIGNL4="YES"\nSIGNL4_WEBHOOK_URL="https://connect.signl4.com/webhook/xxxxxxxx"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/signl4/metadata.yaml"},{id:"notify-slack",meta:{name:"Slack",link:"https://slack.com/",categories:["notify.agent"],icon_filename:"slack.png"},keywords:["Slack"],overview:"# Slack\n\nSend notifications to a Slack workspace using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Slack app along with an incoming webhook, read Slack\'s guide on the topic [here](https://api.slack.com/messaging/webhooks).\n- One or more channels to post the messages to\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_SLACK | Set `SEND_SLACK` to YES | YES | yes |\n| SLACK_WEBHOOK_URL | set `SLACK_WEBHOOK_URL` to your Slack app\'s webhook URL. | | yes |\n| DEFAULT_RECIPIENT_SLACK | Set `DEFAULT_RECIPIENT_SLACK` to the Slack channel your Slack app is set to send messages to. The syntax for channels is `#channel` or `channel`. | | yes |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# slack (slack.com) global notification options\n\nSEND_SLACK="YES"\nSLACK_WEBHOOK_URL="https://hooks.slack.com/services/XXXXXXXX/XXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \nDEFAULT_RECIPIENT_SLACK="#alarms"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/slack/metadata.yaml"},{id:"notify-sms",meta:{name:"SMS",link:"http://smstools3.kekekasvi.com/",categories:["notify.agent"],icon_filename:"sms.svg"},keywords:["SMS tools 3","SMS","Messaging"],overview:"# SMS\n\nSend notifications to `smstools3` using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\nThe SMS Server Tools 3 is a SMS Gateway software which can send and receive short messages through GSM modems and mobile phones.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- [Install](http://smstools3.kekekasvi.com/index.php?p=compiling) and [configure](http://smstools3.kekekasvi.com/index.php?p=configure) `smsd`\n- To ensure that the user `netdata` can execute `sendsms`. Any user executing `sendsms` needs to:\n - Have write permissions to /tmp and /var/spool/sms/outgoing\n - Be a member of group smsd\n - To ensure that the steps above are successful, just su netdata and execute sendsms phone message.\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| [sendsms](#option-sendsms) | Set the path for `sendsms`, otherwise Netdata will search for it in your system `$PATH:` | YES | yes |\n| SEND_SMS | Set `SEND_SMS` to `YES`. | | yes |\n| [DEFAULT_RECIPIENT_SMS](#option-default-recipient-sms) | Set DEFAULT_RECIPIENT_SMS to the phone number you want the alert notifications to be sent to. You can define multiple phone numbers like this: PHONE1 PHONE2. | | yes |\n\n<a id="option-sendsms"></a>\n##### sendsms\n\n# The full path of the sendsms command (smstools3).\n# If empty, the system $PATH will be searched for it.\n# If not found, SMS notifications will be silently disabled.\nsendsms="/usr/bin/sendsms"\n\n\n<a id="option-default-recipient-sms"></a>\n##### DEFAULT_RECIPIENT_SMS\n\nAll roles will default to this variable if left unconfigured.\n\nYou can then have different phone numbers per role, by editing `DEFAULT_RECIPIENT_SMS` with the phone number you want, in the following entries at the bottom of the same file:\n```text\nrole_recipients_sms[sysadmin]="PHONE1"\nrole_recipients_sms[domainadmin]="PHONE2"\nrole_recipients_sms[dba]="PHONE3"\nrole_recipients_sms[webmaster]="PHONE4"\nrole_recipients_sms[proxyadmin]="PHONE5"\nrole_recipients_sms[sitemgr]="PHONE6"\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# SMS Server Tools 3 (smstools3) global notification options\nSEND_SMS="YES"\nDEFAULT_RECIPIENT_SMS="1234567890"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/smstools3/metadata.yaml"},{id:"notify-smseagle",meta:{name:"SMSEagle",link:"https://www.smseagle.eu/",categories:["notify.agent"],icon_filename:"smseagle.svg"},keywords:["smseagle"],overview:"# SMSEagle\n\nForward notifications to SMSEagle device to send SMS, MMS, wake-up, or text-to-speech calls.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\nBefore using the API, you\'ll need to enable API access on your SMSEagle device by following these steps:\n\n1. Navigate to the Web-GUI and select the "Users" menu.\n2. Create a new user account with "User" access level.\n3. Locate the "Access to API" option next to your newly created user.\n4. Select APIv2 and click the "Generate new token" button to create your API access token.\n5. Set up the appropriate permissions in the APIv2 Permission section.\n\nOptional: Enable the "Access to resources of all users" checkbox if you want this API key to access data across all users. By default, the API key can only access data created under its credentials.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| [DEFAULT_RECIPIENT_SMSEAGLE](#option-default-recipient-smseagle) | If a role\'s recipients are not configured, a notification will be sent to this SMS recipient (empty = do not send a notification for unconfigured roles). Multiple recipients can be given like this: "PHONE1,PHONE2..." | | yes |\n| [SMSEAGLE_API_URL](#option-smseagle-api-url) | | | yes |\n| [SMSEAGLE_API_ACCESSTOKEN](#option-smseagle-api-accesstoken) | | | yes |\n| [SMSEAGLE_MSG_TYPE](#option-smseagle-msg-type) | | sms | yes |\n| [SMSEAGLE_CALL_DURATION](#option-smseagle-call-duration) | | 10 | yes |\n| [SMSEAGLE_VOICE_ID](#option-smseagle-voice-id) | | 10 | yes |\n\n<a id="option-default-recipient-smseagle"></a>\n##### DEFAULT_RECIPIENT_SMSEAGLE\n\nAll roles will default to this variable if left unconfigured.\n\nYou can then have different recipients per role, by editing `DEFAULT_RECIPIENT_SMSEAGLE` with the number you want, in the following entries at the bottom of the same file:\n```\nrole_recipients_smseagle[sysadmin]="+11222333444"\nrole_recipients_smseagle[domainadmin]="+11222333445"\nrole_recipients_smseagle[dba]="+11222333446"\nrole_recipients_smseagle[webmaster]="+11222333447"\nrole_recipients_smseagle[proxyadmin]="+11222333448"\nrole_recipients_smseagle[sitemgr]="+11222333449"\n```\n\n\n<a id="option-smseagle-api-url"></a>\n##### SMSEAGLE_API_URL\n\nThe url of the SMSEagle device accessible from NetData, e.g https://192.168.0.101\n\n\n<a id="option-smseagle-api-accesstoken"></a>\n##### SMSEAGLE_API_ACCESSTOKEN\n\nAn access token for the user created at SMSEagle device\n\n\n<a id="option-smseagle-msg-type"></a>\n##### SMSEAGLE_MSG_TYPE\n\nChoose a type of message/call. Available types: sms, mms, ring (wake-up call), tts (text-to-speech call), tts_advanced (multilanguage text-to-speech call). Be aware that some types require additional parameters to be set.\n\n\n<a id="option-smseagle-call-duration"></a>\n##### SMSEAGLE_CALL_DURATION\n\nCall duration, parameter required for Ring, TTS and TTS Advanced.\n\n\n<a id="option-smseagle-voice-id"></a>\n##### SMSEAGLE_VOICE_ID\n\nID of the voice model, required for TTS Advanced.\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# SMSEagle options\n\nSEND_SMSEAGLE="YES"\nSMSEAGLE_API_URL="XXXXXXXX"\nSMSEAGLE_API_ACCESSTOKEN="XXXXXXX"\nSMSEAGLE_MSG_TYPE="sms"\nSMSEAGLE_CALL_DURATION="10"\nSMSEAGLE_VOICE_ID="1"\nDEFAULT_RECIPIENT_SMSEAGLE="+11222333444"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/smseagle/metadata.yaml"},{id:"notify-syslog",meta:{name:"syslog",link:"",categories:["notify.agent"],icon_filename:"syslog.png"},keywords:["syslog"],overview:"# syslog\n\nSend notifications to Syslog using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- A working `logger` command for this to work. This is the case on pretty much every Linux system in existence, and most BSD systems.\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SYSLOG_FACILITY | Set `SYSLOG_FACILITY` to the facility used for logging, by default this value is set to `local6`. | | yes |\n| [DEFAULT_RECIPIENT_SYSLOG](#option-default-recipient-syslog) | Set `DEFAULT_RECIPIENT_SYSLOG` to the recipient you want the alert notifications to be sent to. | | yes |\n| [SEND_SYSLOG](#option-send-syslog) | Set SEND_SYSLOG to YES, make sure you have everything else configured before turning this on. | | yes |\n\n<a id="option-default-recipient-syslog"></a>\n##### DEFAULT_RECIPIENT_SYSLOG\n\nTargets are defined as follows:\n\n```\n[[facility.level][@host[:port]]/]prefix\n```\n\nprefix defines what the log messages are prefixed with. By default, all lines are prefixed with \'netdata\'.\n\nThe facility and level are the standard syslog facility and level options, for more info on them see your local logger and syslog documentation. By default, Netdata will log to the local6 facility, with a log level dependent on the type of message (crit for CRITICAL, warning for WARNING, and info for everything else).\n\nYou can configure sending directly to remote log servers by specifying a host (and optionally a port). However, this has a somewhat high overhead, so it is much preferred to use your local syslog daemon to handle the forwarding of messages to remote systems (pretty much all of them allow at least simple forwarding, and most of the really popular ones support complex queueing and routing of messages to remote log servers).\n\nYou can define multiple recipients like this: daemon.notice@loghost:514/netdata daemon.notice@loghost2:514/netdata.\nAll roles will default to this variable if left unconfigured.\n\n\n<a id="option-send-syslog"></a>\n##### SEND_SYSLOG \n\nYou can then have different recipients per role, by editing DEFAULT_RECIPIENT_SYSLOG with the recipient you want, in the following entries at the bottom of the same file:\n\n```text\nrole_recipients_syslog[sysadmin]="daemon.notice@loghost1:514/netdata"\nrole_recipients_syslog[domainadmin]="daemon.notice@loghost2:514/netdata"\nrole_recipients_syslog[dba]="daemon.notice@loghost3:514/netdata"\nrole_recipients_syslog[webmaster]="daemon.notice@loghost4:514/netdata"\nrole_recipients_syslog[proxyadmin]="daemon.notice@loghost5:514/netdata"\nrole_recipients_syslog[sitemgr]="daemon.notice@loghost6:514/netdata"\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# syslog notifications\n\nSEND_SYSLOG="YES"\nSYSLOG_FACILITY=\'local6\'\nDEFAULT_RECIPIENT_SYSLOG="daemon.notice@loghost6:514/netdata"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/syslog/metadata.yaml"},{id:"notify-teams",meta:{name:"Microsoft Teams",link:"https://www.microsoft.com/en-us/microsoft-teams/log-in",categories:["notify.agent"],icon_filename:"msteams.svg"},keywords:["Microsoft","Teams","MS teams"],overview:"# Microsoft Teams\n\nYou can send Netdata alerts to Microsoft Teams using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- The incoming webhook URL as given by Microsoft Teams. You can use the same on all your Netdata servers (or you can have multiple if you like).\n- One or more channels to post the messages to\n- Access to the terminal where Netdata Agent is running\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_MSTEAMS | Set `SEND_MSTEAMS` to YES | YES | yes |\n| MSTEAMS_WEBHOOK_URL | set `MSTEAMS_WEBHOOK_URL` to the incoming webhook URL as given by Microsoft Teams. | | yes |\n| [DEFAULT_RECIPIENT_MSTEAMS](#option-default-recipient-msteams) | Set `DEFAULT_RECIPIENT_MSTEAMS` to the encoded Microsoft Teams channel name you want the alert notifications to be sent to. | | yes |\n\n<a id="option-default-recipient-msteams"></a>\n##### DEFAULT_RECIPIENT_MSTEAMS\n\nIn Microsoft Teams the channel name is encoded in the URI after `/IncomingWebhook/`. You can define multiple channels like this: `CHANNEL1` `CHANNEL2`.\n\nAll roles will default to this variable if left unconfigured.\n\nYou can have different channels per role, by editing `DEFAULT_RECIPIENT_MSTEAMS` with the channel you want, in the following entries at the bottom of the same file:\n```text\nrole_recipients_msteams[sysadmin]="CHANNEL1"\nrole_recipients_msteams[domainadmin]="CHANNEL2"\nrole_recipients_msteams[dba]="databases CHANNEL3"\nrole_recipients_msteams[webmaster]="CHANNEL4"\nrole_recipients_msteams[proxyadmin]="CHANNEL5"\nrole_recipients_msteams[sitemgr]="CHANNEL6"\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# Microsoft Teams (office.com) global notification options\n\nSEND_MSTEAMS="YES"\nMSTEAMS_WEBHOOK_URL="https://outlook.office.com/webhook/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX@XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/IncomingWebhook/CHANNEL/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"\nDEFAULT_RECIPIENT_MSTEAMS="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/msteams/metadata.yaml"},{id:"notify-telegram",meta:{name:"Telegram",link:"https://telegram.org/",categories:["notify.agent"],icon_filename:"telegram.svg"},keywords:["Telegram"],overview:"# Telegram\n\nSend notifications to Telegram using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- A bot token. To get one, contact the [@BotFather](https://t.me/BotFather) bot and send the command `/newbot` and follow the instructions. Invite your bot to a group where you want it to send messages.\n- The chat ID for every chat you want to send messages to. Invite [@myidbot](https://t.me/myidbot) bot to the group that will receive notifications, and write the command `/getgroupid@myidbot` to get the group chat ID. Group IDs start with a hyphen, supergroup IDs start with `-100`.\n- Terminal access to the Agent you wish to configure.\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_TELEGRAM | Set `SEND_TELEGRAM` to YES | YES | yes |\n| TELEGRAM_API_URL | Set `TELEGRAM_API_URL` to the corresponding URL if you have your own Telegram Bot API server (e.g., for privacy or local hosting). Defaults to the official Telegram API. | https://api.telegram.org | no |\n| TELEGRAM_BOT_TOKEN | set `TELEGRAM_BOT_TOKEN` to your bot token. | | yes |\n| [DEFAULT_RECIPIENT_TELEGRAM](#option-default-recipient-telegram) | Set the `DEFAULT_RECIPIENT_TELEGRAM` variable in your config file to your Telegram chat ID (find it with @myidbot). Separate multiple chat IDs with spaces. To send alerts to a specific topic within a chat, use `chatID:topicID`. | | yes |\n\n<a id="option-default-recipient-telegram"></a>\n##### DEFAULT_RECIPIENT_TELEGRAM\n\nAll roles will default to this variable if left unconfigured.\n\nThe `DEFAULT_RECIPIENT_CUSTOM` can be edited in the following entries at the bottom of the same file:\n\n```text\nrole_recipients_telegram[sysadmin]="-49999333324"\nrole_recipients_telegram[domainadmin]="-49999333389"\nrole_recipients_telegram[dba]="-10099992222"\nrole_recipients_telegram[webmaster]="-10099992222 -49999333389"\nrole_recipients_telegram[proxyadmin]="-49999333344"\nrole_recipients_telegram[sitemgr]="-49999333876"\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# telegram (telegram.org) global notification options\n\nSEND_TELEGRAM="YES"\nTELEGRAM_BOT_TOKEN="111122223:7OpFlFFRzRBbrUUmIjj5HF9Ox2pYJZy5"\nDEFAULT_RECIPIENT_TELEGRAM="-49999333876"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/telegram/metadata.yaml"},{id:"notify-twilio",meta:{name:"Twilio",link:"https://www.twilio.com/",categories:["notify.agent"],icon_filename:"twilio.png"},keywords:["Twilio"],overview:"# Twilio\n\nSend notifications to Twilio using Netdata's Agent alert notification feature, which supports dozens of endpoints, user roles, and more.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### \n\n- Get your SID, and Token from https://www.twilio.com/console\n- Terminal access to the Agent you wish to configure\n\n\n\n### Configuration\n\n#### Options\n\nThe following options can be defined for this notification\n\n{% details open=true summary="Config Options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| SEND_TWILIO | Set `SEND_TWILIO` to YES | YES | yes |\n| TWILIO_ACCOUNT_SID | set `TWILIO_ACCOUNT_SID` to your account SID. | | yes |\n| TWILIO_ACCOUNT_TOKEN | Set `TWILIO_ACCOUNT_TOKEN` to your account token. | | yes |\n| TWILIO_NUMBER | Set `TWILIO_NUMBER` to your account\'s number. | | yes |\n| [DEFAULT_RECIPIENT_TWILIO](#option-default-recipient-twilio) | Set DEFAULT_RECIPIENT_TWILIO to the number you want the alert notifications to be sent to. You can define multiple numbers like this: +15555555555 +17777777777. | | yes |\n\n<a id="option-default-recipient-twilio"></a>\n##### DEFAULT_RECIPIENT_TWILIO\n\nYou can then have different recipients per role, by editing DEFAULT_RECIPIENT_TWILIO with the recipient\'s number you want, in the following entries at the bottom of the same file:\n\n```text\nrole_recipients_twilio[sysadmin]="+15555555555"\nrole_recipients_twilio[domainadmin]="+15555555556"\nrole_recipients_twilio[dba]="+15555555557"\nrole_recipients_twilio[webmaster]="+15555555558"\nrole_recipients_twilio[proxyadmin]="+15555555559"\nrole_recipients_twilio[sitemgr]="+15555555550"\n```\n\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `health_alarm_notify.conf`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config health_alarm_notify.conf\n```\n\n##### Examples\n\n###### Basic Configuration\n\n\n\n```yaml\n#------------------------------------------------------------------------------\n# Twilio (twilio.com) SMS options\n\nSEND_TWILIO="YES"\nTWILIO_ACCOUNT_SID="xxxxxxxxx"\nTWILIO_ACCOUNT_TOKEN="xxxxxxxxxx"\nTWILIO_NUMBER="xxxxxxxxxxx"\nDEFAULT_RECIPIENT_TWILIO="+15555555555"\n\n```\n',troubleshooting:'## Troubleshooting\n\n### Test Notification\n\nYou can run the following command by hand, to test alerts configuration:\n\n```bash\n# become user netdata\nsudo su -s /bin/bash netdata\n\n# enable debugging info on the console\nexport NETDATA_ALARM_NOTIFY_DEBUG=1\n\n# send test alarms to sysadmin\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test\n\n# send test alarms to any role\n/usr/libexec/netdata/plugins.d/alarm-notify.sh test "ROLE"\n```\n\nNote that this will test _all_ alert mechanisms for the selected role.\n\n',integration_type:"agent_notification",edit_link:"https://github.com/netdata/netdata/blob/master/src/health/notifications/twilio/metadata.yaml"},{id:"notify-cloud-awssns",meta:{name:"Amazon SNS",link:"https://aws.amazon.com/sns/",categories:["notify.cloud"],icon_filename:"awssns.png"},keywords:["awssns"],setup:"## Setup\n\n\n### Prerequisites\n\n- A Netdata Cloud account\n- Access to the space as an **Admin**\n- The Space needs to be on a paid plan\n- An AWS account with AWS SNS access\n\n### AWS SNS Configuration\n\n1. [Setting up access for Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-setting-up.html)\n2. Create a topic\n - On AWS SNS management console click on **Create topic**\n - On the **Details** section, select the standard type and provide the topic name\n - On the **Access policy** section, change the **Publishers** option to **Only the specified AWS accounts** and provide the Netdata AWS account **(123269920060)** that will be used to publish notifications to the topic being created\n3. Copy the **Topic ARN** in order to add it to your integration configuration in the Netdata Cloud UI\n\n### Netdata Configuration\n\n1. Click on the **Space settings** cog (located above your profile icon)\n2. Click on the **Alerts & Notifications** tab\n3. Click on the **+ Add configuration** button\n4. Add the AWS SNS Integration\n5. A modal will be presented to you to enter the required details to enable the integration:\n - **Notification settings**\n - Configuration name (optional): A name for your configuration in order to easily refer to it\n - Rooms: A list of Rooms for which you want to be notified\n - Notifications: The notification types you want to receive\n - **Integration configuration**\n - Topic ARN: The topic provided on AWS SNS (with region) for where to publish your notifications.\n\n",integration_type:"cloud_notification",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/cloud-notifications/metadata.yaml",troubleshooting:""},{id:"notify-cloud-discord",meta:{name:"Discord",link:"https://discord.com/",categories:["notify.cloud"],icon_filename:"discord.png"},keywords:["discord","community"],setup:"## Setup\n\n\n### Prerequisites\n\n- A Netdata Cloud account\n- Access to the Space as an **Admin**\n\n### Discord Server Configuration\n\n1. Go to **Server Settings** --\x3e **Integrations**\n2. **Create Webhook** or **View Webhooks** if you already have some defined\n3. Specify the **Name** and **Channel** on your new webhook\n4. Keep note of the **Webhook URL** as you will need it for the configuration of the integration on the Netdata Cloud UI\n\n### Netdata Configuration\n\n1. Click on the **Space settings** cog (located above your profile icon)\n2. Click on the **Alerts & Notifications** tab\n3. Click on the **+ Add configuration** button\n4. Add the Discord Integration\n5. A modal will be presented to you to enter the required details to enable the integration:\n - **Notification settings**\n - Configuration name (optional): A name for your configuration in order to easily refer to it\n - Rooms: A list of Rooms for which you want to be notified\n - Notifications: The notification types you want to receive\n - **Integration configuration**\n - Webhook URL: The URL you copied from the previous section\n - Channel Parameters: Select the channel type which the notifications will be sent to, if it is a Forum channel, you need to specify a thread name\n\n",integration_type:"cloud_notification",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/cloud-notifications/metadata.yaml",troubleshooting:""},{id:"notify-cloud-ilert",meta:{name:"ilert",link:"https://www.ilert.com/",categories:["notify.cloud"],icon_filename:"ilert.svg"},keywords:["ilert"],setup:'## Setup\n\n\n### Prerequisites\n\n- A Netdata Cloud account\n- Access to the Space as an **Admin**\n- The Space needs to be on a paid plan\n- You need to have permissions on ilert to add new Alert sources.\n\n### ilert Configuration\n\n1. From the navigation bar, open the Alert sources drop down and click "Alert sources"\n2. Click on the "+ Create a new alert source" button\n3. Configure an Alert source:\n - Select "API integration" and click Next\n - Provide a name that suits the source\'s purpose, for example "Netdata"\n - Select Escalation policy\n - Select Alert grouping (optional)\n4. Obtain the API Key:\n - Once the Alert source is created, you will be provided with an API key. Copy it in order to add it to your integration configuration in the Netdata Cloud UI\n\n### Netdata Configuration\n\n1. Click on the **Space settings** cog (located above your profile icon)\n2. Click on the **Alerts & Notifications** tab\n3. Click on the **+ Add configuration** button\n4. Add the ilert Integration\n5. A modal will be presented to you to enter the required details to enable the integration:\n - **Notification settings**\n - Configuration name (optional): A name for your configuration in order to easily refer to it\n - Rooms: A list of Rooms for which you want to be notified\n - Notifications: The notification types you want to receive\n - **Integration configuration**\n - Alert Source API key: The key you copied in the ilert configuration step.\n\n',integration_type:"cloud_notification",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/cloud-notifications/metadata.yaml",troubleshooting:""},{id:"notify-cloud-mattermost",meta:{name:"Mattermost",link:"https://mattermost.com/",categories:["notify.cloud"],icon_filename:"mattermost.png"},keywords:["mattermost"],setup:"## Setup\n\n\n### Prerequisites\n\n- A Netdata Cloud account\n- Access to the Space as an **Admin**\n- The Space needs to be on a paid plan\n- You need to have permissions on Mattermost to add new integrations.\n\n### Mattermost Server Configuration\n\n1. In Mattermost, go to Product menu > Integrations > Incoming Webhook\n - If you don't have the Integrations option, incoming webhooks may not be enabled on your Mattermost server or may be disabled for non-admins. They can be enabled by a System Admin from System Console > Integrations > Integration Management. Once incoming webhooks are enabled, continue with the steps below.\n2. Select Add Incoming Webhook and add a name and description for the webhook.\n3. Select the channel to receive webhook payloads, then select Add to create the webhook\n4. You will end up with a webhook URL that looks like `https://your-mattermost-server.com/hooks/xxx-generatedkey-xxx`, copy it in order to add it to your integration configuration in the Netdata Cloud UI\n\nFor more details please check [Incoming webhooks for Mattermost](https://developers.mattermost.com/integrate/webhooks/incoming/).\n\n### Netdata Configuration\n\n1. Click on the **Space settings** cog (located above your profile icon)\n2. Click on the **Alerts & Notifications** tab\n3. Click on the **+ Add configuration** button\n4. Add the Mattermost Integration\n5. A modal will be presented to you to enter the required details to enable the integration:\n - **Notification settings**\n - Configuration name (optional): A name for your configuration in order to easily refer to it\n - Rooms: A list of Rooms for which you want to be notified\n - Notifications: The notification types you want to receive\n - **Integration configuration**\n - Webhook URL: URL provided on Mattermost for the channel you want to receive your notifications\n\n",integration_type:"cloud_notification",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/cloud-notifications/metadata.yaml",troubleshooting:""},{id:"notify-cloud-microsoftteams",meta:{name:"Microsoft Teams",link:"https://www.microsoft.com/en-us/microsoft-teams",categories:["notify.cloud"],icon_filename:"teams.svg"},keywords:["microsoft","teams"],setup:'## Setup\n\n\n### Prerequisites\n\n- A Netdata Cloud account\n- Access to the Space as an **Admin**\n- The Space needs to be on a paid plan\n- A [Microsoft Teams Essentials subscription](https://www.microsoft.com/en-sg/microsoft-teams/essentials) or higher. Note that this is a **paid** feature\n\n### Microsoft Teams Configuration\n\n1. Navigate to the desired Microsoft Teams channel and hover over the channel name. Click the three dots icon that appears\n2. Select "Workflows" from the options, then choose "Post to a channel when a webhook request is received"\n3. **Configure Workflow Details**\n - Give your workflow a name, such as "Netdata Alerts"\n - Select the target team and channel where you will receive notifications\n - Click "Add workflow"\n4. Once the workflow is created, you will receive a unique Workflow Webhook URL, copy it, in order to add it to your integration configuration in the Netdata Cloud UI\n\n### Netdata Configuration\n\n1. Click on the **Space settings** cog (located above your profile icon)\n2. Click on the **Alerts & Notifications** tab\n3. Click on the **+ Add configuration** button\n4. Add the Microsoft Teams Integration\n5. A modal will be presented to you to enter the required details to enable the integration:\n - **Notification settings**\n - Configuration name (optional): A name for your configuration in order to easily refer to it\n - Rooms: A list of Rooms for which you want to be notified\n - Notifications: The notification types you want to receive\n - **Integration configuration**\n - Microsoft Teams Incoming Webhook URL: The Incoming Webhook URL that you copied earlier.\n\n',integration_type:"cloud_notification",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/cloud-notifications/metadata.yaml",troubleshooting:""},{id:"notify-cloud-mobile-app",meta:{name:"Netdata Mobile App",link:"https://netdata.cloud",categories:["notify.cloud"],icon_filename:"netdata.png"},keywords:["mobile-app","phone","personal-notifications"],setup:"## Setup\n\n\n### Prerequisites\n\n- A Netdata Cloud account\n- You need to have the Netdata Mobile App installed on your [Android](https://play.google.com/store/apps/details?id=cloud.netdata.android&pli=1) or [iOS](https://apps.apple.com/in/app/netdata-mobile/id6474659622) phone.\n\n### Netdata Mobile App Configuration and device linking\n\nIn order to login to the Netdata Mobile App\n\n1. Download the Netdata Mobile App from [Google Play Store](https://play.google.com/store/apps/details?id=cloud.netdata.android&pli=1) or the [iOS App Store](https://apps.apple.com/in/app/netdata-mobile/id6474659622)\n2. Open the App and Choose your Sign-in option\n - Email Address: Enter the email address of your registered Netdata Cloud account and click on the verification link received by email on your mobile device.\n - Sign-in with QR Code: Scan the QR code from the Netdata Cloud UI under **Profile Picture** --\x3e **Settings** --\x3e **Notifications** --\x3e **Mobile App Notifications** --\x3e **Show QR Code**\n\n### Netdata Configuration\n\nAfter linking your device, enable the toggle for **Mobile App Notifications** under the same settings panel.\n\n",integration_type:"cloud_notification",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/cloud-notifications/metadata.yaml",troubleshooting:""},{id:"notify-cloud-opsgenie",meta:{name:"Opsgenie",link:"https://www.atlassian.com/software/opsgenie",categories:["notify.cloud"],icon_filename:"opsgenie.png"},keywords:["opsgenie","atlassian"],setup:"## Setup\n\n\n### Prerequisites\n\n- A Netdata Cloud account\n- Access to the Space as an **Admin**\n- The Space needs to be on a paid plan\n- You need to have permissions on Opsgenie to add new integrations.\n\n### Opsgenie Server Configuration\n\n1. Go to the integrations tab of your team, click **Add integration**\n2. Pick **API** from the available integrations and copy the API Key in order to add it to your integration configuration in the Netdata Cloud UI\n\n### Netdata Configuration\n\n1. Click on the **Space settings** cog (located above your profile icon)\n2. Click on the **Alerts & Notifications** tab\n3. Click on the **+ Add configuration** button\n4. Add the Opsgenie Integration\n5. A modal will be presented to you to enter the required details to enable the integration:\n - **Notification settings**\n - Configuration name (optional): A name for your configuration in order to easily refer to it\n - Rooms: A list of Rooms for which you want to be notified\n - Notifications: The notification types you want to receive\n - **Integration configuration**\n - API Key: The key provided on Opsgenie for the channel you want to receive your notifications\n\n",integration_type:"cloud_notification",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/cloud-notifications/metadata.yaml",troubleshooting:""},{id:"notify-cloud-pagerduty",meta:{name:"PagerDuty",link:"https://www.pagerduty.com/",categories:["notify.cloud"],icon_filename:"pagerduty.png"},keywords:["pagerduty"],setup:"## Setup\n\n\n### Prerequisites\n\n- A Netdata Cloud account\n- Access to the Space as an **Admin**\n- The Space needs to be on a paid plan\n- You need to have a PagerDuty service to receive events using webhooks.\n\n### PagerDuty Server Configuration\n\n1. Create a service to receive events from your services directory page on PagerDuty\n2. On the third step of the service creation, select `Events API V2` Integration\n3. Once the service is created, you will be redirected to its configuration page, where you can copy the **Integration Key** and **Integration URL (Alert Events)** in order to add them to your integration configuration in the Netdata Cloud UI\n\n### Netdata Configuration\n\n1. Click on the **Space settings** cog (located above your profile icon)\n2. Click on the **Alerts & Notifications** tab\n3. Click on the **+ Add configuration** button\n4. Add the PagerDuty Integration\n5. A modal will be presented to you to enter the required details to enable the integration:\n - **Notification settings**\n - Configuration name (optional): A name for your configuration in order to easily refer to it\n - Rooms: A list of Rooms for which you want to be notified\n - Notifications: The notification types you want to receive\n - **Integration configuration**\n - Integration Key: A 32 character key provided by PagerDuty to receive events on your service.\n - Integration URL (Alert Events): The URL provided by PagerDuty where Netdata Cloud will send notifications.\n\n",integration_type:"cloud_notification",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/cloud-notifications/metadata.yaml",troubleshooting:""},{id:"notify-cloud-rocketchat",meta:{name:"RocketChat",link:"https://www.rocket.chat/",categories:["notify.cloud"],icon_filename:"rocketchat.png"},keywords:["rocketchat"],setup:"## Setup\n\n\n### Prerequisites\n\n- A Netdata Cloud account\n- Access to the Space as an **Admin**\n- The Space needs to be on a paid plan\n- You need to have permissions on RocketChat to add new integrations.\n\n### RocketChat Server Configuration\n\nSteps to configure your RocketChat server to receive notifications from Netdata Cloud:\n\n1. In RocketChat, Navigate to Administration > Workspace > Integrations\n2. Click **+New** at the top right corner\n3. For more details about each parameter, check [Create a new incoming webhook](https://docs.rocket.chat/use-rocket.chat/workspace-administration/integrations#create-a-new-incoming-webhook)\n4. You will end up with a webhook endpoint that looks like `https://your-server.rocket.chat/hooks/YYYYYYYYYYYYYYYYYYYYYYYY/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`, copy it in order to add it to your integration configuration in the Netdata Cloud UI\n\nFor more details please check [Incoming webhooks for RocketChat](https://docs.rocket.chat/use-rocket.chat/workspace-administration/integrations/).\n\n### Netdata Configuration\n\n1. Click on the **Space settings** cog (located above your profile icon)\n2. Click on the **Alerts & Notifications** tab\n3. Click on the **+ Add configuration** button\n4. Add the PagerDuty Integration\n5. A modal will be presented to you to enter the required details to enable the integration:\n - **Notification settings**\n - Configuration name (optional): A name for your configuration in order to easily refer to it\n - Rooms: A list of Rooms for which you want to be notified\n - Notifications: The notification types you want to receive\n - **Integration configuration**\n - Webhook URL: URL provided on RocketChat for the channel you want to receive your notifications\n\n",integration_type:"cloud_notification",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/cloud-notifications/metadata.yaml",troubleshooting:""},{id:"notify-cloud-servicenow",meta:{name:"ServiceNow",link:"https://www.servicenow.com/",categories:["notify.cloud"],icon_filename:"servicenow.png"},keywords:["servicenow"],setup:"## Setup\n\n\n### Prerequisites\n\n- Netdata Cloud account\n- Access to the Space as an **Admin**\n- The Space needs to be on a paid plan\n- The ServiceNow **Event Management** plugin enabled on your instance\n- A ServiceNow user with the `evt_mgmt_admin` role and a password for API access\n\n### ServiceNow Configuration\n\n1. Verify that the **Event Management** plugin is activated on your ServiceNow instance.\n2. Navigate to **System Security** --\x3e **Users** and create a dedicated integration user if one does not already exist.\n3. Assign the `evt_mgmt_admin` role to this user and set a strong password. Keep the username and password available for the Netdata configuration step.\n\n### Netdata Configuration\n\n1. Click on the **Space settings** cog (located above your profile icon)\n2. Click on the **Alerts & Notifications** tab\n3. Click on the **+ Add configuration** button\n4. Add the ServiceNow Integration\n5. A modal will be presented to you to enter the required details to enable the integration:\n - **Notification settings**\n - Configuration name (optional): A descriptive name to identify this notification configuration\n - Rooms: A list of Rooms for which you want to be notified\n - Notifications: The notification types you want to receive\n - **Integration configuration**\n - Instance URL: The base URL of your ServiceNow instance (for example, `https://my-instance.service-now.com/`).\n - Username: The username of the ServiceNow integration user you created.\n - Password: The password of the ServiceNow integration user you created.\n\n",integration_type:"cloud_notification",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/cloud-notifications/metadata.yaml",troubleshooting:""},{id:"notify-cloud-slack",meta:{name:"Slack",link:"https://slack.com/",categories:["notify.cloud"],icon_filename:"slack.png"},keywords:["slack"],setup:"## Setup\n\n\n### Prerequisites\n\n- A Netdata Cloud account\n- Access to the Space as an **Admin**\n- The Space needs to be on a paid plan\n- You need to have a Slack app on your workspace to receive the Webhooks.\n\n### Slack Server Configuration\n\n1. Create an app to receive webhook integrations. Check the [Slack documentation](https://api.slack.com/apps?new_app=1) for further details\n2. Install the app on your workspace\n3. Configure Webhook URLs for your workspace\n - On your app go to **Incoming Webhooks** and click on **activate incoming webhooks**\n - At the bottom of **Webhook URLs for Your Workspace** section you have **Add New Webhook to Workspace**\n - Specify the channel where you want your notifications to be delivered\n - Once completed, copy the Webhook URL in order to add it to your integration configuration in the Netdata Cloud UI\n\nFor more details please check [Incoming webhooks for Slack](https://slack.com/help/articles/115005265063-Incoming-webhooks-for-Slack).\n\n### Netdata Configuration\n\n1. Click on the **Space settings** cog (located above your profile icon)\n2. Click on the **Alerts & Notifications** tab\n3. Click on the **+ Add configuration** button\n4. Add the Slack Integration\n5. A modal will be presented to you to enter the required details to enable the integration:\n - **Notification settings**\n - Configuration name (optional): A name for your configuration in order to easily refer to it\n - Rooms: A list of Rooms for which you want to be notified\n - Notifications: The notification types you want to receive\n - **Integration configuration**\n - Webhook URL: URL provided on Slack for the channel you want to receive your notifications\n\n",integration_type:"cloud_notification",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/cloud-notifications/metadata.yaml",troubleshooting:""},{id:"notify-cloud-splunk",meta:{name:"Splunk",link:"https://splunk.com/",categories:["notify.cloud"],icon_filename:"splunk-black.svg"},keywords:["Splunk"],setup:"## Setup\n\n\n### Prerequisites\n\n- A Netdata Cloud account\n- Access to the Space as an **Admin**\n- The Space needs to be on a paid plan\n- The URI and token for your Splunk HTTP Event Collector. Refer to the [Splunk documentation](https://docs.splunk.com/Documentation/Splunk/latest/Data/UsetheHTTPEventCollector) for detailed instructions on how to set it up.\n\n### Netdata Configuration\n\n1. Click on the **Space settings** cog (located above your profile icon)\n2. Click on the **Alerts & Notifications** tab\n3. Click on the **+ Add configuration** button\n4. Add the Splunk Integration\n5. A modal will be presented to you to enter the required details to enable the integration:\n - **Notification settings**\n - Configuration name (optional): A name for your configuration in order to easily refer to it\n - Rooms: A list of Rooms for which you want to be notified\n - Notifications: The notification types you want to receive\n - **Integration configuration**\n - HTTP Event Collector URI: The URI of your HTTP event collector in Splunk\n - HTTP Event Collector Token: The token that Splunk provided to you when you created the HTTP Event Collector\n\n",integration_type:"cloud_notification",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/cloud-notifications/metadata.yaml",troubleshooting:""},{id:"notify-cloud-telegram",meta:{name:"Telegram",link:"https://telegram.org/",categories:["notify.cloud"],icon_filename:"telegram.svg"},keywords:["Telegram"],setup:"## Setup\n\n\n### Prerequisites\n\n- A Netdata Cloud account\n- Access to the Space as an **Admin**\n- The Space needs to be on a paid plan\n- The Telegram bot token, chat ID and optionally the topic ID\n\n### Telegram Configuration\n\n- Bot token: To create one bot, contact the [@BotFather](https://t.me/BotFather) bot and send the command `/newbot` and follow the instructions. **Start a conversation with your bot or invite it into the group where you want it to send notifications**.\n- To get the chat ID you have two options:\n - Contact the [@myidbot](https://t.me/myidbot) bot and send the `/getid` command to get your personal chat ID, or invite it into a group and use the `/getgroupid` command to get the group chat ID.\n - Alternatively, you can get the chat ID directly from the bot API. Send your bot a command in the chat you want to use, then check `https://api.telegram.org/bot{YourBotToken}/getUpdates`, eg. `https://api.telegram.org/bot111122223:7OpFlFFRzRBbrUUmIjj5HF9Ox2pYJZy5/getUpdates`\n- To get the topic ID, the easiest way is this: Post a message to that topic, then right-click on it and select `Copy Message Link`. Paste it on a scratchpad and notice that it has the following structure `https://t.me/c/XXXXXXXXXX/YY/ZZ`. The topic ID is `YY` (integer).\n\n### Netdata Configuration\n\n1. Click on the **Space settings** cog (located above your profile icon)\n2. Click on the **Alerts & Notifications** tab\n3. Click on the **+ Add configuration** button\n4. Add the Telegram Integration\n5. A modal will be presented to you to enter the required details to enable the integration:\n - **Notification settings**\n - Configuration name (optional): A name for your configuration in order to easily refer to it\n - Rooms: A list of Rooms for which you want to be notified\n - Notifications: The notification types you want to receive\n - **Integration configuration**\n - Bot Token: The token of your bot\n - Chat ID: The chat id where your bot will deliver messages to\n - Topic ID: The identifier of the chat topic to which your bot will send messages. If omitted or 0, messages will be sent to the General topic. If topics are not supported, messages will be sent to the chat.\n\n",integration_type:"cloud_notification",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/cloud-notifications/metadata.yaml",troubleshooting:""},{id:"notify-cloud-victorops",meta:{name:"Splunk VictorOps",link:"https://www.splunk.com/en_us/about-splunk/acquisitions/splunk-on-call.html",categories:["notify.cloud"],icon_filename:"victorops.svg"},keywords:["VictorOps","Splunk","On-Call"],setup:"## Setup\n\n\n### Prerequisites\n\n- A Netdata Cloud account\n- Access to the Space as an **Admin**\n- The Space needs to be on a paid plan\n- The Destination URL for your Splunk VictorOps REST Endpoint Integration. Refer to the [VictorOps documentation](https://help.victorops.com/knowledge-base/rest-endpoint-integration-guide) for detailed instructions.\n\n### Netdata Configuration\n\n1. Click on the **Space settings** cog (located above your profile icon)\n2. Click on the **Alerts & Notifications** tab\n3. Click on the **+ Add configuration** button\n4. Add the Splunk VictorOps Integration\n5. A modal will be presented to you to enter the required details to enable the integration:\n - **Notification settings**\n - Configuration name (optional): A name for your configuration in order to easily refer to it\n - Rooms: A list of Rooms for which you want to be notified\n - Notifications: The notification types you want to receive\n - **Integration configuration**\n - Destination URL - The URL provided by VictorOps of your REST endpoint.\n\n",integration_type:"cloud_notification",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/cloud-notifications/metadata.yaml",troubleshooting:""},{id:"notify-cloud-webhook",meta:{name:"Webhook",link:"https://en.wikipedia.org/wiki/Webhook",categories:["notify.cloud"],icon_filename:"webhook.svg"},keywords:["generic webhooks","webhooks"],setup:'## Setup\n\n\n### Prerequisites\n\n- A Netdata Cloud account\n- Access to the Space as an **Admin**\n- The Space needs to be on a paid plan\n- You need to have an app that allows you to receive webhooks following a predefined schema.\n\n### Netdata Configuration\n\n1. Click on the **Space settings** cog (located above your profile icon)\n2. Click on the **Alerts & Notifications** tab\n3. Click on the **+ Add configuration** button\n4. Add the Webhook integration\n5. A modal will be presented to you to enter the required details to enable the configuration:\n - **Notification settings**\n - Configuration name (optional): A name for your configuration in order to easily refer to it\n - Rooms: A list of Rooms for which you want to be notified\n - Notifications: The notification types you want to receive\n - **Integration configuration**\n - Webhook URL: The url of the service that Netdata will send notifications to. In order to keep the communication secured, Netdata only accepts HTTPS urls.\n - Extra headers: Optional key-value pairs that you can set to be included in the HTTP requests sent to the webhook URL.\n - Authentication Mechanism, Netdata webhook integration supports 3 different authentication mechanisms.\n - Mutual TLS (recommended): Default authentication mechanism used if no other method is selected\n - Basic: The client sends a request with an Authorization header that includes a base64-encoded string in the format **username:password**.\n - Bearer: The client sends a request with an Authorization header that includes a **bearer token**.\n - **Verification**\n - Token: The Token from the latest **Test notification** received on the webhook endpoint.\n - Click on the **Test** button to receive a notification. Token will be embedded in the payload.\n\n### Webhook service\n\nA webhook service allows your application to receive real-time alerts from Netdata by sending HTTP requests to a specified URL.\n\nIn this section, we\'ll go over the steps to set up a generic webhook service, including adding headers, and implementing different types of authorization mechanisms.\n\n#### Netdata webhook integration\n\nNetdata webhook integration service will send alert and reachability notifications to the destination service as soon as they are detected.\n\nFor alert notifications, the content sent to the destination service contains a JSON object with the following properties:\n\n| field | type | description |\n|:----------------------------------|:--------------------------------|:--------------------------------------------------------------------------|\n| message | string | A summary message of the alert. |\n| alert | string | The alert the notification is related to. |\n| info | string | Additional info related with the alert. |\n| chart | string | The chart associated with the alert. |\n| context | string | The chart context. |\n| space | string | The space where the node that raised the alert is assigned. |\n| Rooms | object\\[object(string,string)\\] | Object with list of Rooms names and urls where the node belongs to. |\n| family | string | Context family. |\n| class | string | Classification of the alert, e.g. `Error`. |\n| severity | string | Alert severity, can be one of `warning`, `critical` or `clear`. |\n| date | string | Date of the alert in ISO8601 format. |\n| duration | string | Duration the alert has been raised. |\n| additional_active_critical_alerts | integer | Number of additional critical alerts currently existing on the same node. |\n| additional_active_warning_alerts | integer | Number of additional warning alerts currently existing on the same node. |\n| alert_url | string | Netdata Cloud URL for this alert. |\n\nFor reachability notifications, the JSON object will contain the following properties:\n\n| field | type | description |\n|:-----------------|:--------|:------------------------------------------------------------------------------------------------------------------------------|\n| message | string | A summary message of the reachability alert. |\n| url | string | Netdata Cloud URL for the host experiencing the reachability alert. |\n| host | string | The hostname experiencing the reachability alert. |\n| severity | string | Severity for this notification. If host is reachable, severity will be `info`, if host is unreachable, it will be `critical`. |\n| status | object | An object with the status information. |\n| status.reachable | boolean | `true` if host is reachable, `false` otherwise |\n| status.text | string | Can be `reachable` or `unreachable` |\n\n#### Extra headers\n\nWhen setting up a webhook service, the user can specify a set of headers to be included in the HTTP requests sent to the webhook URL.\n\nBy default, the following headers will be sent in the HTTP request\n\n | **Header** | **Value** |\n |:------------:|------------------|\n | Content-Type | application/json |\n\n#### Authentication mechanisms\n\nNetdata webhook integration supports 3 different authentication mechanisms:\n\n##### Mutual TLS authentication\n\nNetdata always sends a client certificate with every webhook request, regardless of which authentication method is selected in the UI. This means mTLS is available on all webhook integrations by default \u2014 no additional configuration is needed on the Netdata side to enable it.\n\nThe authentication method you select (no auth, basic, or bearer) controls only whether an Authorization header is included in the request. It does not affect the client certificate behavior.\n\nIf you want to verify Netdata\'s client certificate on your end, configure your server to validate it using the Netdata CA certificate below.\n\nThe steps to perform this validation are as follows:\n\n- Store Netdata CA certificate on a file in your disk. The content of this file should be:\n\n <details>\n <summary>Netdata CA certificate</summary>\n\n ```text\n -----BEGIN CERTIFICATE-----\n MIIF0jCCA7qgAwIBAgIUDV0rS5jXsyNX33evHEQOwn9fPo0wDQYJKoZIhvcNAQEN\n BQAwgYAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH\n Ew1TYW4gRnJhbmNpc2NvMRYwFAYDVQQKEw1OZXRkYXRhLCBJbmMuMRIwEAYDVQQL\n EwlDbG91ZCBTUkUxGDAWBgNVBAMTD05ldGRhdGEgUm9vdCBDQTAeFw0yMzAyMjIx\n MjQzMDBaFw0zMzAyMTkxMjQzMDBaMIGAMQswCQYDVQQGEwJVUzETMBEGA1UECBMK\n Q2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEWMBQGA1UEChMNTmV0\n ZGF0YSwgSW5jLjESMBAGA1UECxMJQ2xvdWQgU1JFMRgwFgYDVQQDEw9OZXRkYXRh\n IFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwIg7z3R++\n ppQYYVVoMIDlhWO3qVTMsAQoJYEvVa6fqaImUBLW/k19LUaXgUJPohB7gBp1pkjs\n QfY5dBo8iFr7MDHtyiAFjcQV181sITTMBEJwp77R4slOXCvrreizhTt1gvf4S1zL\n qeHBYWEgH0RLrOAqD0jkOHwewVouO0k3Wf2lEbCq3qRk2HeDvkv0LR7sFC+dDms8\n fDHqb/htqhk+FAJELGRqLeaFq1Z5Eq1/9dk4SIeHgK5pdYqsjpBzOTmocgriw6he\n s7F3dOec1ZZdcBEAxOjbYt4e58JwuR81cWAVMmyot5JNCzYVL9e5Vc5n22qt2dmc\n Tzw2rLOPt9pT5bzbmyhcDuNg2Qj/5DySAQ+VQysx91BJRXyUimqE7DwQyLhpQU72\n jw29lf2RHdCPNmk8J1TNropmpz/aI7rkperPugdOmxzP55i48ECbvDF4Wtazi+l+\n 4kx7ieeLfEQgixy4lRUUkrgJlIDOGbw+d2Ag6LtOgwBiBYnDgYpvLucnx5cFupPY\n Cy3VlJ4EKUeQQSsz5kVmvotk9MED4sLx1As8V4e5ViwI5dCsRfKny7BeJ6XNPLnw\n PtMh1hbiqCcDmB1urCqXcMle4sRhKccReYOwkLjLLZ80A+MuJuIEAUUuEPCwywzU\n R7pagYsmvNgmwIIuJtB6mIJBShC7TpJG+wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC\n AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU9IbvOsPSUrpr8H2zSafYVQ9e\n Ft8wDQYJKoZIhvcNAQENBQADggIBABQ08aI31VKZs8jzg+y/QM5cvzXlVhcpkZsY\n 1VVBr0roSBw9Pld9SERrEHto8PVXbadRxeEs4sKivJBKubWAooQ6NTvEB9MHuGnZ\n VCU+N035Gq/mhBZgtIs/Zz33jTB2ju3G4Gm9VTZbVqd0OUxFs41Iqvi0HStC3/Io\n rKi7crubmp5f2cNW1HrS++ScbTM+VaKVgQ2Tg5jOjou8wtA+204iYXlFpw9Q0qnP\n qq6ix7TfLLeRVp6mauwPsAJUgHZluz7yuv3r7TBdukU4ZKUmfAGIPSebtB3EzXfH\n 7Y326xzv0hEpjvDHLy6+yFfTdBSrKPsMHgc9bsf88dnypNYL8TUiEHlcTgCGU8ts\n ud8sWN2M5FEWbHPNYRVfH3xgY2iOYZzn0i+PVyGryOPuzkRHTxDLPIGEWE5susM4\n X4bnNJyKH1AMkBCErR34CLXtAe2ngJlV/V3D4I8CQFJdQkn9tuznohUU/j80xvPH\n FOcDGQYmh4m2aIJtlNVP6+/92Siugb5y7HfslyRK94+bZBg2D86TcCJWaaZOFUrR\n Y3WniYXsqM5/JI4OOzu7dpjtkJUYvwtg7Qb5jmm8Ilf5rQZJhuvsygzX6+WM079y\n nsjoQAm6OwpTN5362vE9SYu1twz7KdzBlUkDhePEOgQkWfLHBJWwB+PvB1j/cUA3\n 5zrbwvQf\n -----END CERTIFICATE-----\n ```\n\n </details>\n\n- Enable client certificate validation on the web server that is doing the TLS termination. Below there are examples on how to perform this configuration in `NGINX` and `Apache`.\n\n **NGINX**\n\n ```bash\n server {\n listen 443 ssl default_server;\n\n # ... existing SSL configuration for server authentication ...\n ssl_verify_client on;\n ssl_client_certificate /path/to/Netdata_CA.pem;\n\n location / {\n if ($ssl_client_s_dn !~ "CN=app.netdata.cloud") {\n return 403;\n }\n # ... existing location configuration ...\n }\n }\n ```\n\n **Apache**\n\n ```bash\n Listen 443\n <VirtualHost *:443>\n # ... existing SSL configuration for server authentication ...\n SSLVerifyClient require\n SSLCACertificateFile "/path/to/Netdata_CA.pem"\n </VirtualHost>\n <Directory /var/www/>\n Require expr "%{SSL_CLIENT_S_DN_CN} == \'app.netdata.cloud\'"\n # ... existing directory configuration ...\n </Directory>\n ```\n\n##### Basic authentication\n\nIn basic authorization, the client sends a request with an Authorization header that includes a base64-encoded string in the format username:password. The server then uses this information to authenticate the client. If this authentication method is selected, the user can set the user and password that will be used when connecting to the destination service.\n\n##### Bearer token authentication\n\nIn bearer token authentication, the client sends a request with an Authorization header that includes a bearer token. The server then uses this token to authenticate the client. Bearer tokens are typically generated by an authentication service, and are passed to the client after a successful authentication. If this method is selected, the user can set the token to be used for connecting to the destination service.\n\n',integration_type:"cloud_notification",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/cloud-notifications/metadata.yaml",troubleshooting:""},{id:"logs-opentelemetry",meta:{name:"OpenTelemetry Logs",link:"https://github.com/netdata/netdata/blob/master/src/crates/netdata-log-viewer/README.md",categories:["logs"],icon_filename:"opentelemetry.svg"},keywords:["opentelemetry","otel","otlp","logs"],overview:'# OpenTelemetry Logs\n\nThe OpenTelemetry log viewer plugin by Netdata makes viewing, exploring and analyzing OpenTelemetry logs simple and efficient.\n\nIt works with logs ingested by the `otel.plugin`, which receives OTLP-formatted log data and stores them in\nsystemd-compatible journal files. The log viewer provides the same powerful exploration interface used for\nsystemd journal logs.\n\n\n## Visualization\n\nYou can start exploring OpenTelemetry logs on the "Logs" tab of the Netdata UI.\n\n\n## Key features\n\n- Views logs ingested via **OpenTelemetry OTLP/gRPC** protocol.\n- Allows filtering on **any log field** or **field value**, for any time-frame.\n- Allows **full text search** (`grep`) on all log fields, for any time-frame.\n- Provides a **histogram** for log entries over time, with a breakdown per field-value, for any field and any time-frame.\n- Uses **fast indexed lookups** with pre-built indexes for performance.\n- Supports **faceted search** across log fields (severity, hostname, service, etc.).\n- In PLAY mode shows new log entries immediately after they are received.\n',setup:"## Setup\n\n### Prerequisites\n\n- A Netdata Cloud account\n- The `otel.plugin` configured to ingest OpenTelemetry logs\n\n\n### Configuration\n\nThere is no configuration needed for this integration.",integration_type:"logs",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/logs/metadata.yaml"},{id:"logs-systemd-journal",meta:{name:"Systemd Journal Logs",link:"https://github.com/netdata/netdata/blob/master/src/collectors/systemd-journal.plugin/README.md",categories:["logs"],icon_filename:"netdata.png"},keywords:["systemd","journal","logs"],overview:'# Systemd Journal Logs\n\nThe `systemd` journal plugin by Netdata makes viewing, exploring and analyzing `systemd` journal logs simple and efficient.\n\nIt automatically discovers available journal sources, allows advanced filtering, offers interactive visual representations and supports exploring the logs of both individual servers and the logs on infrastructure wide journal centralization servers.\n\nThe plugin automatically detects the available journal sources, based on the journal files available in `/var/log/journal` (persistent logs) and `/run/log/journal` (volatile logs).\n\n\n## Visualization\n\nYou can start exploring `systemd` journal logs on the "Logs" tab of the Netdata UI.\n\n\n## Key features\n\n- Works on both **individual servers** and **journal centralization servers**.\n- Supports `persistent` and `volatile` journals.\n- Supports `system`, `user`, `namespaces` and `remote` journals.\n- Allows filtering on **any journal field** or **field value**, for any time-frame.\n- Allows **full text search** (`grep`) on all journal fields, for any time-frame.\n- Provides a **histogram** for log entries over time, with a breakdown per field-value, for any field and any time-frame.\n- Works directly on journal files, without any other third-party components.\n- Supports coloring log entries, the same way `journalctl` does.\n- In PLAY mode provides the same experience as `journalctl -f`, showing new log entries immediately after they are received.\n',setup:"## Setup\n\n### Prerequisites\n\n- A Netdata Cloud account\n\n\n### Configuration\n\nThere is no configuration needed for this integration.",integration_type:"logs",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/logs/metadata.yaml"},{id:"macos-unified-logs",meta:{name:"macOS Unified Logs",link:"https://github.com/netdata/netdata/blob/master/src/collectors/macos-logs.plugin/README.md",categories:["logs"],icon_filename:"macos.svg"},keywords:["macos","macos logs","unified logs","oslog","logs"],overview:"# macOS Unified Logs\n\nThe macOS Logs plugin by Netdata makes viewing, exploring and analyzing macOS unified logs simple and efficient.\n\nIt queries Apple's native OSLog framework directly and does not invoke `log show`, `log stream`, or other external log-query commands during normal query execution.\n\nThe plugin exposes the local macOS unified log store as a structured, searchable Logs tab source.\n\n\n## Visualization\n\nYou can start exploring macOS unified logs on the \"Logs\" tab of the Netdata UI.\n\n\n## Key features\n\n- Supports the native **macOS unified log** store.\n- Uses Apple's public **OSLog** framework.\n- Allows filtering on macOS log fields for any selected time frame.\n- Allows full-text search across collected log fields.\n- Provides a histogram for log entries over time, with a breakdown per field-value.\n- Supports severity coloring based on the OSLog level.\n- Supports PLAY mode through repeated bounded native queries, without running `log stream`.\n",setup:"## Setup\n\n### Prerequisites\n\n- macOS with the OSLog framework available\n- Access to the local unified log store; Apple's OSLog API requires elevated privileges for local system logs, so Netdata installs `macos-logs.plugin` as a root-owned setuid Function plugin\n- A Netdata Cloud account\n\n\n### Configuration\n\nThere is no configuration needed for this integration.",integration_type:"logs",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/logs/metadata.yaml"},{id:"windows-event-logs",meta:{name:"Windows Event Logs",link:"https://github.com/netdata/netdata/blob/master/src/collectors/windows-events.plugin/README.md",categories:["logs"],icon_filename:"windows.svg"},keywords:["windows","windows events","logs"],overview:'# Windows Event Logs\n\nThe Windows Events plugin by Netdata makes viewing, exploring and analyzing Windows Events simple and\nefficient.\n\nThe plugin automatically detects all the available channels and offers a list of "Event Channels".\n\nBy default, it aggregates events from all event channels, providing a unified view of all events.\n\n\n## Visualization\n\nYou can start exploring Windows event logs on the "Logs" tab of the Netdata UI.\n\n\n## Key features\n\n- Supports **Windows Event Logs (WEL)**.\n- Supports **Event Tracing for Windows (ETW)** and **TraceLogging (TL)**, when events are routed to Event Log.\n- Allows filtering on all System Events fields.\n- Allows **full text search** (`grep`) on all System and User fields.\n- Provides a **histogram** for log entries over time, with a breakdown per field-value, for any System Event field and any\n time-frame.\n- Supports coloring log entries based on severity.\n- In PLAY mode it "tails" all the Events, showing new log entries immediately after they are received.\n',setup:"## Setup\n\n### Prerequisites\n\n- Netdata Cloud paid subscription\n\n\n### Configuration\n\nThere is no configuration needed for this integration.",integration_type:"logs",edit_link:"https://github.com/netdata/netdata/blob/master/integrations/logs/metadata.yaml"},{meta:{plugin_name:"netflow-plugin",module_name:"aws-ip-ranges",monitored_instance:{name:"AWS IP Ranges",link:"https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["aws","amazon","cloud","ip ranges","vpc","ec2","prefix list","service tags"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"gcp-ip-ranges"},{plugin_name:"netflow-plugin",module_name:"azure-ip-ranges"},{plugin_name:"netflow-plugin",module_name:"netbox"},{plugin_name:"netflow-plugin",module_name:"generic-ipam"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# AWS IP Ranges\n\nPlugin: netflow-plugin\nModule: aws-ip-ranges\n\n## Overview\n\nAnnotate network flows with AWS service and region labels from AWS public IP\nranges. AWS publishes its current public IP allocations as a single JSON document at\n[`https://ip-ranges.amazonaws.com/ip-ranges.json`](https://ip-ranges.amazonaws.com/ip-ranges.json).\nThe file lists every prefix AWS uses for a published service, tagged with the AWS\nregion and the AWS service that owns the prefix (`AMAZON`, `EC2`, `S3`,\n`CLOUDFRONT`, `API_GATEWAY`, ...). This integration fetches the file periodically,\ntransforms it via a jq expression, and labels matching flow records with provider,\nregion, and service tags.\n\nOnce configured, traffic to / from AWS shows up in dashboards as `tenant=amazon`\nwith per-region (`region=us-east-1`, `region=eu-central-1`, ...) and per-service\n(`role=s3`, `role=cloudfront`, ...) breakdown. This is **complementary to GeoIP\nand ASN enrichment**: instead of a flow being labeled simply `AS16509 Amazon`,\nit becomes labeled with the specific AWS service and region carrying the\ntraffic -- without parsing AS-name strings.\n\nThe file is public; no AWS credentials are needed.\n\nSchema of `ip-ranges.json`:\n\n- top-level: `syncToken`, `createDate`, `prefixes`, `ipv6_prefixes`\n- each entry in `prefixes[]`: `ip_prefix`, `region`, `service`, `network_border_group`\n- each entry in `ipv6_prefixes[]`: `ipv6_prefix`, `region`, `service`, `network_border_group`\n\nFor the cross-cutting concepts (how multiple network sources merge, the lookup\npriority vs static `networks` config, TLS verification rules, the jq engine and\nits expected output schema, fetch loop and retry/backoff), see\n[Network Identity](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\nThe plugin issues a periodic GET to `https://ip-ranges.amazonaws.com/ip-ranges.json`,\nparses the JSON body, runs the configured jq transform via the\n[jaq](https://github.com/01mf02/jaq) library, and merges the resulting\nprefix-labeled rows into the network-attributes trie shared by all enrichment\nsources.\n\nAWS does not publish a fixed refresh cadence; the file is updated whenever the\nAWS IP space changes (typically several times per day) and the `syncToken` /\n`createDate` fields advance on every change. AWS recommends polling no faster\nthan the file actually changes; daily is enough for most flow-attribution use\ncases. The plugin floors the configured `interval` at 60s.\n\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDisabled by default. Add an entry under `enrichment.network_sources` to enable.\n\n#### Limits\n\nOne full AWS prefix document is fetched per refresh. Resource use scales with the number of AWS prefixes selected by your transform and the refresh interval.\n\n#### Performance Impact\n\nOne HTTPS request per refresh interval plus a jq transform over the AWS prefix document. Runtime enrichment does prefix matching for source and destination IPs, and cost scales with the number of loaded network-source records.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Outbound HTTPS to AWS\n\nThe agent host must be able to reach `https://ip-ranges.amazonaws.com/ip-ranges.json`.\nNo AWS credentials are needed -- the file is public.\n\n\n\n### Configuration\n\n#### Options\n\nAdd a named entry under `enrichment.network_sources`. The map key (e.g. `aws`)\nis the source name; it is used in plugin logs but is **not** automatically\nattached to flow records -- the record labels come entirely from your `transform`\noutput (`tenant`, `region`, `role`, `name`, `site`, `city`, `country`, `state`,\n`asn`, `asn_name`).\n\nThe expected `transform` output is a stream of objects, each carrying a `prefix`\n(CIDR string) plus any subset of the optional attribute fields. See the\ncross-cutting [Network Identity](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment)\npage for the full output schema.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| url | AWS publishes the master file at this URL. Use it as-is unless you mirror it locally for air-gapped environments. | https://ip-ranges.amazonaws.com/ip-ranges.json | yes |\n| interval | How often to fetch the file. AWS updates the document whenever its IP space changes (often several times per day, sometimes more); daily is enough for most uses. The configured value is floored at 60s. | 60s | no |\n| timeout | Per-request timeout for the HTTPS GET. | 60s | no |\n| method | HTTP method. AWS serves the file via GET; leave at the default. | GET | no |\n| headers | Extra HTTP headers added to the request. Not required for the public AWS URL; only needed if you front the file behind your own authenticated mirror. | {} | no |\n| transform | jq expression (compiled by jaq) that converts the AWS JSON into a stream of `{prefix, ...}` objects. The default `.` does **not** match the AWS schema -- you must supply a real transform (see examples below) or fetches fail because output rows cannot be mapped to the required `{prefix, ...}` schema. | . | yes |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### Tag all AWS prefixes by region and service (IPv4 + IPv6)\n\nRecommended starting point. Sets `tenant=amazon`, `region=<aws-region>`,\n`role=<service-name-lowercased>`. Covers both `prefixes[]` and\n`ipv6_prefixes[]` in one stream so v4 and v6 traffic are tagged\nconsistently.\n\n\n```yaml\nenrichment:\n network_sources:\n aws:\n url: "https://ip-ranges.amazonaws.com/ip-ranges.json"\n interval: 24h\n timeout: 60s\n transform: |\n (.prefixes + .ipv6_prefixes)[] | {\n prefix: (.ip_prefix // .ipv6_prefix),\n tenant: "amazon",\n region: .region,\n role: (.service | ascii_downcase)\n }\n\n```\n###### AWS S3 only\n\nFilter to a single AWS service for narrower tagging. Useful when you only\ncare about identifying S3 traffic (e.g. egress-cost attribution).\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n network_sources:\n aws-s3:\n url: "https://ip-ranges.amazonaws.com/ip-ranges.json"\n interval: 24h\n transform: |\n (.prefixes + .ipv6_prefixes)[]\n | select(.service == "S3")\n | {\n prefix: (.ip_prefix // .ipv6_prefix),\n tenant: "amazon",\n role: "s3",\n region: .region\n }\n\n```\n{% /details %}\n###### Use network_border_group as the site label\n\nAWS exposes a `network_border_group` field that distinguishes Local Zones\n/ Wavelength Zones from the parent Region. Map it to the `site` attribute\nif you want that distinction visible in flow dashboards.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n network_sources:\n aws:\n url: "https://ip-ranges.amazonaws.com/ip-ranges.json"\n interval: 24h\n transform: |\n (.prefixes + .ipv6_prefixes)[] | {\n prefix: (.ip_prefix // .ipv6_prefix),\n tenant: "amazon",\n region: .region,\n site: .network_border_group,\n role: (.service | ascii_downcase)\n }\n\n```\n{% /details %}\n',troubleshooting:'### Default `transform: "."` fails because output rows are missing `prefix`\n\nThe default `.` returns the raw JSON object, not the per-prefix stream the\nplugin expects. You **must** supply a transform that yields one object per\nprefix (with at least a `prefix` field). Use the first example above as your\nstarting template.\n\n\n### AWS service name precedence inside one prefix\n\nAWS sometimes lists the same `ip_prefix` under multiple `service` entries\n(e.g. once under `AMAZON` and again under `EC2`). The plugin merges all\nrecords into a single prefix trie, and the **last write wins** for a given\nprefix length. If you want a specific service to take precedence, filter the\ntransform with `select(.service != "AMAZON")` so the broader catch-all\nentries are dropped.\n\n\n### Static `networks:` config silently overrides AWS labels\n\nWhen a prefix is defined in both this source and `enrichment.networks`, the\nstatic config wins on every non-empty field. This is by design (operator\nintent overrides imported data) but can surprise operators who expect the\nremote feed to be authoritative. See the cross-cutting Network Identity page\nfor the full lookup-priority rules.\n\n\n### Empty result from the transform is treated as failure\n\nIf the jq filter happens to produce nothing (bad selector, wrong field name,\nupstream JSON shape change), the source backs off as if it errored. Check\nthe journal for `network-sources` warnings:\n`journalctl --namespace netdata | grep network-sources`.\n\n\n### TLS verification cannot be disabled\n\n`tls.skip_verify: true` is rejected by validation. Use `tls.ca_file` for\ncustom-CA paths if you front AWS behind an internal TLS-terminating proxy\nwith a private CA.\n\n\n',alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nThis integration does not produce metrics. It enriches flow records with the\nfollowing journal fields when a flow's source or destination IP matches an AWS\nprefix:\n\n- `SRC_NET_NAME` / `DST_NET_NAME`\n- `SRC_NET_ROLE` / `DST_NET_ROLE`\n- `SRC_NET_SITE` / `DST_NET_SITE`\n- `SRC_NET_REGION` / `DST_NET_REGION`\n- `SRC_NET_TENANT` / `DST_NET_TENANT`\n\nPlus, when the transform sets them, the country / state / city / ASN overrides\ndocumented on the Network Identity page. Verify on the Network Flows view via the\n`*_NET_*` columns or by filtering on `tenant=amazon`.\n\n",integration_type:"flows",id:"netflow-plugin-aws-ip-ranges-AWS_IP_Ranges",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"azure-ip-ranges",monitored_instance:{name:"Azure IP Ranges",link:"https://www.microsoft.com/en-us/download/details.aspx?id=56519",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["azure","microsoft","cloud","ip ranges","service tags"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"aws-ip-ranges"},{plugin_name:"netflow-plugin",module_name:"gcp-ip-ranges"},{plugin_name:"netflow-plugin",module_name:"netbox"},{plugin_name:"netflow-plugin",module_name:"generic-ipam"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# Azure IP Ranges\n\nPlugin: netflow-plugin\nModule: azure-ip-ranges\n\n## Overview\n\nAnnotate network flows with Azure service and region labels from Azure Service\nTags. Microsoft publishes Azure's public IP prefixes as **Service Tags JSON\nfiles**. A service tag is Microsoft's name for a group of IP prefixes belonging\nto one Azure service (e.g., `Storage`, `Sql`, `AzureFrontDoor.Backend`); the\nJSON enumerates every tag together with the prefixes, the platform, and -- for\ntags that support regional scope -- the Azure region.\n\nMicrosoft publishes four separate JSON files, one per Azure cloud:\n\n- **Azure Public** -- commercial Azure, the file most users want.\n- **Azure US Government** -- separate cloud for US public-sector workloads.\n- **Microsoft Azure operated by 21Vianet** -- the China cloud.\n- **Azure Germany** -- legacy German cloud.\n\nThis integration tags flow records to/from Azure-hosted services with\n`*_NET_TENANT=\"azure\"` plus per-region and per-service labels. Use it to\nidentify traffic to Azure SQL, Azure Storage, Azure Front Door, App Service,\nand the rest -- without maintaining the prefix list yourself.\n\nFor the full network-identity concept (merge order, jq output shape, TLS\nverification, failure modes), see\n[Network Identity](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\nPeriodic HTTPS GET against the Service Tags JSON, jq transform via the\n[jaq](https://github.com/01mf02/jaq) library, merge into the network-attributes\ntrie. Same mechanism as AWS / GCP IP Ranges -- different URL and JSON shape,\nplus one important operational caveat documented below.\n\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDisabled by default. Add an entry under enrichment.network_sources to enable.\n\n#### Limits\n\nOne full Azure Service Tags document is fetched per refresh. Resource use scales with the number of Azure prefixes selected by your transform and the refresh interval.\n\n#### Performance Impact\n\nOne HTTPS request per refresh interval plus a jq transform over the Azure Service Tags document. Runtime enrichment does prefix matching for source and destination IPs, and cost scales with the number of loaded network-source records.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Azure publishes weekly, but the URL rotates\n\nMicrosoft updates the Service Tags JSON **weekly** (per\n<https://learn.microsoft.com/en-us/azure/virtual-network/service-tags-overview#discover-service-tags-by-using-downloadable-json-files>:\n"These lists are updated and published weekly"), and Microsoft asks you\nto delay rolling out new prefixes for at least one week after publication\n("When new IP addresses are added to service tags, they aren\'t used in\nAzure for at least one week").\n\nThe catch: the actual download URL is **not stable**. The download portal\nat <https://www.microsoft.com/en-us/download/details.aspx?id=56519> serves\na `ServiceTags_Public_<YYYYMMDD>.json` filename whose date stamp changes\nevery week. A naive `interval`-based fetch against last week\'s URL will\nstart 404\'ing as soon as a new file is published.\n\nYou have three reasonable options, in increasing order of effort:\n\n1. **Skip Azure IP Ranges entirely** and rely on GeoIP / ASN data\n (Microsoft\'s main ASN is 8075). Coarse but zero-maintenance.\n2. **Use a stable redirect** if your environment provides one (some\n enterprise mirrors do).\n3. **Run a small mirror script** -- a cron job that fetches the latest\n JSON via the [Service Tag Discovery REST API](https://learn.microsoft.com/en-us/rest/api/virtualnetwork/servicetags/list)\n (or `Get-AzNetworkServiceTag` in PowerShell) and writes the result to\n a stable path on an internal HTTP server. Point the plugin at that\n stable URL.\n\nOption 3 is what most operators end up with. The Service Tag Discovery\nAPI is authoritative and authenticated (Azure subscription with read\nrole); the downloadable JSON is unauthenticated but URL-rotated. Pick\nwhichever fits your operational model.\n\n\n#### Outbound HTTPS to your mirror (or to Microsoft, if you script the URL discovery)\n\nThe plugin only needs to reach the configured `url`. Azure credentials\nare needed only on the side that resolves "what\'s this week\'s URL?" --\nnot by the plugin itself.\n\n\n#### A jq transform that matches the Service Tags schema\n\nThe Service Tags JSON has a nested shape:\n\n```text\n{\n "changeNumber": 123,\n "cloud": "Public",\n "values": [\n {\n "name": "Storage.WestUS",\n "id": "Storage.WestUS",\n "properties": {\n "changeNumber": 456,\n "region": "westus",\n "regionId": 30,\n "platform": "Azure",\n "systemService": "AzureStorage",\n "addressPrefixes": ["13.105.16.4/30", "20.150.0.0/17", ...],\n "networkFeatures": ["API", "NSG"]\n }\n },\n ...\n ]\n}\n```\n\nThe transform must unwrap `values[]` -> `properties.addressPrefixes[]`\nand emit one object per prefix. Schema reference: `values[].name`,\n`values[].id`,\n`values[].properties.region` (region tag, can be empty for\ncloud-wide tags like the bare `Storage`), `values[].properties.platform`,\n`values[].properties.systemService` (e.g. `AzureStorage`, `AzureSql`),\n`values[].properties.addressPrefixes[]` (CIDR strings, IPv4 and IPv6\nmixed). Top-level `changeNumber` increments on every publication.\n\n\n\n### Configuration\n\n#### Options\n\nAdd a named entry under `enrichment.network_sources` pointing at your\nstable mirror URL (or, with the limitations above, at this week\'s\n`ServiceTags_Public_<date>.json` URL).\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| url | Stable URL to your locally-mirrored Azure Service Tags JSON, or this week\'s date-stamped Microsoft URL. | | yes |\n| interval | How often to fetch. Microsoft publishes weekly; daily is plenty. | 60s (loop floor) | no |\n| timeout | Per-request timeout. Service Tags JSON files are large (tens of MB) -- give it room. | 60s | no |\n| transform | jq expression that maps `values[].properties.addressPrefixes[]` into per-prefix objects. | . | yes |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### Azure Public via internal mirror -- tag by region and service\n\nInternal mirror serving the latest Public-cloud Service Tags JSON.\nTags every Azure prefix with `tenant=azure`, the region, and the\nlowercase systemService name as the role.\n\n\n```yaml\nenrichment:\n network_sources:\n azure:\n url: "https://internal.example/azure-service-tags.json"\n interval: 24h\n timeout: 60s\n transform: |\n .values[]\n | .properties as $p\n | $p.addressPrefixes[]\n | {\n prefix: .,\n tenant: "azure",\n region: ($p.region // ""),\n role: (($p.systemService // "") | ascii_downcase)\n }\n\n```\n###### Azure Storage only\n\nFilter to a single Azure systemService for narrower tagging.\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n network_sources:\n azure-storage:\n url: "https://internal.example/azure-service-tags.json"\n interval: 24h\n transform: |\n .values[]\n | select(.properties.systemService == "AzureStorage")\n | .properties as $p\n | $p.addressPrefixes[]\n | {\n prefix: .,\n tenant: "azure",\n role: "storage",\n region: ($p.region // "")\n }\n\n```\n{% /details %}\n###### Azure US Government cloud\n\nThe US Government cloud is published as a separate JSON file with its\nown download ID (57063). Same schema as the Public cloud; tag tenant\ndifferently so you can tell them apart in dashboards.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n network_sources:\n azure-usgov:\n url: "https://internal.example/azure-service-tags-usgov.json"\n interval: 24h\n transform: |\n .values[]\n | .properties as $p\n | $p.addressPrefixes[]\n | {\n prefix: .,\n tenant: "azure-usgov",\n region: ($p.region // ""),\n role: (($p.systemService // "") | ascii_downcase)\n }\n\n```\n{% /details %}\n',troubleshooting:"### 404 a week after deploy\n\nYou configured `url` against `ServiceTags_Public_<date>.json` directly.\nMicrosoft rotates the date stamp weekly, so the URL stops resolving\nwithin a week. Move to an internal mirror that resolves the latest URL\neach cycle, or to the Service Tag Discovery REST API\n(<https://learn.microsoft.com/en-us/rest/api/virtualnetwork/servicetags/list>)\nfed into a static file.\n\n\n### Empty results from the transform\n\nThe Service Tags JSON is nested two levels deep\n(`values[].properties.addressPrefixes[]`). If the jq doesn't unwrap\nboth levels, every fetch yields zero rows and the source backs off as if\nit errored. Test the jq locally with `jq < azure-service-tags.json` and\nconfirm at least one `{prefix, tenant, ...}` object comes out.\n\n\n### Service Tag API data lags the JSON file\n\nPer Microsoft's note on the Service Tags overview page, \"It takes up to\nfour weeks for new Service Tag data to propagate in the API results\nacross all Azure regions\". If you mirror via the REST API, expect newly\nadded tags to appear in the JSON download a few weeks before the API,\nnot the other way around. For prefix tagging this rarely matters; for\nfirewall rules it can.\n\n\n### TLS verification cannot be disabled\n\n`tls.skip_verify: true` is rejected by validation. Use `tls.ca_file`\nfor custom-CA paths (e.g., on an internal mirror with a private CA).\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nTags flow records with `*_NET_TENANT`, `*_NET_REGION`, `*_NET_ROLE` when the\nsource or destination IP matches an Azure prefix. Verify on the Network Flows\ntab via the `*_NET_*` columns. Country / state / city overrides\n(`*_COUNTRY`, `*_GEO_STATE`, `*_GEO_CITY`) are also available if your\ntransform sets them, but Service Tags don't carry country/state/city data --\nonly `region` codes like `westus` or `northeurope`.\n\n",integration_type:"flows",id:"netflow-plugin-azure-ip-ranges-Azure_IP_Ranges",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"bioris",monitored_instance:{name:"bio-rd / RIPE RIS",link:"https://github.com/bio-routing/bio-rd",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["bioris","bio-rd","ripe ris","bgp","grpc","route information service","as path","bgp communities"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"bmp"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# bio-rd / RIPE RIS\n\nPlugin: netflow-plugin\nModule: bioris\n\n## Overview\n\nEnrich network flows with BGP routing context received from a bio-rd-compatible\n`RoutingInformationService` gRPC endpoint. [bio-rd](https://github.com/bio-routing/bio-rd)\nis a Go-based BGP/BMP daemon that you run yourself. Its `ris` daemon receives BMP\nsessions from routers or collectors and exposes the resulting RIB through gRPC.\nNetdata is a **client** of that gRPC interface only.\n\nNetdata does **not** connect directly to RIPE NCC RIS Live, RIPEstat, RIS MRT dumps,\nor RIPE route collector sessions. RIPE RIS public access is WebSocket JSON, HTTP API,\nand MRT dump based. To use a RIPE-derived external view, run a bridge or service that\nimports that data into a bio-rd-compatible `RoutingInformationService`, then point\nNetdata at that service.\n\nPick this when bio-rd is already part of your routing toolbox, or when you want Netdata\nto consume a routing view that is already exposed through the bio-rd RIS gRPC API. If\nyour routers can speak BMP straight to Netdata, the `bmp` integration is simpler.\n\nBioRIS populates the same flow-record fields as BMP -- both feed a single shared\nin-memory routing trie. See the BMP integration card for the side-by-side comparison\nand combined-deployment notes.\n\n\nThe plugin connects as a gRPC client to one or more user-provided bio-rd `ris`\nendpoints (`grpc_addr`) and runs three RPCs against each one:\n\n1. `GetRouters` -- discover which routers/VRFs the bio-rd instance is exposing.\n2. `DumpRIB` -- pull a baseline RIB for each (router, AFI/SAFI) tuple. This is the\n expensive call -- full IPv4+IPv6 feeds run to millions of prefixes.\n3. `ObserveRIB` -- subscribe to incremental updates so the trie tracks live changes.\n\nPer refresh cycle (default 30 minutes), the plugin re-runs `GetRouters` +\n`DumpRIB`, then keeps `ObserveRIB` streams open between cycles. Routers that\ndisappear between refreshes have their routes purged.\n\nMultiple `ris_instances` are **additive**, not failover -- routes from every\nconfigured endpoint merge into the same trie. The trie is also shared with the\n`bmp` integration, so if both are enabled their routes coexist and lookups pick\nthe best match across both sources.\n\nConnection is plain gRPC over HTTP/2 by default; set `grpc_secure: true` to use\nTLS with the system CA bundle. There is no client-cert / mTLS and no application\nauth -- restrict access at the network layer.\n\n**Fields populated** (same set as BMP):\n\n| Field | Side | Source |\n|---|---|---|\n| `SRC_AS` / `DST_AS` | both | When the `routing` provider in the `asn_providers` chain matches |\n| `SRC_MASK` / `DST_MASK` | both | Prefix length of the longest-match BGP route |\n| `NEXT_HOP` | dest only | BGP next-hop attribute from the destination route |\n| `DST_AS_PATH` | dest only | Full AS path, CSV of ASNs |\n| `DST_COMMUNITIES` | dest only | Standard BGP communities (CSV of u32) |\n| `DST_LARGE_COMMUNITIES` | dest only | RFC 8092 large communities |\n\nSource-side AS path and communities are **not** surfaced; BGP path attributes are\nmost meaningful for the destination of the traffic. AS *names* (`SRC_AS_NAME`,\n`DST_AS_NAME`) come from the GeoIP/ASN MMDB, not from BGP -- BioRIS gives you\naccurate AS *numbers* and path/community attributes; the names come from the ASN\ndatabase integration.\n\n**Storage tier:** `DST_AS_PATH`, `DST_COMMUNITIES`, and `DST_LARGE_COMMUNITIES`\nare written only into the raw journal tier. The 1-minute / 5-minute / 1-hour\nrollup tiers do not carry them. Queries that need AS path or community data\nmust run against a window that the raw retention still covers.\n\n\nThis integration is supported on all platforms.\n\nThis integration runs as a single instance per Netdata Agent.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDisabled by default. Set enrichment.routing_dynamic.bioris.enabled to true and provide at least one ris_instances entry.\n\n#### Limits\n\nMemory scales with the number of RIS instances, peers, routing tables, prefixes, AS paths, and communities. Full-table feeds can consume hundreds of MB per peer.\n\n#### Performance Impact\n\nDisabled until BioRIS is configured. Once active, Netdata maintains an\nin-memory routing trie for the received RIB and updates. Plan capacity from\nthe number of peers and tables you import, and watch the agent's RSS.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### A running bio-rd \'ris\' daemon\n\nbio-rd is a separate project. The plugin only consumes its gRPC interface; it\ndoes not bundle bio-rd. You install and operate it yourself:\n\n```bash\n# Install Go (>=1.20), then:\ngit clone https://github.com/bio-routing/bio-rd.git\ncd bio-rd/cmd/ris\ngo build -o /usr/local/bin/ris .\n```\n\nConfigure `ris` with one or more BMP sources using bio-rd\'s `bmp_addr` /\n`bmp_servers` configuration. Refer to the bio-rd documentation for the BMP setup\n-- this is bio-rd\'s configuration, not Netdata\'s.\n\nDo not set Netdata\'s `grpc_addr` to a RIPE RIS Live URL, RIPEstat API URL, MRT dump\nURL, or route collector session address. Those endpoints are not the\n`RoutingInformationService` gRPC API that Netdata consumes.\n\nRun the daemon with a gRPC port:\n`/usr/local/bin/ris --grpc_port 50051 --config.file /etc/bio-rd.yml`\n\n\n#### Network reachability + no auth\n\nThe gRPC connection is plain HTTP/2 by default, or TLS with the system CA\nbundle when `grpc_secure: true`. There is no client-cert / mTLS and no application\nauthentication -- restrict access at the firewall, or run bio-rd on the same\nhost as the agent and bind it to localhost.\n\n\n\n### Configuration\n\n#### Options\n\nBioRIS options live under `enrichment.routing_dynamic.bioris` in\n`netflow.yaml`.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Master switch. | false | no |\n| timeout | Connect + per-RPC timeout for `GetRouters` and `ObserveRIB` setup. Default is aggressive; raise to 2-5s when reaching a remote bio-rd over the public internet. | 200ms | no |\n| refresh | Cadence at which the plugin re-runs `GetRouters` + `DumpRIB` for every router. Floored to 10s. | 30m | no |\n| refresh_timeout | Per-DumpRIB request timeout and per-message stream timeout for the baseline RIB pull. | 10s | no |\n| ris_instances | List of bio-rd endpoints. Each entry: `grpc_addr` (`host:port` or full `http(s)://` URI), `grpc_secure` (TLS with system CAs when true), `vrf` (string VRF name to filter on), `vrf_id` (numeric VRF ID, alternative to `vrf`). Multiple instances are additive (not failover) -- routes from every instance merge into the same trie. | [] | yes |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### Local bio-rd\n\nbio-rd running on the same host, plain gRPC.\n\n```yaml\nenrichment:\n routing_dynamic:\n bioris:\n enabled: true\n timeout: 2s\n refresh: 30m\n refresh_timeout: 30s\n ris_instances:\n - grpc_addr: "127.0.0.1:50051"\n grpc_secure: false\n\n```\n###### Remote bio-rd over TLS\n\nAcross a network, system CA bundle. No client cert / mTLS.\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n routing_dynamic:\n bioris:\n enabled: true\n timeout: 5s\n ris_instances:\n - grpc_addr: "ris.example.internal:50051"\n grpc_secure: true\n vrf: "global"\n\n```\n{% /details %}\n###### Prefer BGP over the exporter\'s AS view\n\nWith the default provider chain, an exporter-supplied AS number wins over\nBGP. If your bio-rd feed is more accurate than what the exporter is\nstamping into flow records, reorder the chains so `routing` is consulted\nfirst.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n asn_providers: [routing, flow, geoip]\n net_providers: [routing, flow]\n routing_dynamic:\n bioris:\n enabled: true\n ris_instances:\n - grpc_addr: "127.0.0.1:50051"\n\n```\n{% /details %}\n###### Combined with BMP into a single trie\n\nRun BMP from internal routers and BioRIS from a separate bio-rd-compatible RIS\nservice, for example one populated from an external routing view. Both populate\nthe same shared trie -- lookups pick the best-matching route across both sources\nat query time.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n routing_dynamic:\n bmp:\n enabled: true\n listen: "0.0.0.0:10179"\n bioris:\n enabled: true\n ris_instances:\n - grpc_addr: "127.0.0.1:50051"\n\n```\n{% /details %}\n',troubleshooting:'### Default 200ms timeout too aggressive\n\n`timeout` covers the gRPC connect plus the `GetRouters` and `ObserveRIB`\nsetup RPCs. Over the public internet to a remote bio-rd, 200ms is often not\nenough. If you see "deadline exceeded" errors in the journal, raise to 2-5s.\n`refresh_timeout` is separate and bounds the long-running `DumpRIB` and per-\nmessage stream reads (default 10s).\n\n\n### Initial dump takes minutes for full feeds\n\nA full IPv4+IPv6 RIB from a full-table bio-rd source can contain millions of\nprefixes. The first `DumpRIB` after enabling (or after a plugin restart) takes\ntime -- BGP attribution is incomplete until it finishes. Subsequent\n`ObserveRIB` streams are incremental.\n\n\n### Plugin restart wipes the trie\n\nThe trie is in-memory only -- restarting the netflow plugin loses every\nlearned BGP route. Convergence over BioRIS depends on the upstream feed; a\nfull DumpRIB from a full-table bio-rd source can take minutes. Schedule\nrestarts off-peak if BGP attribution matters for your workflow.\n\n\n### Pointing grpc_addr at RIPE RIS does not work\n\n`grpc_addr` must point to a bio-rd-compatible `RoutingInformationService`\nendpoint. RIPE RIS Live, RIPEstat, RIS MRT dumps, and route collector BGP\nsessions use different protocols, so they cannot be used directly as\n`ris_instances[].grpc_addr`. Put a converter or bio-rd-compatible service in\nfront of RIPE-derived data if you need that external view.\n\n\n### Memory growth without bound\n\nThe trie has no time-based eviction. Routes are removed only when the\nupstream BGP source withdraws them, when a router disappears from\n`GetRouters` between refreshes, or on plugin shutdown. A full feed is\nseveral hundred MB of RSS per peer, permanently.\n\n\n### AS path / communities missing on older queries\n\n`DST_AS_PATH`, `DST_COMMUNITIES`, and `DST_LARGE_COMMUNITIES` only exist in\nthe raw journal tier. The 1m / 5m / 1h rollup tiers do not carry them. Queries that span beyond the raw\nretention horizon will not return BGP path data.\n\n\n### AS path inconsistent with the exporter\'s view\n\nDifferent vantage points see different BGP paths. If your flow exporter and\nthe BGP source bio-rd is peering with are different boxes with different\nrouting tables, expect divergence. This is normal in BGP, not a bug.\n\n\n### Validate BioRIS enrichment after enabling\n\nBioRIS-derived enrichment depends on the bio-rd version, upstream BGP source,\nroute visibility, and refresh cadence. Validate against your bio-rd setup\nbefore relying on this for capacity or security decisions.\n\n\n',alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nEnriches flow records with the same fields as BMP: `SRC_AS`, `DST_AS`, `SRC_MASK`,\n`DST_MASK`, `NEXT_HOP`, `DST_AS_PATH`, `DST_COMMUNITIES`, `DST_LARGE_COMMUNITIES`.\nSource-side AS path and communities are not surfaced. AS names come from the\nGeoIP/ASN MMDB, not from BGP. AS path and communities are written only to the raw\njournal tier; rollup tiers do not carry them. When BMP and BioRIS are both\nenabled, they contribute to a single shared in-memory trie and lookups pick the\nbest-matching route across both sources.\n\n",integration_type:"flows",id:"netflow-plugin-bioris-bio-rd_/_RIPE_RIS",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"bmp",monitored_instance:{name:"BMP (BGP Monitoring Protocol)",link:"https://www.rfc-editor.org/rfc/rfc7854",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["bmp","bgp","rfc 7854","route monitoring","cisco","juniper","arista","frr","nokia"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"bioris"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# BMP (BGP Monitoring Protocol)\n\nPlugin: netflow-plugin\nModule: bmp\n\n## Overview\n\nEnrich network flows with BGP next-hop, AS path, communities, and routing\ncontext received directly from routers. BMP (BGP Monitoring Protocol, RFC 7854)\nlets a router push its BGP route updates to a passive collector. With this\nintegration enabled, Netdata is that collector -- it listens for BMP TCP\nconnections from your routers, parses BGP UPDATE messages carried inside\nRouteMonitoring frames, and builds an in-memory routing trie that flow enrichment\nthen reads from.\n\nEvery flow whose source or destination IP matches a learned prefix gains:\n`SRC_AS` / `DST_AS` (when the `routing` provider in `asn_providers` reaches BGP\ndata), `SRC_MASK` / `DST_MASK` (when `routing` reaches BGP data in `net_providers`),\nplus -- for the destination side only -- `NEXT_HOP`, `DST_AS_PATH`,\n`DST_COMMUNITIES`, and `DST_LARGE_COMMUNITIES` (RFC 8092). Source-side AS path and\ncommunities are not surfaced; BGP path attributes are most meaningful for the\ndestination of the traffic. AS *names* (`*_AS_NAME`) come from the GeoIP/ASN MMDB,\nnot from BMP -- BMP gives you accurate AS *numbers* and path/communities.\n\nAS path, communities, and large communities are written to the **raw** flow journal\nonly -- the rollup tiers do not carry them. `NEXT_HOP` is carried in both raw and\nrollup.\n\nFor the cross-cutting Enrichment concept (provider chains, shared trie with\nBioRIS, withdrawal handling, restart convergence), see\n[Enrichment](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\nThe plugin runs a TCP listener on `0.0.0.0:10179`. This port is the Akvorado\nconvention -- RFC 7854 does not register a port, and IANA does not assign one\nfor BMP. Each connecting router must first send an Initiation message; the plugin\nthen processes RouteMonitoring (carrying BGP UPDATE), PeerDownNotification, and\nTermination frames. PeerUp, StatisticsReport, and RouteMirroring frames are\naccepted but not acted on. Only BMP **version 3** is processed. Version 4 frames\nare decoded but ignored; draft v1/v2 frames are decode errors and count toward\nthe consecutive decode-error threshold.\n\nNLRI families parsed: IPv4/IPv6 unicast, IPv4/IPv6 MPLS-labelled, VPNv4, VPNv6,\nand EVPN IP-prefix routes.\n\nBMP and BioRIS share a single in-memory routing trie. A full IPv4+IPv6 BGP table\nis roughly 1.2M prefixes per peer; each entry stores `Vec<u32>` AS-path,\n`Vec<u32>` communities, `Vec<(u32,u32,u32)>` large communities, plus a route_key\nstring per path. Expect several hundred MB of resident memory per peer with a full\nfeed. The trie has no time-based eviction -- routes leave only via explicit BGP\nwithdrawal (`MP_UNREACH` or `withdraw_routes`), PeerDown, or session disconnect\nfollowed by the `keep` interval expiring (default 5 minutes).\n\n\nThis integration is supported on all platforms.\n\nThis integration runs as a single instance per Netdata Agent.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDisabled by default. Set enrichment.routing_dynamic.bmp.enabled to true and configure your routers to dial in.\n\n#### Limits\n\nMemory and CPU scale with the number of BMP sessions, routing tables, prefixes, AS paths, and communities. Full-table router feeds can consume hundreds of MB per peer.\n\n#### Performance Impact\n\nDisabled until BMP is configured. Once active, BMP updates maintain an in-memory routing trie used for enrichment, so resource use scales with routing-table size and update rate.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### BMP-capable routers\n\nCommon vendor configuration patterns:\n\n- **Cisco IOS-XR** -- `bmp server N` global block plus `bmp-activate server N`\n under `router bgp ... neighbor`.\n- **Cisco IOS-XE 3.12 / 15.4 or later** -- `bmp server N` nested inside\n `router bgp` with `activate`.\n- **Juniper JunOS** (BMP support since 13.3, RFC 8671 Adj-RIB-In since 18.3R1)\n -- `routing-options bmp ...` with one or more named stations.\n- **Arista EOS** -- `router bgp ... bgp monitoring` with one or more\n `monitoring station` blocks (active connection).\n- **Nokia SR OS** (MD-CLI) -- `/configure bmp` plus per-router `bgp monitor`.\n- **FRR (bgpd)** -- `bmp targets` block under `router bgp`. Note the loadable\n module: `bgpd` must be started with `-M bmp` or every BMP command silently\n fails.\n\nThe plugin parses RFC 7854 BMP **version 3** only. Version 4 frames are decoded\nbut ignored. Older draft versions (v1, v2) are decode errors and count toward\nthe consecutive decode-error threshold.\n\n\n#### TCP reachability between routers and the agent\n\nRouters initiate the connection -- the plugin is a passive listener. Allow\ninbound TCP on the configured port (default 10179) from each BMP-speaking\nrouter to the agent. The plugin does not retry; it waits for the router to\nreconnect.\n\n\n#### No TLS, no authentication\n\nThe listener accepts plain TCP only. Restrict access at the firewall and use\na dedicated management network -- never expose 10179 to the public internet.\nBMP carries your full routing table; treat it as sensitive.\n\n\n\n### Configuration\n\n#### Options\n\nAll BMP options live under `enrichment.routing_dynamic.bmp` in `netflow.yaml`.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enabled | Master switch. Set to true to start the listener. | false | no |\n| listen | TCP bind address (host:port). | 0.0.0.0:10179 | no |\n| keep | Grace window after a BMP disconnect before purging that session\'s routes from the trie. | 5m | no |\n| max_consecutive_decode_errors | Close the session after N consecutive decode errors. | 8 | no |\n| receive_buffer | Optional SO_RCVBUF per connection in bytes (0 = OS default). | 0 | no |\n| collect_asns | When false, AS numbers from BMP are forced to 0 before storage. | true | no |\n| collect_as_paths | When false, AS paths are dropped before storage. | true | no |\n| collect_communities | When false, communities and large communities are dropped before storage. | true | no |\n| rds | Whitelist of accepted Route Distinguishers for L3VPN peers. Empty list accepts everything. Formats: numeric `0`, `"ASN:idx"`, `"IPv4:idx"`, or full text RD. | [] | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### Enable BMP listener\n\nStart the listener on the default port.\n\n```yaml\nenrichment:\n routing_dynamic:\n bmp:\n enabled: true\n listen: "0.0.0.0:10179"\n keep: 5m\n\n```\n###### Cisco IOS-XR router config\n\nVendor-side config to send BMP to Netdata. The `bmp server` block is\nglobal, not under `router bgp`. Each neighbor that should be exported\nneeds `bmp-activate server N`. IOS-XR\'s default route monitoring is\npre-policy (Adj-RIB-In before inbound policy). Set\n`route-monitoring policy post inbound` if you prefer post-policy.\n\n\n{% details open=true summary="Config" %}\n```yaml\nbmp server 1\n host 10.0.0.10 port 10179\n description "Netdata BMP collector"\n update-source Loopback0\n initial-delay 5\n stats-reporting-period 60\n initial-refresh delay 30 spread 2\n!\nrouter bgp 65000\n neighbor 192.0.2.1\n bmp-activate server 1\n\n```\n{% /details %}\n###### Cisco IOS-XE router config\n\nIOS-XE 3.12 / 15.4 or later. The `bmp server N` block lives inside\n`router bgp`, unlike IOS-XR.\n\n\n{% details open=true summary="Config" %}\n```yaml\nrouter bgp 65000\n bmp server 1\n address 10.0.0.10 port-number 10179\n description "Netdata BMP collector"\n initial-delay 10\n stats-reporting-period 60\n update-source GigabitEthernet1\n activate\n exit-bmp-server-mode\n !\n neighbor 192.0.2.1 bmp-activate all\n\n```\n{% /details %}\n###### Juniper JunOS router config\n\nNamed station form. JunOS supports both pre-policy (RFC 7854) and\npost-policy / Adj-RIB-In (RFC 8671, JunOS 18.3R1+).\n\n\n{% details open=true summary="Config" %}\n```yaml\nset routing-options bmp station netdata station-address 10.0.0.10\nset routing-options bmp station netdata station-port 10179\nset routing-options bmp station netdata connection-mode active\nset routing-options bmp station netdata local-address 10.0.0.1\nset routing-options bmp station netdata statistics-timeout 60\nset routing-options bmp station netdata route-monitoring pre-policy\nset routing-options bmp station netdata monitor enable\n\n```\n{% /details %}\n###### Arista EOS router config\n\nEOS uses `bgp monitoring` plus one or more `monitoring station` blocks\ninside `router bgp`. Active connection mode is the equivalent of all\nother vendors (router dials Netdata).\n\n\n{% details open=true summary="Config" %}\n```yaml\nrouter bgp 65000\n bgp monitoring\n monitoring station netdata\n update-source Management1\n connection address 10.0.0.10\n connection mode active port 10179\n export-policy received routes post-policy\n export-policy bgp rib bestpaths\n\n```\n{% /details %}\n###### FRR (bgpd) router config\n\nCritical -- BMP is a runtime module in FRR. Without `-M bmp` in\n`/etc/frr/daemons` (`bgpd_options`), every BMP command silently fails.\n\n\n{% details open=true summary="Config" %}\n```yaml\n# /etc/frr/daemons:\n# bgpd_options=" -A 127.0.0.1 -M bmp"\nrouter bgp 65000\n bmp targets netdata\n bmp connect 10.0.0.10 port 10179 min-retry 5000 max-retry 60000\n bmp stats interval 60000\n bmp monitor ipv4 unicast pre-policy\n bmp monitor ipv6 unicast pre-policy\n exit\n\n```\n{% /details %}\n###### Nokia SR OS (MD-CLI) router config\n\nActive connection from one or more BGP routing instances to a named station.\n\n{% details open=true summary="Config" %}\n```yaml\n/configure bmp admin-state enable\n/configure bmp station "netdata" admin-state enable\n/configure bmp station "netdata" connection local-address 10.0.0.1\n/configure bmp station "netdata" connection station-address ip-address 10.0.0.10\n/configure bmp station "netdata" connection station-address port 10179\n/configure bmp station "netdata" family ipv4 true\n/configure bmp station "netdata" family ipv6 true\n/configure router "Base" bgp monitor admin-state enable\n/configure router "Base" bgp monitor route-monitoring post-policy true\n/configure router "Base" bgp monitor station "netdata" { }\n\n```\n{% /details %}\n###### Drop AS path and communities\n\nUseful if you only care about the AS number for traffic attribution and\nwant to keep the journal small.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n routing_dynamic:\n bmp:\n enabled: true\n collect_asns: true\n collect_as_paths: false\n collect_communities: false\n\n```\n{% /details %}\n###### Restrict to specific Route Distinguishers\n\nFor L3VPN peers, only accept routes whose RD matches the whitelist.\nOther peer types are unaffected.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n routing_dynamic:\n bmp:\n enabled: true\n rds:\n - "65000:100"\n - "65000:200"\n\n```\n{% /details %}\n',troubleshooting:"### Listener not receiving BMP sessions\n\nThe plugin is a passive listener -- it never dials. Check the router side:\n`show bmp` (Cisco), `show bmp connections` / `show bgp monitoring station`\n(Juniper, Arista), `show bmp targets` (FRR). Confirm the firewall allows\ninbound TCP on port 10179. For FRR specifically, verify `bgpd` was started\nwith `-M bmp` -- without it, every BMP command is silently accepted but\nno connection is ever opened.\n\n\n### Convergence takes minutes after restart\n\nThe trie is not persisted. After a plugin restart, routers re-send\nInitiation followed by their Adj-RIB-In as RouteMonitoring updates. FRR\nre-emits everything in seconds. Cisco IOS-XR's `initial-refresh` is\nconfigurably spread (defaults to a per-peer delay) so a full re-feed can\ntake minutes. Juniper varies between seconds and minutes depending on\nstation options. Schedule restarts off-peak when BGP attribution matters.\n\n\n### Memory growth without bound\n\nA full BGP feed adds ~1.2M prefixes per peer permanently -- there is no\ntime-based eviction in the trie. Routes are removed only by explicit BGP\nwithdrawal, PeerDown, or session disconnect followed by the `keep`\ninterval. Plan capacity before connecting full-table peers.\n\n\n### AS path inconsistent with the exporter's view\n\nThe exporter and the BMP-feeding router are usually different boxes with\ndifferent routing tables. Different vantage points see different AS paths;\nthis is normal. The `routing` provider in the `asn_providers` chain decides\nwhich source wins (default order is `flow, routing, geoip` -- exporter first).\n\n\n### Empty BGP enrichment after enabling\n\nConfirm the router actually established the BMP session (vendor-side `show`\ncommand above). Confirm `enrichment.asn_providers` includes `routing` (or\nthe `bmp` alias) -- if `routing` is removed from both `asn_providers` and\n`net_providers`, the trie is built but never read.\n\n\n### Validate BGP enrichment after enabling\n\nBGP-derived enrichment depends on router export policy, peer state, and\nroute visibility. Validate against your specific router firmware before\ndepending on this for capacity or security decisions.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nEnriches flow records with `SRC_AS` / `DST_AS` (when the `routing` provider in\n`asn_providers` reaches BGP), `SRC_MASK` / `DST_MASK` (via `net_providers`),\n`NEXT_HOP`, `DST_AS_PATH`, `DST_COMMUNITIES`, `DST_LARGE_COMMUNITIES`. Source-side\nAS path and communities are not surfaced. AS *names* come from the GeoIP/ASN MMDB,\nnot from BMP. AS path, communities, and large communities are RAW-tier-only --\nrollups carry only `NEXT_HOP`. Verify in the Network Flows view by querying the\nAS-path and communities columns.\n\n",integration_type:"flows",id:"netflow-plugin-bmp-BMP_(BGP_Monitoring_Protocol)",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"caida-prefix2as",monitored_instance:{name:"CAIDA Routeviews Prefix-to-AS",link:"https://www.caida.org/catalog/datasets/routeviews-prefix2as/",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["caida","routeviews","prefix2as","pfx2as","asn","bgp","ip intelligence","flow enrichment"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"dbip"},{plugin_name:"netflow-plugin",module_name:"maxmind"},{plugin_name:"netflow-plugin",module_name:"iptoasn"},{plugin_name:"netflow-plugin",module_name:"custom-mmdb"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# CAIDA Routeviews Prefix-to-AS\n\nPlugin: netflow-plugin\nModule: caida-prefix2as\n\n## Overview\n\nEnrich network flows with AS numbers from CAIDA's Routeviews Prefix-to-AS\nmapping dataset. CAIDA derives this public dataset from RouteViews BGP data and\npublishes one prefix-to-origin-AS mapping per line. The official format is\ntab-separated `IP prefix`, `prefix length`, and `AS number`; multi-origin AS\nentries can contain multiple ASNs, and the Netdata downloader keeps the first\nlisted origin AS as the simplified per-prefix value.\n\nCAIDA Prefix-to-AS is ASN-only. It does not provide AS organization names or\ngeographic fields. Pair it with DB-IP, MaxMind, IP2Location, IPDeny, IPIP, or\nanother geo provider when you also need `*_COUNTRY`, city, state, or\ncoordinates.\n\nFor the IP-intelligence mechanism (lookup order, MMDB composition, refresh,\nprovider chains), see\n[IP Intelligence](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\nThe netflow plugin reads MMDB files only. CAIDA publishes compressed text data,\nso use Netdata's `topology-ip-intel-downloader` to fetch the latest Routeviews\nPrefix-to-AS file, convert it to `topology-ip-asn.mmdb`, and place it in the\nstandard auto-detected cache directory. The plugin reloads the generated MMDB\nautomatically when the file changes.\n\n\nThis integration is supported on all platforms.\n\nThis integration runs as a single instance per Netdata Agent.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nNot used by the default install. After the downloader writes `topology-ip-asn.mmdb` into the standard cache path, the plugin auto-detects the generated file.\n\n#### Limits\n\nASN number only. No AS organization name, country, state, city, or coordinates are available from this source.\n\n#### Performance Impact\n\nLookups are local MMDB reads after conversion. Memory use is mostly the mapped database file and the kernel page cache needed to keep active pages hot.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Downloader with CAIDA Prefix-to-AS support\n\nRun the bundled downloader when available. Packaged 32-bit installs do not\ninclude this binary:\n\n```bash\nsudo /usr/sbin/topology-ip-intel-downloader \\\n --asn caida:prefix2as \\\n --geo dbip:city-lite\n```\n\n`caida:prefix2as` is valid only for `--asn`. The example keeps DB-IP\ncity-lite for geo fields; substitute any supported `--geo` provider if\ncountry-only enrichment is sufficient.\n\n\n#### CAIDA acceptable use terms\n\nCAIDA documents acceptable-use and attribution requirements on the dataset\npage. Review the terms before redistributing generated datasets or derived\nreports.\n\n\n\n### Configuration\n\n#### Options\n\nOnce the downloader has produced a CAIDA-derived ASN MMDB in the cache\ndirectory, the plugin auto-detects it. To pin paths explicitly, set\n`enrichment.geoip.asn_database` and keep `geo_database` pointed at your chosen\ngeographic provider.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enrichment.geoip.asn_database | Path to the CAIDA-derived ASN MMDB. Empty = auto-detect from the cache directory. | [] | no |\n| enrichment.geoip.geo_database | Optional geographic MMDB paths supplied by another provider. | [] | no |\n| enrichment.geoip.optional | When true, missing or unreadable MMDBs are warnings, not fatal at startup. | false (true when auto-detected) | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### After running the downloader with CAIDA ASN and DB-IP geo\n\nAuto-detection picks up both generated cache files.\n\n```yaml\nenrichment:\n geoip:\n asn_database: []\n geo_database: []\n optional: true\n\n```\n###### Explicit CAIDA ASN path\n\nPin CAIDA for AS numbers and keep a separate geo source for country/city fields.\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n geoip:\n asn_database:\n - /var/cache/netdata/topology-ip-intel/topology-ip-asn.mmdb\n geo_database:\n - /var/cache/netdata/topology-ip-intel/topology-ip-geo.mmdb\n optional: false\n\n```\n{% /details %}\n',troubleshooting:"### AS names are empty\n\nCAIDA Prefix-to-AS contains AS numbers, not organization names. Layer a\nprovider with AS organization data, such as MaxMind GeoLite2 ASN or DB-IP\nASN Lite, after the CAIDA MMDB in `asn_database` if AS names matter.\n\n\n### Country fields are empty\n\nThis source is ASN-only. Configure a `--geo` provider in the downloader or\npoint `enrichment.geoip.geo_database` at a separate geo MMDB.\n\n\n### Multi-origin AS simplification\n\nCAIDA can represent multi-origin prefixes. The downloader uses the first\nlisted AS for the generated single-value MMDB record. If you need full MOAS\nsemantics, use BMP or BioRIS routing enrichment instead of an offline ASN\nlookup database.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nEnriches flow records with AS numbers; produces no metrics of its own.\nVerify on the Network Flows view via `SRC_AS` and `DST_AS`.\n\n",integration_type:"flows",id:"netflow-plugin-caida-prefix2as-CAIDA_Routeviews_Prefix-to-AS",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"classifiers",monitored_instance:{name:"Classifiers",link:"https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["classifiers","rules","akvorado","expression","exporter","interface","boundary","connectivity","provider","tagging"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"static-metadata"},{plugin_name:"netflow-plugin",module_name:"generic-ipam"},{plugin_name:"netflow-plugin",module_name:"netbox"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# Classifiers\n\nPlugin: netflow-plugin\nModule: classifiers\n\n## Overview\n\nAnnotate network flows with exporter and interface labels derived from reusable\nclassification rules. Where [static metadata](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment)\nforces you to enumerate every exporter and every ifIndex by hand, classifiers\nlet you express the network design once -- "anything matching `^edge-` is the\nedge tier", "any interface with `BACKBONE-LUMEN` in its description is on\nLumen", "any interface at 100Gbps is a core uplink" -- and apply that labelling\nacross the whole flow stream.\n\nThe plugin ships two rule lists, evaluated in YAML order:\n\n- `enrichment.exporter_classifiers` -- runs once per exporter (cached). Sees the\n exporter\'s IP and friendly name, and any classification slots already filled\n by static metadata or by earlier rules. Can set\n `EXPORTER_GROUP / ROLE / SITE / REGION / TENANT`.\n- `enrichment.interface_classifiers` -- runs once per `(exporter, interface)`\n pair, applied **twice per flow record** (once for the input interface, once\n for the output). Sees\n everything an exporter rule sees plus `Interface.Index / Name / Description /\n Speed / VLAN`. Can set `IN_IF_PROVIDER / OUT_IF_PROVIDER`,\n `IN_IF_CONNECTIVITY / OUT_IF_CONNECTIVITY`, `IN_IF_BOUNDARY / OUT_IF_BOUNDARY`\n (1=external, 2=internal), and override `IN_IF_NAME / DESCRIPTION` /\n `OUT_IF_NAME / DESCRIPTION`.\n\nThe expression language is **Akvorado-compatible for the documented operators\nand actions**. It implements a subset of Akvorado\'s `expr-lang`-derived grammar. Akvorado rules\nusing only equality, comparison, `in`, `contains`, `startsWith`, `endsWith`,\n`matches`, `&&`, `||`, `!`, parentheses, and the documented `Classify*` /\n`Reject` / `Format` actions will work; arithmetic, ternaries, lambdas, and\narbitrary `expr-lang` features are not supported.\n\nOutput values written by `Classify*` actions are **lowercased and stripped to\nASCII alphanumerics + `.` + `+` + `-`** before they reach the flow record. So\n`ClassifyRegion("EU West")` becomes `euwest`. Use `SetName` / `SetDescription`\nwhen you want to preserve case and whitespace -- those write directly without\nnormalisation.\n\nFor the cross-cutting Enrichment concept (where classifiers sit in the merge\norder vs static metadata, GeoIP, IPAM, BGP routing), see\n[Enrichment](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\nEach rule is a single boolean expression; an action with no condition (e.g.\n`Classify("edge")` at top level) is treated as always-true and always fires.\nRules are AND/OR-composed, so the typical shape is `condition && Classify*(...)`.\nThe plugin evaluates the list top to bottom, **first-write-wins per slot**:\nonce `EXPORTER_GROUP` is set, no later rule can change it. Order rules from\nmost-specific to least-specific.\n\nTwo short-circuit rules end the loop early. For exporter rules, the loop stops\nwhen `group + role + site + region + tenant` are all non-empty. For\ninterface rules, the loop stops when `connectivity + provider + boundary` are\nall set. `SetName` / `SetDescription` /\n`Reject` do not contribute to short-circuit.\n\nA rule that throws at runtime (e.g. comparing a string with `>`) breaks out of\nthe loop for that record and keeps whatever was set so far. Use `matches`, `startsWith`, or `contains`\non string fields instead of `>` / `<` to avoid this.\n\n**Akvorado parity**: if `metadata_static` already filled any classification\nslot for the target, the matching classifier list does **not run** for that\ntarget -- operator-provided classification has priority and the rules cannot\noverride it. Don\'t try to mix static and rule-based labelling on the same\nexporter or interface; pick one tool per target.\n\nResults are cached. The exporter cache keys on `ExporterInfo (ip + name)`. The\ninterface cache keys on `(exporter, exporter_classification, interface)` -- so\nwhen the exporter\'s classification changes (for example after you push new\nstatic metadata and restart) the interface caches naturally invalidate. The\ncache TTL is `enrichment.classifier_cache_duration` (default 5 minutes). It is\na last-access TTL so entries live as long as they\'re queried.\n\n\nThis integration is supported on all platforms.\n\nThis integration runs as a single instance per Netdata Agent.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDisabled by default. Both rule lists are empty; populate `enrichment.exporter_classifiers` and / or `enrichment.interface_classifiers` to enable.\n\n#### Limits\n\nResource use scales with rule count and the number of distinct exporters and interfaces. The classifier cache limits repeat evaluation for stable exporter/interface inventories.\n\n#### Performance Impact\n\nRules run at decode time, in the flow-pipeline hot path, so cost matters.\nThe cache absorbs nearly all of it: per (exporter, interface) the rule list\nevaluates only on cache miss. Tune\n`enrichment.classifier_cache_duration` upwards (15-60 minutes) for very\nhigh-cardinality exporter / interface pools where the default 5 minutes\nstill yields visible misses; tune downwards (30-60 seconds) when iterating\non rule changes during a config session.\n\n',setup:'## Setup\n\n\n### Prerequisites\n\n#### Know what to classify\n\nClassifiers shine when there is a pattern to match -- exporter naming\nconventions (`edge-...`, `core-...`), management-IP subnets per site,\nSNMP interface descriptions that follow a template (`BACKBONE-<carrier>`,\n`TRANSIT-...`, `IX-...`), or 100Gbps-equals-core conventions. If your\nfleet has no such pattern, [static metadata](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment)\nis the better fit -- it lets you list each exporter and ifIndex by hand.\n\n\n#### Configure interface metadata first if you want interface rules\n\nThe plugin does **not** poll SNMP itself, so `Interface.Name`,\n`Interface.Description`, and `Interface.Speed` are populated only from\n`enrichment.metadata_static` (the static-metadata integration card). If\nyou have not configured `interfaces:` under `metadata_static.exporters`,\nthose identifiers will be empty strings / zero, and any rule that\nmatches against them will never fire. `Interface.Index` and\n`Interface.VLAN` come from the flow record itself and are always available.\n\n\n\n### Configuration\n\n#### Options\n\nBoth lists live under `enrichment:`. Each entry is a free-form string\ncontaining a single rule expression. The cache TTL is one global setting.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enrichment.exporter_classifiers | Ordered list of rules applied per exporter. Each rule is a string expression. Available identifiers: `Exporter.IP`, `Exporter.Name`, `CurrentClassification.Group / .Role / .Site / .Region / .Tenant`. Available actions: `Classify` / `ClassifyGroup`, `ClassifyRole`, `ClassifySite`, `ClassifyRegion`, `ClassifyTenant`, plus the `*Regex(input, pattern, template)` variants of each, plus `Reject()`. Interface-only actions (`ClassifyProvider`, `ClassifyConnectivity`, `ClassifyExternal` / `ClassifyInternal`, `SetName`, `SetDescription`) fail at runtime if used here. | [] | no |\n| enrichment.interface_classifiers | Ordered list of rules applied per `(exporter, interface)` pair. Sees everything an exporter rule sees, plus `Interface.Index`, `Interface.Name`, `Interface.Description`, `Interface.Speed` (bits per second), `Interface.VLAN`, and the per-interface `CurrentClassification.Connectivity / .Provider / .Boundary / .Name / .Description`. Available actions: `ClassifyProvider`, `ClassifyConnectivity`, `ClassifyExternal()`, `ClassifyInternal()`, `SetName`, `SetDescription`, `Reject()`, plus the `*Regex` variants of provider / connectivity. Exporter-only `Classify*` actions fail at runtime if used here. | [] | no |\n| enrichment.classifier_cache_duration | Last-access TTL for both classifier caches (exporter and interface). Values below 1 second are rejected. The cache prunes opportunistically -- entries idle longer than the TTL are dropped on the next prune pass, capped at one prune every TTL or 30 seconds, whichever is smaller. Restart the plugin to clear caches outright when you change rules. | 5m | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### Exporter classification by name pattern\n\nTag exporters by the prefix of their friendly name -- the simplest and\nmost common pattern. Falls back to a regex capture for the region code\nwhen the name encodes one. The final `Reject()` rule drops a test\nexporter from collection entirely.\n\n\n```yaml\nenrichment:\n exporter_classifiers:\n # Group by name prefix.\n - \'Exporter.Name startsWith "edge-" && Classify("edge")\'\n - \'Exporter.Name startsWith "core-" && Classify("core")\'\n - \'Exporter.Name startsWith "agg-" && Classify("aggregation")\'\n\n # Site by management-IP subnet.\n - \'Exporter.IP startsWith "10.1." && ClassifySite("ny-dc1")\'\n - \'Exporter.IP startsWith "10.2." && ClassifySite("par-dc1")\'\n\n # Region from a name suffix like "edge-fra-01" -> "fra".\n - \'ClassifyRegionRegex(Exporter.Name, "-([a-z]{3})-[0-9]+$", "$1")\'\n\n # Drop a lab exporter entirely.\n - \'Exporter.IP startsWith "192.0.2." && Reject()\'\n\n```\n###### Interface classification from SNMP descriptions\n\nEncode the boundary, the provider, and the connectivity tier from the\ninterface description that your network team already maintains. The\n`(?i)` regex flag is the Rust regex inline-case-insensitive prefix.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n interface_classifiers:\n # Provider tag from a description prefix.\n - \'Interface.Description startsWith "BACKBONE-LUMEN" && ClassifyProvider("Lumen")\'\n - \'Interface.Description startsWith "BACKBONE-COGENT" && ClassifyProvider("Cogent")\'\n - \'Interface.Description startsWith "BACKBONE-NTT" && ClassifyProvider("NTT")\'\n\n # Transit links: external boundary + connectivity tag.\n - \'Interface.Description contains "TRANSIT" && ClassifyConnectivity("transit") && ClassifyExternal()\'\n\n # Peering and IX -- case-insensitive regex.\n - \'Interface.Description matches "(?i)^(IX|peering)-.*" && ClassifyConnectivity("peering") && ClassifyExternal()\'\n\n # Internal customer-facing access ports.\n - \'Interface.Description startsWith "CUSTOMER-" && ClassifyConnectivity("customer") && ClassifyInternal()\'\n\n```\n{% /details %}\n###### Boundary inferred from interface speed\n\nA pragmatic shorthand when descriptions are unreliable but speed is\nconsistent. 100Gbps and faster interfaces are core, 10Gbps are\naggregation, 1Gbps and slower are access. `Interface.Speed` is in bits\nper second -- numeric comparisons are safe.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n interface_classifiers:\n - \'Interface.Speed >= 100000000000 && ClassifyConnectivity("core")\'\n - \'Interface.Speed >= 10000000000 && ClassifyConnectivity("aggregation")\'\n - \'Interface.Speed > 0 && ClassifyConnectivity("access")\'\n\n```\n{% /details %}\n###### Combining exporter context with interface rules\n\nInterface rules see the exporter\'s already-resolved classification\nvia `CurrentClassification.*`. Use it to scope interface rules to\nspecific tiers -- for example: every interface on an edge exporter\nwithout a more-specific match falls back to "external".\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n exporter_classifiers:\n - \'Exporter.Name startsWith "edge-" && Classify("edge") && ClassifyRole("border")\'\n - \'Exporter.Name startsWith "core-" && Classify("core") && ClassifyRole("backbone")\'\n interface_classifiers:\n # Specific provider rules first (most-specific to least-specific).\n - \'Interface.Description startsWith "BACKBONE-LUMEN" && ClassifyProvider("Lumen")\'\n - \'Interface.Description startsWith "BACKBONE-COGENT" && ClassifyProvider("Cogent")\'\n\n # Generic transit rule.\n - \'Interface.Description contains "TRANSIT" && ClassifyConnectivity("transit") && ClassifyExternal()\'\n\n # Fallback: any unclassified interface on an edge box is external.\n - \'CurrentClassification.Role == "border" && CurrentClassification.Boundary == 0 && ClassifyExternal()\'\n\n```\n{% /details %}\n###### Building values with Format and human-readable names\n\n`Format(pattern, args...)` mimics Go\'s `fmt.Sprintf` for `%s`, `%v`,\n`%d`, `%%`. `Classify*`\nnormalises (lowercase + strip non-alphanumeric); `SetName` and\n`SetDescription` do not, so they preserve the case and spaces of the\ncomputed value.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n exporter_classifiers:\n # Tenant computed from name, normalised on write -> "tenant-edge01".\n - \'ClassifyTenant(Format("tenant-%s", Exporter.Name))\'\n interface_classifiers:\n # Human-readable name = "<exporter>:if<index>". Preserved verbatim.\n - \'SetName(Format("%s:if%d", Exporter.Name, Interface.Index))\'\n\n```\n{% /details %}\n###### Tuning the cache for a large fleet\n\nThe default 5-minute last-access TTL is right for steady-state. Raise\nit when the (exporter, interface) population is large enough that\nevicted entries are quickly re-queried. Lower it when\nactively iterating on rule changes so misses pick up the new rules\nquickly.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n classifier_cache_duration: 30m\n exporter_classifiers:\n - \'Exporter.Name startsWith "edge-" && Classify("edge")\'\n interface_classifiers:\n - \'Interface.Speed >= 100000000000 && ClassifyConnectivity("core")\'\n\n```\n{% /details %}\n',troubleshooting:'### Plugin fails to start with a parser error\n\nA rule failed to parse. The journal log includes the index in the list\nand a parser context (`unsupported rule term`, `unsupported value\nexpression`, `Reject() does not accept arguments`, etc.). Common causes:\nmissing `&&` between condition and action; an action used in the wrong\nlist (`ClassifyExternal` in an exporter rule); strings written with\nsingle quotes (only JSON-style double quotes are accepted); regex literals\nthat fail to compile.\n\n\n### Classifier rules never run for an exporter or interface\n\nLikely cause: `metadata_static` already set **any** classification field\non that target. By design, the matching list is suppressed entirely when\nthe classification is non-empty. Either remove the static-metadata entry for that target, or\nkeep static-metadata as the sole source for it.\n\n\n### A value appears differently in the dashboard than in the rule\n\n`Classify*` actions normalise output to `[a-z0-9.+-]` only -- so\n`ClassifyRegion("EU West")` lands as `euwest`, and\n`Classify("Edge_Tier_1")` lands as `edgetier1`. Use `SetName` /\n`SetDescription` to preserve case and whitespace; those write the value\nverbatim.\n\n\n### First rule always wins, later rules never fire for the same slot\n\nFirst-write-wins is by design and per slot. Order your\nrules from most-specific to least-specific. If you want a tiered\nfallback, use distinct slots (e.g. `Classify` for the broad group and\n`ClassifyRole` for the tier within that group).\n\n\n### A working rule stops matching some time after startup\n\nCached results expire after `classifier_cache_duration` (default 5\nminutes, last-access). When you change rules, restart the plugin so the\ncaches clear immediately -- otherwise stale cached classifications keep\nreturning until they idle out.\n\n\n### A rule with `>` or `<` aborts the rule list\n\nComparing a string-typed identifier with `>` / `<` / `>=` / `<=` raises\na runtime error, and the loop breaks out for that record. Subsequent rules in\nthe list are skipped for that record. Use `matches`, `startsWith`,\n`endsWith`, `contains`, or `==` / `!=` on string fields. Keep `>` / `<`\nfor `Interface.Index`, `Interface.Speed`, and `Interface.VLAN` (the\nnumeric identifiers).\n\n\n### ClassifyExternal fires only on one side\n\nInterface classifiers run twice per flow record -- once for the input\ninterface, once for the output. Both invocations see the same rule list. If your rule conditions on\n`Interface.Index == 42` and that ifIndex appears in `IN_IF` of one flow\nand `OUT_IF` of another, the rule fires correctly in both places. But\nthe `IN_IF_BOUNDARY` / `OUT_IF_BOUNDARY` columns are independent -- a\nrule firing on the output side of a flow only sets the output side\'s\nboundary, and vice versa.\n\n\n### Interface fields are empty in the rule even though SNMP is configured\n\nThe plugin does not poll SNMP -- `Interface.Name`, `Description`, and\n`Speed` come exclusively from `enrichment.metadata_static.exporters.<ip>.interfaces.<index>`.\nIf you populate them through an external SNMP discovery and write them\ninto `metadata_static`, the rules will see them. Otherwise those fields\nresolve to empty strings / zero, and any rule that conditions on them\nnever matches.\n\n\n### Referencing Interface.* in an exporter rule silently does nothing\n\nField resolution does not error when the wrong context is missing -- it\nreturns the type\'s zero value. So `Interface.Speed >= 1` written in an `exporter_classifiers` rule\nresolves to `0 >= 1` (false) on every call. Use\n`interface_classifiers` for any rule that needs an interface field.\n\n\n',alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nTags flow records with `EXPORTER_GROUP / ROLE / SITE / REGION / TENANT` (from\nexporter rules) and `IN_IF_PROVIDER / OUT_IF_PROVIDER`,\n`IN_IF_CONNECTIVITY / OUT_IF_CONNECTIVITY`, `IN_IF_BOUNDARY / OUT_IF_BOUNDARY`,\n`IN_IF_NAME / OUT_IF_NAME`, `IN_IF_DESCRIPTION / OUT_IF_DESCRIPTION` (from\ninterface rules). Verify on the Network Flows view via those columns. Boundary\nis `1` for external and `2` for internal.\n\n",integration_type:"flows",id:"netflow-plugin-classifiers-Classifiers",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"custom-mmdb",monitored_instance:{name:"Custom MMDB Database",link:"https://maxmind.github.io/MaxMind-DB/",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["mmdb","custom database","bring your own","mmdbwriter","internal asn","internal ipam","ip intelligence"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"dbip"},{plugin_name:"netflow-plugin",module_name:"maxmind"},{plugin_name:"netflow-plugin",module_name:"iptoasn"},{plugin_name:"netflow-plugin",module_name:"caida-prefix2as"},{plugin_name:"netflow-plugin",module_name:"ip2location"},{plugin_name:"netflow-plugin",module_name:"ipdeny"},{plugin_name:"netflow-plugin",module_name:"ipip"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# Custom MMDB Database\n\nPlugin: netflow-plugin\nModule: custom-mmdb\n\n## Overview\n\nEnrich network flows with ASN, geographic, or internal network context from\noperator-built MMDB databases. Use Custom MMDB Database when you want the netflow\nplugin to read a MaxMind-format binary database (`.mmdb`) that your\nown tooling produces -- typical use cases are joining the upstream DB-IP /\nGeoLite2 data with internal AS labels, or producing a CIDR-tagged custom file\ndirectly from an internal IPAM. The plugin only requires the file to conform to\nthe [MaxMind DB binary format](https://maxmind.github.io/MaxMind-DB/); whatever\nfields it exposes are picked up by the same decoder path used for DB-IP and\nMaxMind.\n\nThe decoder reads `autonomous_system_number`, `autonomous_system_organization`,\nand (optionally) a string `asn` field from the ASN database, and `country.iso_code`,\n`subdivisions[].iso_code`, `city.names.en`, `location.latitude`,\n`location.longitude`, plus the Netdata-specific `netdata.ip_class` flag from the\ngeo database. Any other vendor-specific keys are ignored.\n\nNote that `*_GEO_CITY`, `*_GEO_LATITUDE`, and `*_GEO_LONGITUDE` are written to\nthe raw journal tier only -- the rollup tiers drop these high-cardinality fields.\nState and country survive into all four tiers.\n\nFor the full IP-intelligence concept (composition rule, ASN provider chain,\nauto-detect path order, dual-stack handling, hot reload semantics), see\n[IP Intelligence](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\nYou build (or download) the MMDB file with your own tooling, place it on the\nagent host, and point `enrichment.geoip.asn_database` and / or\n`enrichment.geoip.geo_database` at it in `netflow.yaml`. The plugin reloads on\nfile change automatically (mechanism documented on the IP Intelligence page).\n\n\nThis integration is supported on all platforms.\n\nThis integration runs as a single instance per Netdata Agent.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nNot auto-detected. You must configure paths explicitly.\n\n#### Limits\n\nCoverage, schema quality, and freshness are entirely controlled by the custom MMDB build you provide. Invalid or missing files fail startup unless marked optional.\n\n#### Performance Impact\n\nLookups are local MMDB reads with no per-flow network call. Memory use depends on the size and number of custom databases you configure.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Build or obtain a standards-compliant MMDB file\n\nThe file must conform to the\n[MaxMind DB binary format spec](https://maxmind.github.io/MaxMind-DB/) --\na binary search tree over IP prefixes plus a data section of\ntype-length-value records. Validate with `mmdblookup` from the\n`libmaxminddb-tools` package before deploying:\n\n```bash\nmmdblookup --file your-custom.mmdb --ip 8.8.8.8\n```\n\nCommon ways to produce a file:\n\n- **Go**: [`github.com/maxmind/mmdbwriter`](https://github.com/maxmind/mmdbwriter)\n -- MaxMind\'s official Go writer. Lets you start from an upstream MMDB\n (DB-IP, GeoLite2) and overlay extra records, then write a new file.\n Pairs well with the read-side library\n [`github.com/oschwald/maxminddb-golang`](https://github.com/oschwald/maxminddb-golang).\n- **Perl**: [`MaxMind::DB::Writer`](https://metacpan.org/pod/MaxMind::DB::Writer)\n -- the original reference writer.\n- **Python**: community ports such as `mmdb_writer` (PyPI) wrap the same\n format.\n\nWhatever fields you encode are read by the plugin only if they match the\nstandard schema names listed in the metrics description above.\n\n\n\n### Configuration\n\n#### Options\n\nPoint `enrichment.geoip.asn_database` and / or `enrichment.geoip.geo_database`\nat your custom MMDB file paths. Set `optional: true` while you iterate so a\nmissing or malformed file does not block plugin startup.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enrichment.geoip.asn_database | List of MMDB paths providing AS data. Multiple files compose -- per field, the last database returning a non-empty value wins. | [] | no |\n| enrichment.geoip.geo_database | List of MMDB paths providing geographic data. Same composition rule as the ASN list. | [] | no |\n| enrichment.geoip.optional | When true, missing or unreadable files at startup are tolerated (the resolver starts with no databases). Recommended while testing a custom file. | false | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### Internal MMDB built with mmdbwriter\n\nA custom build that combines public BGP data with internal CIDR labels, written atomically into the plugin\'s lookup directory by the operator\'s own pipeline.\n\n```yaml\nenrichment:\n geoip:\n asn_database:\n - /etc/netdata/internal-asn.mmdb\n geo_database:\n - /etc/netdata/internal-geo.mmdb\n optional: false\n\n```\n###### Overlay a custom ASN file on top of the bundled DB-IP geo\n\nKeep DB-IP for geographic data and use a custom MMDB only for AS labels (your IPAM-derived prefixes win because they appear last in the list -- the resolver merges per field, last non-empty wins).\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n geoip:\n asn_database:\n - /var/cache/netdata/topology-ip-intel/topology-ip-asn.mmdb\n - /etc/netdata/internal-asn.mmdb\n geo_database:\n - /var/cache/netdata/topology-ip-intel/topology-ip-geo.mmdb\n optional: true\n\n```\n{% /details %}\n###### Iterating on a new custom MMDB\n\nWhile you tune the build pipeline, mark the database optional so an absent or malformed file becomes a startup warning instead of a fatal error.\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n geoip:\n asn_database:\n - /etc/netdata/wip-asn.mmdb\n geo_database: []\n optional: true\n\n```\n{% /details %}\n',troubleshooting:"### Lookups silently return empty\n\nThe custom file's schema is non-standard (for example, the ASN is encoded\nas a string instead of `autonomous_system_number: uint32`, or the country\nis at a non-standard path). The plugin only reads the standard MaxMind\nfield names listed in the data-collection description. Validate with\n`mmdblookup --file your-custom.mmdb --ip <known-public-ip>` and confirm the\nstandard fields are present at the expected paths.\n\n\n### Plugin fails to start with optional=false\n\nFile missing, unreadable, or not a valid MMDB at the configured path.\nCheck permissions (the netdata user must be able to read the file) and\nre-validate with `mmdblookup`. Set `optional: true` while iterating.\n\n\n### Custom file refresh did not take effect\n\nThe plugin reloads custom databases the same way it reloads stock ones\n(signature-driven, in place). If the file was rewritten in place the\nplugin will pick it up; if it was edited byte-by-byte (rare with MMDB\nbuilders) verify size or mtime actually changed. The reload mechanism\nand its 30-second cadence are documented in\n[IP Intelligence](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\nOperational practice: have your build pipeline write the new MMDB to a\ntemp file in the same directory and `rename(2)` it over the live path so\nthe swap is atomic.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nEnriches flow records; produces no metrics of its own.\n\n",integration_type:"flows",id:"netflow-plugin-custom-mmdb-Custom_MMDB_Database",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"dbip",monitored_instance:{name:"DB-IP IP Intelligence",link:"https://db-ip.com/",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["geoip","asn","dbip","db-ip","mmdb","ip intelligence","flow enrichment"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"maxmind"},{plugin_name:"netflow-plugin",module_name:"iptoasn"},{plugin_name:"netflow-plugin",module_name:"caida-prefix2as"},{plugin_name:"netflow-plugin",module_name:"ip2location"},{plugin_name:"netflow-plugin",module_name:"ipdeny"},{plugin_name:"netflow-plugin",module_name:"ipip"},{plugin_name:"netflow-plugin",module_name:"custom-mmdb"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# DB-IP IP Intelligence\n\nPlugin: netflow-plugin\nModule: dbip\n\n## Overview\n\nEnrich network flows with ASN and geographic context from DB-IP Lite MMDB\ndatabases. DB-IP IP Intelligence is the default IP intelligence source for the\nNetdata netflow plugin: when neither `enrichment.geoip.asn_database` nor\n`enrichment.geoip.geo_database` is configured, the plugin auto-detects the\nDB-IP-built MMDB files at startup and uses them. Two MMDB files are involved:\nan ASN database (`topology-ip-asn.mmdb`) and a geographic database\n(`topology-ip-geo.mmdb`). Native packages (DEB, RPM) ship a stock copy under\n`/usr/share/netdata/topology-ip-intel/`; the bundled refresh tool fetches updates\ninto `/var/cache/netdata/topology-ip-intel/`.\n\nDB-IP publishes the Lite databases monthly under a Creative Commons Attribution 4.0\nInternational licence (https://db-ip.com/db/lite.php). The MMDB format is the MaxMind\nbinary database; lookups are in-process with no per-flow network call.\n\nPopulates these flow record fields when a lookup succeeds:\n\n- From the **geo MMDB**: `SRC_COUNTRY`, `DST_COUNTRY`, `SRC_GEO_STATE`, `DST_GEO_STATE`,\n `SRC_GEO_CITY`, `DST_GEO_CITY`, `SRC_GEO_LATITUDE`, `DST_GEO_LATITUDE`,\n `SRC_GEO_LONGITUDE`, `DST_GEO_LONGITUDE`. Country and state survive into all four\n journal tiers; city, latitude, and longitude are kept only in the raw tier so the\n rollups stay cardinality-bounded.\n- From the **ASN MMDB**: `SRC_AS_NAME`, `DST_AS_NAME`. The DB-IP-built ASN database also\n tags address ranges as private/reserved (RFC 1918, link-local, RFC 6598, etc.); when\n the resolved AS number is `0` and that flag is set, the plugin renders the AS name as\n `AS0 Private IP Address Space` instead of `AS0 Unknown ASN`. The AS *number* itself\n comes from the wider asn_providers chain, not directly from the MMDB.\n\nFor the cross-provider mechanics (lookup pass ordering, the 30-second hot-reload poll,\nthe auto-detect path order, multi-database composition, IPv4/IPv6 handling, the failure\nmodes shared by every MMDB provider), see\n[IP Intelligence](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\nFiles are read on plugin start and reloaded automatically when their mtime or size\nchanges. Auto-detection scans `${NETDATA_CACHE_DIR}/topology-ip-intel/` first\n(typically `/var/cache/netdata/topology-ip-intel/`), falling back to the stock copy\nunder `${NETDATA_STOCK_DATA_DIR}/topology-ip-intel/` (typically\n`/usr/share/netdata/topology-ip-intel/`). When databases are auto-detected they are\ntreated as optional, so a missing or unreadable file does not abort plugin startup.\n\n\nThis integration is supported on all platforms.\n\nThis integration runs as a single instance per Netdata Agent.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nNative packages ship the stock DB-IP MMDB files; the plugin auto-detects them at startup. No configuration required for the default install.\n\n#### Limits\n\nLookup coverage and freshness depend on the DB-IP Lite files installed on disk. Native packages provide a stock copy; schedule the downloader if you need monthly refreshes.\n\n#### Performance Impact\n\nLookups are local MMDB reads with no per-flow network call. Memory use is mostly the mapped database files and the kernel page cache needed to keep active pages hot.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### DB-IP MMDB files\n\nNative DEB / RPM packages ship the stock DB-IP MMDB files under\n`/usr/share/netdata/topology-ip-intel/`. For source builds, or to get a fresher copy\nthan the one bundled with the package, run `topology-ip-intel-downloader` once when\nthe binary is available (packaged 32-bit installs do not include it) to populate\n`/var/cache/netdata/topology-ip-intel/`:\n\n```bash\nsudo /usr/sbin/topology-ip-intel-downloader\n```\n\nSee the [Enrichment Intel Downloader](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment-intel-downloader)\npage for downloader options and how to schedule periodic refreshes. DB-IP Lite\ndata is published monthly, so a monthly cron of the downloader is the right\ncadence -- more frequent runs will not produce newer data.\n\n\n#### Licence acknowledgement\n\nDB-IP Lite databases are distributed under the Creative Commons Attribution 4.0\nInternational licence (https://db-ip.com/db/lite.php). Attribution is required\nwhen redistributing the data or derivative dashboards.\n\n\n\n### Configuration\n\n#### Options\n\nConfigure DB-IP under `enrichment.geoip` in `netflow.yaml`. Empty `asn_database`\nand `geo_database` enable auto-detection.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enrichment.geoip.asn_database | List of MMDB paths providing AS data. Empty = auto-detect under cache/stock dirs. | [] (auto-detect) | no |\n| enrichment.geoip.geo_database | List of MMDB paths providing geo data. Empty = auto-detect. | [] (auto-detect) | no |\n| enrichment.geoip.optional | When true, missing or unreadable MMDBs are warnings, not fatal. Auto-detected files default to optional. | false (true when auto-detected) | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### Default (auto-detect stock files)\n\nNative package install. No explicit configuration; the plugin finds the stock or cache copy automatically.\n\n```yaml\nenrichment:\n geoip:\n asn_database: []\n geo_database: []\n optional: true\n\n```\n###### Explicit DB-IP paths\n\nOverride auto-detection by pointing to specific DB-IP MMDBs (for example, after running the downloader to a non-standard location).\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n geoip:\n asn_database:\n - /var/cache/netdata/topology-ip-intel/topology-ip-asn.mmdb\n geo_database:\n - /var/cache/netdata/topology-ip-intel/topology-ip-geo.mmdb\n optional: false\n\n```\n{% /details %}\n',troubleshooting:"### Private IPs have empty GeoIP fields\n\nGeoIP databases normally have no country, city, or coordinate entry for RFC 1918 /\nprivate space. The DB-IP-built ASN database tags private ranges so `*_AS_NAME`\nrenders as `AS0 Private IP Address Space`, while geographic fields stay empty and\nprivate addresses do not appear on maps. Declare your internal CIDRs under\n`enrichment.networks` when you want internal labels -- see\n[Static metadata](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\n### Stale databases\n\nThe plugin does not alert on staleness. Check file mtime:\n`ls -la /var/cache/netdata/topology-ip-intel/`. DB-IP Lite is published monthly,\nso a monthly cron of `/usr/sbin/topology-ip-intel-downloader` keeps you on the\nupstream cadence when the downloader is installed; running it more often will not\nproduce fresher data.\n\n\n### Map renders empty over a long time window\n\n`SRC_GEO_CITY`, `DST_GEO_CITY`, `SRC_GEO_LATITUDE`, `DST_GEO_LATITUDE`,\n`SRC_GEO_LONGITUDE`, and `DST_GEO_LONGITUDE` are stored only in the raw journal\ntier; the 1-minute, 5-minute, and 1-hour rollups drop them to keep cardinality\nbounded. A query that auto-falls back to a rollup tier therefore renders an empty\ncity map. Narrow the time range so the query fits the raw tier, or use the\ncountry / state map (those survive into rollups).\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nIP intelligence enriches existing flow records; it does not produce metrics of its own.\nVerify enrichment is working by querying `SRC_COUNTRY` / `DST_COUNTRY` on the\nNetwork Flows view and confirming non-empty values for public IPs.\n\n",integration_type:"flows",id:"netflow-plugin-dbip-DB-IP_IP_Intelligence",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"decapsulation",monitored_instance:{name:"Decapsulation",link:"https://datatracker.ietf.org/doc/html/rfc7348",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["decapsulation","srv6","vxlan","tunnel","overlay","inner packet","dataLinkFrameSection","layer2packetSectionData","ipfix ie 315","netflow v9 ie 104","sampled header"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"netflow"},{plugin_name:"netflow-plugin",module_name:"ipfix"},{plugin_name:"netflow-plugin",module_name:"sflow"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# Decapsulation\n\nPlugin: netflow-plugin\nModule: decapsulation\n\n## Overview\n\nEnrich network flows with inner source and destination endpoints from VXLAN or\nSRv6 encapsulated traffic. Decapsulation rewrites the 5-tuple of a flow record\nfrom the **outer** (tunnel) endpoints to the **inner** (real) endpoints when the\nexporter ships the encapsulated frame bytes alongside the standard fields. Without\nit, every VM-to-VM conversation on a VXLAN fabric or every inner flow on an SRv6\ntransit shows up as the same tunnel pair (hypervisor-to-hypervisor or PE-to-PE),\nwhich tells you nothing about the actual traffic.\n\nTwo encapsulations are supported, selected globally for the plugin. The mode set is\n`none`, `srv6`, or `vxlan`; the default is `none`.\n\n| Mode | Strips | Surfaces |\n|---------|--------------------------------------------------|--------------------------------------------------|\n| `none` | nothing | the outer-header view (default) |\n| `srv6` | IPv6 outer + extension headers + SRH (type 4) | the inner IPv4 (next-header 4) or IPv6 (41) |\n| `vxlan` | outer Eth/IP + UDP/4789 + 8-byte VXLAN header | the inner Ethernet frame, then its L3/L4 |\n\nThe plugin only reaches the decap path when the flow record carries the inner\nframe bytes in a Layer-2 packet section field. Three transport-level paths feed it:\n\n- **NetFlow v9 IE 104** -- `Layer2packetSectionData` (RFC 5102 / RFC 7270).\n- **IPFIX IE 315** -- `dataLinkFrameSection` (RFC 7133).\n- **sFlow `SampledHeader`** -- always present in header-sampling mode.\n\nWhen decap succeeds, the inner 5-tuple replaces the outer one in the resulting\njournal record: `SRC_ADDR`, `DST_ADDR`, `SRC_PORT`, `DST_PORT`, `PROTOCOL`,\n`ETYPE`, `IPTOS`, `IPTTL`, `IPV6_FLOW_LABEL`, `TCP_FLAGS`, `IP_FRAGMENT_ID`,\n`IP_FRAGMENT_OFFSET`, ICMP type/code, MPLS labels (if present), and `BYTES`\n(set to the inner L3 length so byte counts represent inner payload, not outer\noverhead). For VXLAN, `SRC_MAC`, `DST_MAC`, `SRC_VLAN`, `DST_VLAN` come from the\ninner Ethernet frame -- the outer MACs and VLANs are lost. The VXLAN VNI is\nparsed but not exposed as a journal field; pure VNI-based segmentation is\nnot visible.\n\nThe `vxlan` parser matches **only UDP destination port 4789** (RFC 7348).\nVXLAN-GPE on 4790 and any vendor-custom port are not recognised. The `srv6`\nparser walks IPv6 extension headers and the Routing Header type 4 (SRH), then\nsurfaces the inner IPv4 or IPv6 packet pointed to by next-header 4 or 41.\n\nFor the cross-cutting concept (how decap composes with the rest of the enrichment\npipeline, the non-tunnel "drop, do not fall back" semantics, and per-source\ndependence on the L2-section path), see\n[Decapsulation](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\nSet `protocols.decapsulation_mode` in `netflow.yaml` to `srv6` or `vxlan`. The\nplugin then runs the inner-packet parser whenever a flow record carries an L2\nframe section (NetFlow v9 IE 104 / IPFIX IE 315 / sFlow `SampledHeader`). Plain\nNetFlow / IPFIX records that do **not** carry an L2 section pass through\nunchanged regardless of the setting -- so enabling decap will not break a mixed\nstream where only a subset of exporters ship the frame bytes. Enabling decap is\nhalf the work; the exporter must also be configured to ship the inner frame.\n\n\nThis integration is supported on all platforms.\n\nThis integration runs as a single instance per Netdata Agent.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDisabled by default (`decapsulation_mode: none`). You must opt in by setting the mode explicitly.\n\n#### Limits\n\nOne mode is active at a time -- the plugin cannot decap VXLAN and SRv6 simultaneously. If your fleet mixes both, choose the one your L2-section-bearing exporters carry exclusively.\n\n#### Performance Impact\n\nDecapsulation runs in the flow hot path for records carrying L2 frame sections. It adds protocol parsing work and drops L2-section records that do not match the configured tunnel mode.\n',setup:'## Setup\n\n\n### Prerequisites\n\n#### Confirm your exporter ships the L2 frame section\n\nDecapsulation requires the exporter to include the inner frame bytes. Verify\nbefore enabling the mode:\n\n- **NetFlow v9** -- the template must contain field type 104\n (`Layer2packetSectionData`). Capture a packet with `tcpdump`, decode with\n Wireshark, and inspect the template.\n- **IPFIX** -- the template must contain Information Element 315\n (`dataLinkFrameSection`, RFC 7133). Same verification path.\n- **sFlow** -- header sampling is the default for sFlow agents and ships the\n truncated raw packet inside `SampledHeader`. No special configuration is\n required beyond enabling sFlow.\n\nSection length matters. VXLAN over Ethernet over IPv4 fits in roughly 96-128\nbytes of inner-frame capture; SRv6 with a Routing Header type 4 needs more\n(256 bytes is a safe starting point). Truncated captures fail the inner\nparser and the flow is dropped (see the failure modes on the concept page).\n\n\n#### Configure your exporter to emit the L2 section\n\nVendor support varies. Recommended exporter paths are:\n\n- **Juniper inline-monitoring (IPFIX 315)** on platforms supporting\n `services { inline-monitoring { ... } }` -- the template includes\n `datalink-frame-size` and a `maximum-clip-length` controls how much of the\n frame is captured. Reference recipe in the\n [Akvorado documentation](https://demo.akvorado.net/docs/operations#ipfix-315).\n- **sFlow** with header sampling -- supported by Juniper QFX, Arista EOS,\n Mellanox/NVIDIA, MikroTik, and others. Header sampling is the default for\n most agents; verify the agent emits `SampledHeader` rather than only\n `SampledIPv4` / `SampledIPv6` records (the latter do not carry inner\n bytes).\n\nCisco IOS-XE and IOS-XR Flexible NetFlow support for Layer-2 frame\nsections is platform-dependent. Before deploying Cisco decapsulation,\ninspect the exported template and look for IE 104 (v9) or IE 315 (IPFIX).\nDo not copy `collect datalink frame-section` snippets into production\nunless the platform template confirms that the L2 section is exported.\n\n\n\n### Configuration\n\n#### Options\n\nDecapsulation has a single configuration knob -- `protocols.decapsulation_mode`.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| protocols.decapsulation_mode | One of `none` (default), `srv6`, `vxlan`. The mode applies globally; the plugin cannot decode both VXLAN and SRv6 in the same instance. Setting this only affects records that travel through the L2-section path (NetFlow v9 IE 104 / IPFIX IE 315 / sFlow `SampledHeader`); regular flow records are unaffected. When the mode is set and the inner packet does not match the configured tunnel, the record is dropped -- there is no "fall back to outer view". | none | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### VXLAN-based VTEP fleet (decode the inner tenant traffic)\n\nHypervisors emit sFlow with header sampling on the underlay. Every flow\nbetween two VTEP loopbacks decodes to the inner VM-to-VM 5-tuple instead\nof the underlay tunnel pair.\n\n\n```yaml\nprotocols:\n decapsulation_mode: vxlan\n\n```\n###### SRv6 transit network (see the inner service traffic)\n\nProvider-edge routers export IPFIX with IE 315 (`dataLinkFrameSection`)\nvia Juniper inline-monitoring. The plugin walks the IPv6 extension chain,\nstrips the SRH, and surfaces the inner IPv4 or IPv6 5-tuple.\n\n\n{% details open=true summary="Config" %}\n```yaml\nprotocols:\n decapsulation_mode: srv6\n\n```\n{% /details %}\n###### Default (no decapsulation)\n\nOuter-header view only. Tunnel endpoints appear as the source and\ndestination of every flow.\n\n\n{% details open=true summary="Config" %}\n```yaml\nprotocols:\n decapsulation_mode: none\n\n```\n{% /details %}\n',troubleshooting:"### Decap mode set but tunnels still show outer endpoints\n\nThe exporter is not shipping the L2 frame section. Plain NetFlow / IPFIX\nflow records (no IE 104 / IE 315) take the regular path and are unaffected\nby `decapsulation_mode`. Inspect the template -- look for field type 104\non NetFlow v9 or IE 315 on IPFIX. For sFlow, confirm the agent is sending\n`SampledHeader` records rather than only `SampledIPv4` / `SampledIPv6`.\n\n\n### Records disappear after enabling decap\n\nWhen `decapsulation_mode` is set and a record arrives via the L2-section\npath with a payload that does not match the configured tunnel, the record\nis **dropped**. There is no fall back to the outer view. For sFlow with decap on, only `SampledHeader` records are processed;\n`SampledIPv4`, `SampledIPv6`, `SampledEthernet`, `ExtendedSwitch`,\n`ExtendedRouter`, `ExtendedGateway` records are skipped. If the same\nexporter mixes tunnel and non-tunnel traffic on the L2-section path, you\nwill lose the non-tunnel records.\n\n\n### VXLAN on a non-default UDP port goes undetected\n\nThe VXLAN parser matches only UDP destination port 4789. VXLAN-GPE on 4790 and any\nvendor-custom port are not recognised and the record is dropped under\n`decapsulation_mode: vxlan`.\n\n\n### Frame section truncated, inner parsing fails\n\nThe exporter's clip / section size is shorter than the outer headers plus\nthe inner L3/L4 needed to populate the 5-tuple. Increase the section size\n-- 128 bytes for VXLAN over IPv4, 256 bytes or more for SRv6 with extension\nheaders. On Juniper inline-monitoring, the knob is `maximum-clip-length`.\n\n\n### VNI-based segmentation invisible\n\nBytes 4-6 of the VXLAN header (the VNI) are not exposed as journal\nfields. If the inner Ethernet carries a VLAN tag, that VLAN reaches\n`SRC_VLAN` / `DST_VLAN` and works for segmentation -- pure VNI does not.\nNo workaround inside the plugin; either VLAN-tag the inner traffic or\nfilter at query time using the tunnel-endpoint pair before decap.\n\n\n### One mode at a time\n\nThe plugin cannot decode VXLAN and SRv6 in the same instance. If exporter A\nships VXLAN tenant traffic and exporter B ships SRv6 transit traffic, you\nmust choose the mode that matches the traffic this Netdata Agent receives.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nDecapsulation rewrites flow-record fields in place; it produces no metrics of its\nown. Verify on the Network Flows view that `SRC_ADDR` / `DST_ADDR` reflect inner\nendpoints rather than the tunnel pair after enabling the mode.\n\n",integration_type:"flows",id:"netflow-plugin-decapsulation-Decapsulation",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"gcp-ip-ranges",monitored_instance:{name:"GCP IP Ranges",link:"https://cloud.google.com/compute/docs/faq#find_ip_range",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["gcp","google cloud","google","cloud","ip ranges","cloud.json","goog.json","prefix list","network identity"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"aws-ip-ranges"},{plugin_name:"netflow-plugin",module_name:"azure-ip-ranges"},{plugin_name:"netflow-plugin",module_name:"netbox"},{plugin_name:"netflow-plugin",module_name:"generic-ipam"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# GCP IP Ranges\n\nPlugin: netflow-plugin\nModule: gcp-ip-ranges\n\n## Overview\n\nAnnotate network flows with Google ownership, service, and scope labels from\nGoogle public IP ranges. Google publishes its public IP ranges as two static JSON\nfiles served from `gstatic.com`. Wire one of them as a\n`network_source` and the netflow plugin fetches it periodically, transforms each\nprefix entry through your jq filter, and merges the resulting CIDR-keyed records\ninto the network-attributes trie. Flows whose source or destination IP falls\ninside a Google-owned prefix are then labeled with `*_NET_TENANT`,\n`*_NET_REGION`, `*_NET_ROLE`, etc. according to the labels your transform emits.\n\nTwo upstream files exist and they are NOT interchangeable:\n\n- **`https://www.gstatic.com/ipranges/cloud.json`** -- the prefixes used by\n Google Cloud (Compute Engine, GKE, Cloud Run, Cloud Functions, Cloud SQL,\n and the rest of Google Cloud Platform). This is what you almost always want\n for cloud-traffic attribution.\n- **`https://www.gstatic.com/ipranges/goog.json`** -- the broader Google IP\n space, including consumer-facing properties (Search, Gmail, YouTube, Google\n Workspace, Maps, Ads, etc.). It is a strict superset of `cloud.json` but\n **carries no service or region metadata** -- only the bare CIDRs.\n\nFor the cross-cutting network-identity behavior (merge order with GeoIP and\nstatic config, jq output contract, TLS rules, single-page fetch, failure /\nbackoff handling), see\n[Network Identity](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\nPeriodic HTTPS GET against the chosen `gstatic.com` URL. The body is parsed\nas JSON and the configured `transform` (a [jaq](https://github.com/01mf02/jaq)\njq-equivalent expression) runs over the parsed value. Each output object is\nmerged into the network-attributes trie keyed on its `prefix` field; remaining\nfields (`name`, `role`, `site`, `region`, `country`, `state`, `city`, `tenant`,\n`asn`, `asn_name`) populate the corresponding `*_NET_*` flow-record columns\nwhen a flow's IP matches the prefix.\n\nThe upstream files are static JSON snapshots, not pageable APIs -- one fetch\nper cycle is the whole dataset. Each contains a `syncToken` and a\n`creationTime` you can inspect to see when Google last regenerated them.\nThe plugin fetches the full document on each refresh cycle.\n\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDisabled by default. Add an entry under enrichment.network_sources to enable.\n\n#### Limits\n\nOne full GCP prefix document is fetched per refresh. Resource use scales with the number of GCP prefixes selected by your transform and the refresh interval.\n\n#### Performance Impact\n\nOne short HTTPS GET per `interval`, plus a jq pass over the response.\n`cloud.json` is on the order of ~1000 prefix entries and the trie merge\nis bounded by that count; runtime cost is negligible against typical flow\ningest. `goog.json` is similar in size.\n\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Outbound HTTPS to gstatic.com\n\nThe agent host must be able to reach `https://www.gstatic.com/ipranges/cloud.json`\n(or `goog.json`). The files are public CDN-served static JSON; no Google\nCloud project, no service account, no API key, and no IAM permission is\nrequired.\n\n\n#### Pick the right file for your use case\n\n- Use `cloud.json` to attribute traffic to/from **Google Cloud Platform**\n services (Compute Engine VMs, GKE, Cloud Run, Cloud Functions, Cloud\n SQL, BigQuery API, Pub/Sub, GCS endpoints, etc.). Carries `service` and\n `scope` (region) per prefix.\n- Use `goog.json` to also catch **non-cloud Google traffic** (Gmail,\n YouTube, Google Workspace, Search, Ads, Maps, etc.). It carries no\n `service` or `scope` -- you only get "this is Google" attribution.\n- Configure both as separate sources if you want both attributions and\n a deterministic merge order between them. Within network-identity, more-\n specific prefixes win at lookup time, so a `cloud.json` match for a\n Compute Engine prefix will out-rank the broader `goog.json` umbrella.\n\n\n\n### Configuration\n\n#### Options\n\nAdd a named entry under `enrichment.network_sources`. The entry name is\ncosmetic (used in logs and metrics); the labels that end up in flow records\ncome from the fields your `transform` emits.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| url | The Google IP-ranges JSON URL. Use `cloud.json` for GCP services or `goog.json` for the broader Google IP space. | https://www.gstatic.com/ipranges/cloud.json | yes |\n| interval | How often to refetch. Google does not publish a fixed cadence; their documentation states the lists are "published and updated frequently". Daily is plenty for most deployments and avoids hammering the CDN. | 60s (loop floor) | no |\n| timeout | Per-request timeout. | 60s | no |\n| transform | jq expression that converts each entry in `prefixes[]` into an object with a `prefix` field (CIDR string) plus any of the optional label fields (`name`, `role`, `site`, `region`, `country`, `state`, `city`, `tenant`, `asn`, `asn_name`). Required. | . | yes |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### GCP cloud.json -- tag Google Cloud prefixes by region\n\nTags every flow whose IP matches a Google Cloud prefix with\n`*_NET_TENANT="gcp"`, `*_NET_ROLE="google-cloud"`, and\n`*_NET_REGION` set to the GCP scope (`us-central1`, `europe-west1`,\n`global`, etc.). Both `ipv4Prefix` and `ipv6Prefix` entries are\ncovered by the `// (slash-or)` fallback.\n\n\n```yaml\nenrichment:\n network_sources:\n gcp:\n url: "https://www.gstatic.com/ipranges/cloud.json"\n interval: 24h\n timeout: 60s\n transform: |\n .prefixes[] | {\n prefix: (.ipv4Prefix // .ipv6Prefix),\n tenant: "gcp",\n role: "google-cloud",\n region: .scope\n }\n\n```\n###### GCP cloud.json -- IPv4 only\n\nSame as above but skips the IPv6 prefixes (some operators only need\nIPv4 attribution and prefer to keep the trie smaller).\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n network_sources:\n gcp-v4:\n url: "https://www.gstatic.com/ipranges/cloud.json"\n interval: 24h\n transform: |\n .prefixes[]\n | select(.ipv4Prefix)\n | {\n prefix: .ipv4Prefix,\n tenant: "gcp",\n role: "google-cloud",\n region: .scope\n }\n\n```\n{% /details %}\n###### Tag a single GCP region\n\nNarrow the source to one region (here `us-central1`) so you can build\ndashboards that distinguish that region from the rest of GCP.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n network_sources:\n gcp-us-central1:\n url: "https://www.gstatic.com/ipranges/cloud.json"\n interval: 24h\n transform: |\n .prefixes[]\n | select(.scope == "us-central1")\n | {\n prefix: (.ipv4Prefix // .ipv6Prefix),\n tenant: "gcp",\n role: "google-cloud",\n region: "us-central1",\n site: "us-central1"\n }\n\n```\n{% /details %}\n###### Broader Google IP space (goog.json)\n\nUse `goog.json` to also attribute traffic to non-Cloud Google services\n(Gmail, YouTube, Workspace, Search, Ads, Maps). The file has no\n`service` or `scope` fields, so only `tenant` / `role` are set.\nConfigure this **alongside** `cloud.json` if you want both -- the more\nspecific GCP prefixes from `cloud.json` will still win at lookup time.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n network_sources:\n google-all:\n url: "https://www.gstatic.com/ipranges/goog.json"\n interval: 24h\n transform: |\n .prefixes[] | {\n prefix: (.ipv4Prefix // .ipv6Prefix),\n tenant: "google",\n role: "google"\n }\n\n```\n{% /details %}\n',troubleshooting:'### cloud.json vs goog.json -- pick the right one\n\n`cloud.json` is the Google Cloud Platform list (Compute Engine, GKE,\nCloud Run, Cloud SQL, BigQuery, GCS, etc.) and carries `service` plus\n`scope` (region) per entry. `goog.json` is the broader Google list\n(consumer products: Gmail, YouTube, Workspace, Search, Ads, Maps) and\ncarries **only the bare CIDRs** -- no service, no scope, no region.\nUsing `goog.json` as if it were `cloud.json` will give you "this is\nGoogle" attribution but no per-region or per-service breakdown. Most\noperators want `cloud.json`; some configure both as separate sources.\n\n\n### No per-service breakdown from cloud.json\n\nToday every entry in `cloud.json` reports `service: "Google Cloud"` --\nthe file does not split prefixes by individual GCP service (Compute\nEngine vs GKE vs Cloud Run, etc.). Region (`scope`) is the dimension\nyou can actually pivot on. Per-service attribution requires a different\ndata source.\n\n\n### Empty result from the transform is treated as failure\n\nIf the jq expression yields zero objects (for example, an over-narrow\n`select()` that no entry passes), the source backs off as if the fetch\nhad errored. Check the journal for `network-sources` warnings and verify\nyour filter against a saved copy of `cloud.json`.\n\n\n### TLS verification cannot be disabled\n\n`tls.skip_verify: true` (and `tls.verify: false`) are rejected by\nvalidation. `gstatic.com` is publicly trusted so this is rarely an issue\nfor GCP; if you front the URL through an internal proxy with a private\nCA, supply it via `tls.ca_file`.\n\n\n### Update cadence is not contractual\n\nGoogle states the lists are "published and updated frequently" but does\nnot guarantee a fixed cadence. The `syncToken` and `creationTime` keys\nat the top of each file let you check when Google last regenerated it.\nDaily polling is a safe default; sub-hourly is unnecessary.\n\n\n',alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nTags flow records with `SRC_NET_TENANT` / `DST_NET_TENANT`,\n`SRC_NET_REGION` / `DST_NET_REGION`, `SRC_NET_ROLE` / `DST_NET_ROLE`,\nand any other `*_NET_*` fields your transform emits, when the source or\ndestination IP matches a Google prefix. Verify in the Network Flows view via\nthe `*_NET_*` columns. Coordinates (`*_GEO_LATITUDE` / `*_GEO_LONGITUDE`)\ncannot be set from network-identity sources -- use the static `networks`\nblock for those.\n\n",integration_type:"flows",id:"netflow-plugin-gcp-ip-ranges-GCP_IP_Ranges",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"generic-ipam",monitored_instance:{name:"Generic JSON-over-HTTP IPAM",link:"https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["ipam","cmdb","infoblox","bluecat","phpipam","servicenow","custom","prefix list","network identity"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"aws-ip-ranges"},{plugin_name:"netflow-plugin",module_name:"gcp-ip-ranges"},{plugin_name:"netflow-plugin",module_name:"azure-ip-ranges"},{plugin_name:"netflow-plugin",module_name:"netbox"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# Generic JSON-over-HTTP IPAM\n\nPlugin: netflow-plugin\nModule: generic-ipam\n\n## Overview\n\nAnnotate network flows with network-identity labels from any JSON-over-HTTP IPAM\nor CMDB endpoint. The plugin does not care WHO produces the JSON -- it cares\nabout the JSON shape after your `transform` (a jq expression) runs over it.\nExamples: Infoblox WAPI, BlueCat REST API, phpIPAM, ServiceNow CMDB queries, an\ninternal aggregator, a Lambda function, a static file served from S3, a\nhand-rolled CMDB.\n\nThis card is also the **reference description** of how all the other Network\nIdentity cards work under the hood. AWS IP Ranges, GCP IP Ranges, Azure IP Ranges\nand NetBox are all special-cased instances of this same mechanism: each is just\na known URL plus a recommended jq `transform`. Read this card to understand the\ngeneric shape, then read the per-source cards for the URL and transform that fit\nthat specific provider.\n\nFor the full network-identity concept (merge order vs GeoIP and static, what\nfields you can populate, why TLS verification cannot be disabled), see\n[Network Identity](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\nThe plugin issues a periodic HTTP request (GET by default, POST optionally) to\nyour configured URL with the headers you specify, parses the response as JSON,\nruns your `transform` jq expression (compiled by the\n[jaq](https://github.com/01mf02/jaq) library) over the parsed body, and merges\nthe resulting per-prefix rows into the network-attributes trie.\n\nThe same flow applies to every JSON-over-HTTP source; the integration-specific\npart is the URL and the `transform` expression.\n\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDisabled by default. Add a named entry under `enrichment.network_sources` for each IPAM/CMDB/endpoint you want to import.\n\n#### Limits\n\nResource use scales with response size, transform complexity, refresh interval, and the number of emitted prefixes. Empty transform output is treated as a fetch failure.\n\n#### Performance Impact\n\nOne HTTP request per refresh interval plus a jq transform over the response. Runtime enrichment does prefix matching for source and destination IPs, and cost scales with the number of loaded network-source records.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### An HTTP/HTTPS endpoint returning JSON\n\nThe endpoint must respond with a parseable JSON document (the plugin sets\n`Accept: application/json`). Only GET and POST are accepted as request\nmethods. There is no pagination, no\ncursor following, no `Link: rel=next` handling -- the fetch is one-shot\nper cycle. If your IPAM paginates, expose a bulk endpoint or wrap it in a\nserver-side aggregator that returns the full list at one URL.\n\n\n#### Authentication via headers\n\nThe plugin has no built-in OAuth flow, basic-auth helper, or token\nrefresh. Whatever the API needs (bearer tokens, API keys, custom header\nnames, basic-auth realms) goes into the `headers:` map. The header map is\nan arbitrary string-to-string mapping, so any single-shot scheme works.\nFor short-lived tokens, refresh them outside Netdata and reload the\nplugin config.\n\n\n#### A POST endpoint must accept an empty body\n\nWhen `method: POST` is configured, the plugin sends the request with the\nconfigured headers but **no request body**. If your CMDB requires a JSON query body to return prefixes,\nwrap it server-side with an endpoint that accepts GET (or POST with no\nbody) and returns the full prefix set.\n\n\n\n### Configuration\n\n#### Options\n\nAdd a named entry under `enrichment.network_sources`. Unknown keys cause a\nconfig error.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| url | HTTP/HTTPS endpoint. Required (a non-empty URL is enforced by validation). | | yes |\n| method | HTTP method. Only `GET` and `POST` are accepted; anything else fails validation. Note that `POST` is sent with no request body. | GET | no |\n| headers | Map of additional HTTP request headers. Use this for any authentication scheme (`Authorization: Bearer ...`, `token: ...`, custom API-key headers, basic-auth realms encoded explicitly, etc.). Values are passed through verbatim. | {} | no |\n| interval | Refresh cadence. Values below 60 seconds are accepted, but refreshes still run no faster than once per minute. Pick the value that matches how often your IPAM actually changes (5-15 minutes for a curated CMDB; daily for slow-moving prefix lists). | 60s | no |\n| timeout | Per-request timeout. Must be greater than 0. | 60s | no |\n| proxy | Whether to honor the system HTTP/HTTPS proxy environment variables. Set to `false` to bypass the proxy for this source (useful when the IPAM is on the internal network and the proxy is for outbound traffic only). | true | no |\n| tls.enable | Enables custom TLS settings (custom CA bundle, mTLS client certificate). Must be `true` whenever any of `tls.ca_file`, `tls.cert_file`, `tls.key_file` is set. | false | no |\n| tls.verify | Certificate verification toggle. **Setting this to `false` is rejected by validation** -- network-identity data flows directly into security-relevant enrichment, so MITM-able responses are not allowed. Use `tls.ca_file` to trust internal CAs instead. | true | no |\n| tls.skip_verify | Legacy alias for the same intent as `tls.verify: false`. **Setting this to `true` is rejected by validation.** Use `tls.ca_file`. | false | no |\n| tls.ca_file | PEM file with the CA bundle to trust for this endpoint (instead of, or in addition to, the system roots). The recommended way to talk to an internal IPAM behind your own PKI. | | no |\n| tls.cert_file | PEM file with the client certificate, for mTLS-protected endpoints. | | no |\n| tls.key_file | PEM file with the client private key. Required only when the key is in a separate file from the certificate; if omitted, the cert file is reused. `tls.cert_file` must also be set whenever `tls.key_file` is set. | | no |\n| transform | jq expression compiled by [jaq](https://github.com/01mf02/jaq). Receives the entire parsed JSON body once and must produce a **stream of objects**, where each object has at minimum a `prefix` field (a CIDR string -- `IPv4/len` or `IPv6/len`) plus any of the optional attribute fields: `name`, `role`, `site`, `region`, `country`, `state`, `city`, `tenant`, `asn`, `asn_name`. Any field not produced is treated as empty. The transform compiles at startup -- a syntax error fails the config load. An empty stream at runtime is treated as a fetch failure and triggers backoff. | . | yes |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### Flat list with `{prefix, name, env}`\n\nThe simplest IPAM shape: a top-level array of subnets, each with a CIDR\nstring and a few labels. Maps `env` -> tenant and the `name` -> NET_NAME.\n\n\n```yaml\nenrichment:\n network_sources:\n custom_ipam:\n url: "https://ipam.corp.example/api/v1/prefixes"\n headers:\n Authorization: "Bearer abcdef0123456789"\n interval: 5m\n transform: |\n .[] | {\n prefix: .prefix,\n name: .name,\n tenant: .env\n }\n\n```\n###### phpIPAM with API token\n\nphpIPAM exposes `/api/<APP>/subnets/`. Replace `<APP>` with your phpIPAM\napplication name. phpIPAM splits the address into a base and a mask --\nthe transform reassembles them into a CIDR string.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n network_sources:\n phpipam:\n url: "https://ipam.example/api/netdata/subnets/"\n headers:\n token: "abcdef..."\n interval: 10m\n transform: |\n .data[] | {\n prefix: (.subnet + "/" + (.mask|tostring)),\n name: .description,\n tenant: (.custom_tenant // ""),\n site: (.location.name // "")\n }\n\n```\n{% /details %}\n###### Hierarchical CMDB export\n\nA CMDB that returns nested objects -- top-level sites, each with a list\nof vlans, each with a list of prefixes. Flattens to one row per prefix,\ninheriting site and role labels from the parent.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n network_sources:\n cmdb:\n url: "https://cmdb.example/export/networks.json"\n headers:\n Authorization: "Bearer <CMDB_TOKEN>"\n interval: 15m\n transform: |\n .sites[] as $site\n | $site.vlans[] as $vlan\n | $vlan.prefixes[]\n | {\n prefix: .cidr,\n name: .label,\n site: $site.name,\n region: $site.region,\n role: $vlan.role,\n tenant: $vlan.tenant\n }\n\n```\n{% /details %}\n###### Internal IPAM behind mTLS\n\nWhen the IPAM is fronted by your internal PKI and requires a client\ncertificate. `tls.enable: true` activates the custom TLS path; `tls.verify`\nmust remain true (cannot be disabled).\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n network_sources:\n corp_ipam:\n url: "https://ipam.corp/api/networks"\n tls:\n enable: true\n ca_file: /etc/netdata/ssl/corp-ca.pem\n cert_file: /etc/netdata/ssl/netdata.crt\n key_file: /etc/netdata/ssl/netdata.key\n interval: 10m\n transform: |\n .[] | {\n prefix: .cidr,\n name: .label,\n tenant: .tenant\n }\n\n```\n{% /details %}\n###### Source with the system proxy bypassed\n\nWhen the agent host has an outbound HTTP proxy configured but the IPAM\nlives on the internal network and should be reached directly.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n network_sources:\n internal_ipam:\n url: "https://ipam.internal/api/networks"\n proxy: false\n headers:\n Authorization: "Bearer ..."\n interval: 5m\n transform: |\n .[] | { prefix: .cidr, name: .label }\n\n```\n{% /details %}\n',troubleshooting:'### Endpoint requires pagination\n\nThe plugin does not paginate. Either raise the page size in the URL to\ncover your full inventory, or wrap the endpoint with a server-side\naggregator that returns all results at one URL. There is no built-in\n`Link: rel=next` follower.\n\n\n### POST endpoint requires a request body\n\nThe plugin\'s POST request is sent with no body. If your CMDB requires a\nJSON query body to return prefixes, wrap it server-side with an endpoint\nthat accepts GET (or accepts POST with no body) and returns the full prefix\nset.\n\n\n### TLS verification cannot be disabled\n\n`tls.verify: false` and `tls.skip_verify: true` are both rejected during\nconfiguration validation. Use `tls.ca_file` to trust internal CAs. This is\ndeliberate -- network-identity rows feed enrichment used in security\ninvestigations and capacity decisions, where silently accepting MITM-able\nresponses would corrupt every downstream analysis.\n\n\n### Empty result back-off\n\nAn empty stream from the jq transform is treated as a fetch failure.\nThe source then backs\noff exponentially -- starting at `interval / 10` (floor 1s), doubling on\neach consecutive failure, and capped at the regular `interval`. On the\nnext successful non-empty fetch the cadence resets to `interval`. If your\nIPAM legitimately has no prefixes (a quiet state), have the upstream\nreturn at least one synthetic prefix so the source does not back off.\n\n\n### Refresh appears slower than configured\n\nThe fetch loop floors the configured `interval` at 60 seconds. Configuring\n`interval: 5s` does not produce a 5-second loop -- it produces a 60-second\nloop. Pick a value at or above 60s that matches how often your IPAM\nactually changes (5-15 minutes is typical for a curated CMDB).\n\n\n### Unknown config keys cause errors\n\nThe config struct uses `deny_unknown_fields`. Typos like `headres:` or a\nnon-existent option fail config load with a parse error rather than being\nsilently ignored. Check the `enrichment.network_sources.<name>` schema\nlisted under "Config options".\n\n\n### JSON parse errors are silent in the dashboard\n\nDecode failures (HTTP error, JSON parse error, jq runtime error, schema\nmismatch on `prefix`) are logged but do not surface in the dashboard.\nWatch the Netdata journal for warnings:\n`journalctl --namespace netdata | grep network_sources`.\n\n\n### Prefer explicit authorization headers over URL credentials\n\nURLs with embedded credentials (`https://user:pass@host`) are converted to\nHTTP Basic authentication by the HTTP client. Prefer `headers:` for clarity\nand to avoid storing credentials in URLs -- e.g.\n`headers: { Authorization: "Basic dXNlcjpwYXNz" }` for HTTP basic-auth.\n\n\n',alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nTags flow records with whatever labels your jq transform emits -- typically\n`*_NET_NAME`, `*_NET_TENANT`, `*_NET_SITE`, `*_NET_ROLE`, `*_NET_REGION`. Verify\non the Network Flows view via the `*_NET_*` columns.\n\n",integration_type:"flows",id:"netflow-plugin-generic-ipam-Generic_JSON-over-HTTP_IPAM",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"ip2location",monitored_instance:{name:"IP2Location LITE IP-Country",link:"https://lite.ip2location.com/database/db1-ip-country?lang=en_US",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["ip2location","ip2location lite","geoip","country","csv","ip intelligence","flow enrichment"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"dbip"},{plugin_name:"netflow-plugin",module_name:"maxmind"},{plugin_name:"netflow-plugin",module_name:"iptoasn"},{plugin_name:"netflow-plugin",module_name:"custom-mmdb"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# IP2Location LITE IP-Country\n\nPlugin: netflow-plugin\nModule: ip2location\n\n## Overview\n\nEnrich network flows with country codes from the IP2Location LITE\nIP-Country database. The supported downloader source is the DB1 LITE CSV ZIP\n(`IP2LOCATION-LITE-DB1.CSV.ZIP`), whose documented fields are\n`ip_from`, `ip_to`, `country_code`, and `country_name`.\n\nIP2Location DB1 is country-only. It does not provide ASN, AS organization,\nstate, city, latitude, or longitude. Pair it with CAIDA, IPtoASN, DB-IP, or\nMaxMind ASN data when you also need AS fields.\n\nFor the IP-intelligence mechanism (lookup order, MMDB composition, refresh,\nprovider chains), see\n[IP Intelligence](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\nThe netflow plugin reads MMDB files only. Use Netdata's\n`topology-ip-intel-downloader` to fetch the IP2Location LITE CSV ZIP, convert\nthe ranges to `topology-ip-geo.mmdb`, and write the file into the standard\nauto-detected cache directory. The plugin reloads the generated MMDB\nautomatically when the file changes.\n\n\nThis integration is supported on all platforms.\n\nThis integration runs as a single instance per Netdata Agent.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nNot used by the default install. After the downloader writes `topology-ip-geo.mmdb` into the standard cache path, the plugin auto-detects the generated file.\n\n#### Limits\n\nCountry only. No ASN, AS name, state, city, latitude, or longitude are available from this source.\n\n#### Performance Impact\n\nLookups are local MMDB reads after conversion. Memory use is mostly the mapped database file and the kernel page cache needed to keep active pages hot.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Downloader with IP2Location LITE support\n\nRun the bundled downloader when available. Packaged 32-bit installs do not\ninclude this binary:\n\n```bash\nsudo /usr/sbin/topology-ip-intel-downloader \\\n --asn iptoasn:combined \\\n --geo ip2location:country-lite\n```\n\n`ip2location:country-lite` is valid only for `--geo`. The example pairs it\nwith IPtoASN so the resulting cache contains both AS and country fields.\n\n\n#### IP2Location LITE license\n\nReview the IP2Location LITE terms before redistributing the data or\ngenerated derivative files. The plugin consumes only the generated MMDB and\ndoes not contact IP2Location during flow decoding.\n\n\n\n### Configuration\n\n#### Options\n\nOnce the downloader has produced an IP2Location-derived geo MMDB in the cache\ndirectory, the plugin auto-detects it. To pin paths explicitly, set\n`enrichment.geoip.geo_database` and keep `asn_database` pointed at your chosen\nASN provider.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enrichment.geoip.asn_database | Optional ASN MMDB paths supplied by another provider. | [] | no |\n| enrichment.geoip.geo_database | Path to the IP2Location-derived geo MMDB. Empty = auto-detect from the cache directory. | [] | no |\n| enrichment.geoip.optional | When true, missing or unreadable MMDBs are warnings, not fatal at startup. | false (true when auto-detected) | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### After running the downloader with IPtoASN ASN and IP2Location country\n\nAuto-detection picks up both generated cache files.\n\n```yaml\nenrichment:\n geoip:\n asn_database: []\n geo_database: []\n optional: true\n\n```\n###### Explicit IP2Location country path\n\nPin IP2Location for country and keep a separate ASN source.\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n geoip:\n asn_database:\n - /var/cache/netdata/topology-ip-intel/topology-ip-asn.mmdb\n geo_database:\n - /var/cache/netdata/topology-ip-intel/topology-ip-geo.mmdb\n optional: false\n\n```\n{% /details %}\n',troubleshooting:"### ASN fields are empty\n\nIP2Location DB1 is country-only. Configure `--asn iptoasn:combined`,\n`--asn caida:prefix2as`, or another ASN provider in the downloader.\n\n\n### City or coordinates are empty\n\nThe DB1 LITE source does not include city, state, latitude, or longitude.\nUse DB-IP city-lite, MaxMind GeoLite2 City, GeoIP2 City, or a custom MMDB\nwhen those fields are required.\n\n\n### Stale country data\n\nCheck the upstream IP2Location LITE page for the current version and next\nupdate date, then schedule the downloader accordingly. The plugin reloads\nthe generated MMDB in place when the file signature changes.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nEnriches flow records with country codes; produces no metrics of its own.\nVerify on the Network Flows view via `SRC_COUNTRY` and `DST_COUNTRY`.\n\n",integration_type:"flows",id:"netflow-plugin-ip2location-IP2Location_LITE_IP-Country",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"ipdeny",monitored_instance:{name:"IPDeny Country Zones",link:"https://www.ipdeny.com/ipblocks/",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["ipdeny","country zones","geoip","country","cidr","ip intelligence","flow enrichment"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"dbip"},{plugin_name:"netflow-plugin",module_name:"maxmind"},{plugin_name:"netflow-plugin",module_name:"iptoasn"},{plugin_name:"netflow-plugin",module_name:"custom-mmdb"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# IPDeny Country Zones\n\nPlugin: netflow-plugin\nModule: ipdeny\n\n## Overview\n\nEnrich network flows with country codes from IPDeny country zone files.\nIPDeny publishes country-specific CIDR lists and an `all-zones.tar.gz`\narchive. The Netdata downloader reads the IPv4 country-zone archive and maps\neach `<country>.zone` member to that ISO country code.\n\nIPDeny Country Zones are country-only and the current built-in source is IPv4\nonly. They do not provide ASN, AS organization, state, city, latitude, or\nlongitude. Pair IPDeny with another ASN source when you also need AS fields,\nand use DB-IP, MaxMind, IP2Location, or a custom MMDB when IPv6 country\ncoverage is required.\n\nFor the IP-intelligence mechanism (lookup order, MMDB composition, refresh,\nprovider chains), see\n[IP Intelligence](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\nThe netflow plugin reads MMDB files only. Use Netdata's\n`topology-ip-intel-downloader` to fetch IPDeny's HTTPS country-zone archive,\nconvert the CIDR lists to `topology-ip-geo.mmdb`, and write the file into the\nstandard auto-detected cache directory. The plugin reloads the generated MMDB\nautomatically when the file changes.\n\n\nThis integration is supported on all platforms.\n\nThis integration runs as a single instance per Netdata Agent.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nNot used by the default install. After the downloader writes `topology-ip-geo.mmdb` into the standard cache path, the plugin auto-detects the generated file.\n\n#### Limits\n\nCountry-only IPv4 source. No ASN, AS name, IPv6 coverage, state, city, latitude, or longitude are available from this built-in source.\n\n#### Performance Impact\n\nLookups are local MMDB reads after conversion. Memory use is mostly the mapped database file and the kernel page cache needed to keep active pages hot.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Downloader with IPDeny support\n\nRun the bundled downloader when available. Packaged 32-bit installs do not\ninclude this binary:\n\n```bash\nsudo /usr/sbin/topology-ip-intel-downloader \\\n --asn iptoasn:combined \\\n --geo ipdeny:country-zones\n```\n\n`ipdeny:country-zones` is valid only for `--geo`. The example pairs it\nwith IPtoASN so the resulting cache contains both AS and country fields.\n\n\n#### IPDeny usage policy\n\nIPDeny publishes usage limits and copyright policy on its site. Review\nthose terms before mirroring, redistributing, or downloading more often\nthan needed.\n\n\n\n### Configuration\n\n#### Options\n\nOnce the downloader has produced an IPDeny-derived geo MMDB in the cache\ndirectory, the plugin auto-detects it. To pin paths explicitly, set\n`enrichment.geoip.geo_database` and keep `asn_database` pointed at your chosen\nASN provider.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enrichment.geoip.asn_database | Optional ASN MMDB paths supplied by another provider. | [] | no |\n| enrichment.geoip.geo_database | Path to the IPDeny-derived geo MMDB. Empty = auto-detect from the cache directory. | [] | no |\n| enrichment.geoip.optional | When true, missing or unreadable MMDBs are warnings, not fatal at startup. | false (true when auto-detected) | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### After running the downloader with IPtoASN ASN and IPDeny country\n\nAuto-detection picks up both generated cache files.\n\n```yaml\nenrichment:\n geoip:\n asn_database: []\n geo_database: []\n optional: true\n\n```\n###### Explicit IPDeny country path\n\nPin IPDeny for country and keep a separate ASN source.\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n geoip:\n asn_database:\n - /var/cache/netdata/topology-ip-intel/topology-ip-asn.mmdb\n geo_database:\n - /var/cache/netdata/topology-ip-intel/topology-ip-geo.mmdb\n optional: false\n\n```\n{% /details %}\n',troubleshooting:"### IPv6 country fields are empty\n\nThe current built-in IPDeny downloader source uses the IPv4\n`all-zones.tar.gz` archive. Use DB-IP, MaxMind, IP2Location, or a custom\nMMDB if IPv6 country enrichment is required.\n\n\n### ASN fields are empty\n\nIPDeny zone files carry country CIDRs only. Configure a separate ASN\nprovider in the downloader.\n\n\n### Download blocked or rate-limited\n\nCheck IPDeny's usage limits and retry later. The plugin continues using the\nlast generated MMDB file until the downloader publishes a replacement.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nEnriches IPv4 flow records with country codes; produces no metrics of its own.\nVerify on the Network Flows view via `SRC_COUNTRY` and `DST_COUNTRY`.\n\n",integration_type:"flows",id:"netflow-plugin-ipdeny-IPDeny_Country_Zones",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"ipfix",monitored_instance:{name:"IPFIX",link:"https://datatracker.ietf.org/doc/html/rfc7011",categories:["network-performance-monitoring.flows.sources"],icon_filename:"network-wired.svg"},keywords:["ipfix","netflow v10","flows","network flows","flow collector","rfc 7011"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"netflow"},{plugin_name:"netflow-plugin",module_name:"sflow"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# IPFIX\n\nPlugin: netflow-plugin\nModule: ipfix\n\n## Overview\n\nCollect network flow records from IPFIX (NetFlow v10) exporters. IPFIX extends\nNetFlow v9 with variable-length fields, vendor-specific information elements,\nand template withdrawal. Each record exposes the same core fields as NetFlow plus\nany additional IEs the exporter provides.\n\nFor full documentation including vendor configuration examples (Cisco, Juniper, Arista,\nASA NSEL), biflow handling, sampling caveats, and verification steps, see the\n[Network Flows Overview](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/).\n\n\nThe plugin uses the same configurable UDP listener set as NetFlow. IPFIX messages are identified by\nversion number 10 and decoded using cached templates. Decoded records are enriched and\nappended to disk-backed journal tiers.\n\n\nThis integration is supported on all platforms.\n\nThis integration runs as a single instance per Netdata Agent.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe stock configuration enables the plugin and listens on the configured UDP ports.\n\n#### Limits\n\nOperational limits are driven by sustained flow records/s, exporter batching, template churn, cardinality, retention, storage speed, and enrichment. On modern hardware with fast storage, plan around 50k-100k sustained flow records/s per well-provisioned agent for the full raw + rollup pipeline, provided the underlying disks can sustain the required journal write activity; use distributed agents for larger deployments.\n\n#### Performance Impact\n\nDisabled until exporters send traffic. Once active, CPU and disk I/O scale with flow-record rate, template volume, and cardinality; size retention and storage from observed flow records/s.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### IPFIX-capable exporter\n\nA router, switch, or firewall configured to export IPFIX datagrams to the\nNetdata agent\'s UDP listener.\n\n\n\n### Configuration\n\n#### Options\n\nIPFIX shares the same `netflow.yaml` configuration file as NetFlow and sFlow.\nEnable IPFIX via the `protocols.ipfix` option.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| listener.listen | UDP listener endpoints for NetFlow/IPFIX and sFlow datagrams. YAML accepts either a scalar endpoint or a list of endpoints; CLI accepts repeated `--netflow-listen` flags or comma-delimited values. | 0.0.0.0:2055, 0.0.0.0:6343 | no |\n| protocols.ipfix | Enable IPFIX decoding. | yes | no |\n| journal.journal_dir | Directory for journal files (relative to NETDATA_CACHE_DIR). | flows | no |\n| journal.tiers.<tier>.size_of_journal_files | Per-tier hard size cap. Replace `<tier>` with `raw`, `minute_1`, `minute_5`, or `hour_1`. Set to `null` for time-only retention. | 10GB | no |\n| journal.tiers.<tier>.duration_of_journal_files | Per-tier maximum age. Replace `<tier>` with `raw`, `minute_1`, `minute_5`, or `hour_1`. The default `null` disables time-based eviction; set a duration to add an age cap. | null | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### IPFIX collection\n\nListen for IPFIX records on the common NetFlow/IPFIX port.\n\n```yaml\nenabled: true\nlistener:\n listen: "0.0.0.0:2055"\nprotocols:\n v5: false\n v7: false\n v9: false\n ipfix: true\n sflow: false\n\n```\n',troubleshooting:"### Verifying flow data is arriving and diagnosing failures\n\nSee [Troubleshooting](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/troubleshooting) for\nthe full diagnostic recipe. For IPFIX specifically, watch the `template_errors` dimension\non `netflow.input_packets` -- IPFIX is template-driven and data records arriving before\ntheir templates are dropped. See also\n[Validation and Data Quality](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/validation-and-data-quality).\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nNetwork flow data is stored as journal records, not as traditional metrics.\nUse the Network Flows view in the Netdata dashboard to query and visualize flow data.\nFor the full list of fields and the per-protocol availability matrix, see the\n[Field Reference](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/field-reference).\nIPFIX biflow records are emitted as two separate flow records (forward + reverse).\n\n",integration_type:"flows",id:"netflow-plugin-ipfix-IPFIX",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"ipip",monitored_instance:{name:"IPIP Country Database",link:"https://en.ipip.net/about.html",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["ipip","17mon","geoip","country","ip intelligence","flow enrichment"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"dbip"},{plugin_name:"netflow-plugin",module_name:"maxmind"},{plugin_name:"netflow-plugin",module_name:"iptoasn"},{plugin_name:"netflow-plugin",module_name:"custom-mmdb"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# IPIP Country Database\n\nPlugin: netflow-plugin\nModule: ipip\n\n## Overview\n\nEnrich network flows with country codes from IPIP's country database. The\nsupported downloader source fetches IPIP's `country.zip` archive and reads the\n`country.txt` file, where each line maps a prefix to a country token.\n\nIPIP Country is country-only. The current `country.zip` source validated during\nthis work contained IPv4 prefixes only. It does not provide ASN, AS\norganization, state, city, latitude, or longitude. Pair IPIP with another ASN\nsource when you also need AS fields, and use DB-IP, MaxMind, IP2Location, or a\ncustom MMDB when IPv6 country coverage is required.\n\nFor the IP-intelligence mechanism (lookup order, MMDB composition, refresh,\nprovider chains), see\n[IP Intelligence](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\nThe netflow plugin reads MMDB files only. Use Netdata's\n`topology-ip-intel-downloader` to fetch the IPIP country ZIP, convert the\nprefix list to `topology-ip-geo.mmdb`, and write the file into the standard\nauto-detected cache directory. The plugin reloads the generated MMDB\nautomatically when the file changes.\n\n\nThis integration is supported on all platforms.\n\nThis integration runs as a single instance per Netdata Agent.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nNot used by the default install. After the downloader writes `topology-ip-geo.mmdb` into the standard cache path, the plugin auto-detects the generated file.\n\n#### Limits\n\nCountry-only source. The currently validated `country.zip` payload is IPv4-only and carries no ASN, AS name, state, city, latitude, or longitude.\n\n#### Performance Impact\n\nLookups are local MMDB reads after conversion. Memory use is mostly the mapped database file and the kernel page cache needed to keep active pages hot.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### Downloader with IPIP support\n\nRun the bundled downloader when available. Packaged 32-bit installs do not\ninclude this binary:\n\n```bash\nsudo /usr/sbin/topology-ip-intel-downloader \\\n --asn iptoasn:combined \\\n --geo ipip:country\n```\n\n`ipip:country` is valid only for `--geo`. The example pairs it with\nIPtoASN so the resulting cache contains both AS and country fields.\n\n\n#### IPIP data terms\n\nReview IPIP\'s current terms before redistributing the data or generated\nderivative files. The plugin consumes only the generated MMDB and does not\ncontact IPIP during flow decoding.\n\n\n\n### Configuration\n\n#### Options\n\nOnce the downloader has produced an IPIP-derived geo MMDB in the cache\ndirectory, the plugin auto-detects it. To pin paths explicitly, set\n`enrichment.geoip.geo_database` and keep `asn_database` pointed at your chosen\nASN provider.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enrichment.geoip.asn_database | Optional ASN MMDB paths supplied by another provider. | [] | no |\n| enrichment.geoip.geo_database | Path to the IPIP-derived geo MMDB. Empty = auto-detect from the cache directory. | [] | no |\n| enrichment.geoip.optional | When true, missing or unreadable MMDBs are warnings, not fatal at startup. | false (true when auto-detected) | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### After running the downloader with IPtoASN ASN and IPIP country\n\nAuto-detection picks up both generated cache files.\n\n```yaml\nenrichment:\n geoip:\n asn_database: []\n geo_database: []\n optional: true\n\n```\n###### Explicit IPIP country path\n\nPin IPIP for country and keep a separate ASN source.\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n geoip:\n asn_database:\n - /var/cache/netdata/topology-ip-intel/topology-ip-asn.mmdb\n geo_database:\n - /var/cache/netdata/topology-ip-intel/topology-ip-geo.mmdb\n optional: false\n\n```\n{% /details %}\n',troubleshooting:"### IPv6 country fields are empty\n\nThe currently validated IPIP `country.zip` source contains IPv4 prefixes.\nUse DB-IP, MaxMind, IP2Location, or a custom MMDB if IPv6 country\nenrichment is required.\n\n\n### ASN fields are empty\n\nIPIP country data carries country prefixes only. Configure a separate ASN\nprovider in the downloader.\n\n\n### City or coordinates are empty\n\nThe supported IPIP source is country-only. Use DB-IP city-lite, MaxMind\nGeoLite2 City, GeoIP2 City, or a custom MMDB for richer geo fields.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nEnriches flow records with country codes; produces no metrics of its own.\nVerify on the Network Flows view via `SRC_COUNTRY` and `DST_COUNTRY`.\n\n",integration_type:"flows",id:"netflow-plugin-ipip-IPIP_Country_Database",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"iptoasn",monitored_instance:{name:"IPtoASN",link:"https://iptoasn.com/",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["iptoasn","asn","bgp","public asn","public domain","pddl","ip intelligence"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"dbip"},{plugin_name:"netflow-plugin",module_name:"maxmind"},{plugin_name:"netflow-plugin",module_name:"caida-prefix2as"},{plugin_name:"netflow-plugin",module_name:"ip2location"},{plugin_name:"netflow-plugin",module_name:"ipdeny"},{plugin_name:"netflow-plugin",module_name:"ipip"},{plugin_name:"netflow-plugin",module_name:"custom-mmdb"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# IPtoASN\n\nPlugin: netflow-plugin\nModule: iptoasn\n\n## Overview\n\nEnrich network flows with public ASN and country context from IPtoASN\nBGP-derived datasets. [IPtoASN](https://iptoasn.com/) is a free, public-domain\nfeed of IP-to-ASN mappings. The upstream publishes its dataset\nunder the [Public Domain Dedication and License (PDDL)](https://opendatacommons.org/licenses/pddl/)\n(see [iptoasn.com](https://iptoasn.com/) -- "Frequently updated, public domain")\nand rebuilds it hourly, making it the highest-cadence and lowest-friction public\nASN source available. Use it as a free, open alternative to MaxMind ASN data when\nlicense cost or terms matter.\n\nIPtoASN\'s `ip2asn-combined` artifact contains five tab-separated columns:\n`range_start`, `range_end`, `AS_number`, `country_code`, and `AS_description`\n(see [iptoasn.com](https://iptoasn.com/) for the format reference). So\nalthough IPtoASN is often described as "ASN-only", the feed also carries an\nISO 3166 country code per range and the Netdata downloader exposes both as\nASN + geo MMDBs. Pair with DB-IP or MaxMind when you also need state, city,\nor coordinates.\n\nFor the IP-intelligence mechanism (lookup order, MMDB composition, refresh,\nprovider chains), see\n[IP Intelligence](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\nThe Netdata plugin reads MMDB only. IPtoASN ships gzipped TSV\n(`https://iptoasn.com/data/ip2asn-combined.tsv.gz`), so the TSV must be\nconverted to MMDB before the plugin can use it.\n\nWhen available, Netdata provides a converter for this exact purpose: the\n`topology-ip-intel-downloader` Go tool fetches the upstream TSV, parses it,\nand emits MMDB files the plugin auto-detects. This is\na separate operator step (cron); the plugin itself does no fetching or\nconversion. Packaged 32-bit installs ship the stock MMDB payload but do not include\nthe downloader binary. If you prefer not to use the bundled tool, any third-party\nIPtoASN-to-MMDB converter that produces a standard\n[MaxMind DB](https://maxmind.github.io/MaxMind-DB/) with `iso_code`,\n`autonomous_system_number`, and `autonomous_system_organization` fields\nwill also work with the Custom MMDB integration.\n\n\nThis integration is supported on all platforms.\n\nThis integration runs as a single instance per Netdata Agent.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nNot auto-detected as the default ASN source -- the plugin auto-detects\nDB-IP MMDBs in the cache directory at startup\n(see [IP Intelligence](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment)).\nTo use IPtoASN, run `topology-ip-intel-downloader` when available to produce IPtoASN-derived\nMMDBs (the downloader writes to the same cache paths the plugin scans,\nso once present they are picked up automatically on the 30-second\nfile-signature check).\n\n\n#### Limits\n\nIPtoASN provides AS number and country-level data only. It does not provide city, coordinates, or rich organization names unless you layer another MMDB source.\n\n#### Performance Impact\n\nLookups are local MMDB reads after the downloader converts the TSV feed. Memory use is mostly the mapped database files and the kernel page cache needed to keep active pages hot.\n',setup:'## Setup\n\n\n### Prerequisites\n\n#### Run the downloader with IPtoASN as ASN source\n\nWhen available, the downloader knows how to fetch the upstream TSV and convert\nit to MMDB. Packaged 32-bit installs do not include this binary:\n\n```bash\nsudo /usr/sbin/topology-ip-intel-downloader \\\n --asn iptoasn:combined \\\n --geo iptoasn:combined\n```\n\n`iptoasn:combined` is valid for both `--asn` and `--geo` because the\nupstream TSV carries both AS data and country. If you\nwant richer geographic data (state, city, coordinates), pair IPtoASN\nASN with DB-IP or MaxMind geo:\n\n```bash\nsudo /usr/sbin/topology-ip-intel-downloader \\\n --asn iptoasn:combined \\\n --geo dbip:city-lite\n```\n\nIPtoASN rebuilds hourly upstream, but a daily cron is sufficient for\nflow enrichment (ASN ownership rarely changes within a single day).\nDo not exceed hourly -- you only get a fresh dataset once an hour\nregardless.\n\n\n\n### Configuration\n\n#### Options\n\nOnce the downloader has produced IPtoASN-derived MMDB files in the cache\ndirectory, the plugin auto-detects them. To pin the path explicitly, set\n`enrichment.geoip.asn_database` (and `geo_database` when you also want\nthe country data IPtoASN provides).\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enrichment.geoip.asn_database | Path to the IPtoASN-derived ASN MMDB. Empty = auto-detect from cache directory. | [] | no |\n| enrichment.geoip.geo_database | Path to the IPtoASN-derived geo MMDB (country only). Empty = auto-detect; or point at a richer DB-IP / MaxMind geo MMDB for state/city/coordinates. | [] | no |\n| enrichment.geoip.optional | When true, missing or unreadable MMDBs are warnings, not fatal at startup. | false (true when auto-detected) | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### After running the downloader with IPtoASN\n\nAuto-detection picks up the cache copy. Both ASN and country come from IPtoASN.\n\n```yaml\nenrichment:\n geoip:\n asn_database: []\n geo_database: []\n optional: true\n\n```\n###### Explicit IPtoASN paths (ASN + country only)\n\nPin the IPtoASN-derived MMDBs explicitly. Country only -- no\nstate/city. Use the DB-IP or MaxMind integration cards for richer\ngeographic enrichment.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n geoip:\n asn_database:\n - /var/cache/netdata/topology-ip-intel/topology-ip-asn.mmdb\n geo_database:\n - /var/cache/netdata/topology-ip-intel/topology-ip-geo.mmdb\n optional: false\n\n```\n{% /details %}\n###### IPtoASN ASN + DB-IP city-lite geo\n\nFree, fully public-domain ASN combined with DB-IP city-lite for\nstate/city/coordinates. Run the downloader as\n`topology-ip-intel-downloader --asn iptoasn:combined --geo dbip:city-lite`\nand let auto-detection handle the rest.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n geoip:\n asn_database: []\n geo_database: []\n optional: true\n\n```\n{% /details %}\n',troubleshooting:"### ASN names not appearing\n\nIPtoASN's `AS_description` column is sometimes empty for less-common\nASNs (the upstream derives names from RIRs and the chain occasionally\nhas gaps). When that happens the plugin renders the AS as `AS{n}` with\nno organisation. This is data-source-level, not a plugin issue. If richer AS-name\ncoverage matters, layer a MaxMind GeoLite2-ASN MMDB after IPtoASN in\n`asn_database` -- per-field \"last database with a non-empty value\nwins\" composition (see\n[IP Intelligence](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment))\nmeans MaxMind names override IPtoASN's empty entries.\n\n\n### Country empty although IPtoASN was selected\n\nIPtoASN's combined TSV publishes country only when it is known. Public\nIPs that the upstream cannot attribute will have an empty\n`*_COUNTRY`. If you need broader country coverage, point\n`geo_database` at a DB-IP or MaxMind country MMDB instead -- the\nplugin reads any combination.\n\n\n### Outdated ASN attribution\n\nIPtoASN rebuilds hourly upstream. A daily cron of the downloader is\nthe recommended cadence for flow enrichment; weekly is too slow\nbecause BGP-driven prefix re-assignments will land in the dataset\nwithin hours but not in your cache until the next download. The\nplugin reloads MMDB files in place every 30 seconds when the file\nsignature changes, so a fresh file lands without restart.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nEnriches flow records with AS numbers, AS names, and country codes; produces\nno metrics of its own. Verify on the Network Flows view via `*_AS_NAME` and\n`*_COUNTRY` columns.\n\n",integration_type:"flows",id:"netflow-plugin-iptoasn-IPtoASN",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"maxmind",monitored_instance:{name:"MaxMind GeoIP / GeoLite2",link:"https://www.maxmind.com/",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["maxmind","geoip2","geolite2","geoip","asn","mmdb","ip intelligence","flow enrichment"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"dbip"},{plugin_name:"netflow-plugin",module_name:"iptoasn"},{plugin_name:"netflow-plugin",module_name:"caida-prefix2as"},{plugin_name:"netflow-plugin",module_name:"ip2location"},{plugin_name:"netflow-plugin",module_name:"ipdeny"},{plugin_name:"netflow-plugin",module_name:"ipip"},{plugin_name:"netflow-plugin",module_name:"custom-mmdb"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# MaxMind GeoIP / GeoLite2\n\nPlugin: netflow-plugin\nModule: maxmind\n\n## Overview\n\nEnrich network flows with ASN and geographic context from MaxMind GeoIP /\nGeoLite2 MMDB databases. MaxMind is the originator of the MMDB binary format and\nthe canonical commercial source for geo and ASN data. The netflow plugin reads\nMaxMind MMDB files directly; they are interchangeable with other MMDB providers\n(DB-IP, custom builds).\n\nTwo product lines are supported:\n\n- **GeoLite2** (free): requires a free MaxMind account and a license key; users\n must accept the GeoLite2 EULA, which includes an attribution requirement. See\n <https://dev.maxmind.com/geoip/geolite2-free-geolocation-data>.\n- **GeoIP2** (commercial): paid subscription with the same license-key download\n mechanism but higher accuracy and more frequent updates. See\n <https://www.maxmind.com/en/geoip2-databases>.\n\nEach lookup populates the same flow-record fields as DB-IP: `SRC_COUNTRY`,\n`DST_COUNTRY`, `SRC_GEO_STATE`, `DST_GEO_STATE`, `SRC_GEO_CITY`, `DST_GEO_CITY`,\n`SRC_GEO_LATITUDE`, `DST_GEO_LATITUDE`, `SRC_GEO_LONGITUDE`, `DST_GEO_LONGITUDE`,\n`SRC_AS_NAME`, and `DST_AS_NAME`. Country and state survive into all rollup tiers;\ncity and lat/lon are **raw-tier-only**. Rollup tiers keep only the\nbounded-cardinality geography columns.\n\nFor the cross-cutting concept (resolver poll loop, multi-database composition,\nASN provider chain, failure-modes table), see\n[IP Intelligence](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\nYou can use MaxMind in two ways:\n\n- Use `geoipupdate` (MaxMind's official downloader, configured with your account\n ID + license key) or direct HTTPS download, then point `asn_database` and\n `geo_database` at the resulting MaxMind MMDB files.\n- Use Netdata's `topology-ip-intel-downloader` with `MAXMIND_LICENSE_KEY` in\n the environment to fetch GeoLite2 ASN and GeoLite2 Country CSV sources and\n generate the standard Netdata topology MMDB files.\n\nMaxMind requires authentication for all downloads -- there is no anonymous\naccess. Commercial GeoIP2 databases and richer GeoLite2 City files should still\nbe maintained with `geoipupdate` or direct paths when you want city and\ncoordinate enrichment.\n\nOnce the files are on disk, point `asn_database` and `geo_database` at their\npaths in `netflow.yaml`. The plugin reloads on file change automatically -- a\nsuccessful `geoipupdate` run causes the plugin to swap readers within ~30s, no\nrestart needed.\n\n\nThis integration is supported on all platforms.\n\nThis integration runs as a single instance per Netdata Agent.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nArbitrary MaxMind paths are not auto-detected; configure `enrichment.geoip.asn_database` and `enrichment.geoip.geo_database` for those. MaxMind-derived topology MMDB files generated by `topology-ip-intel-downloader` are auto-detected because they use the standard Netdata cache paths.\n\n#### Limits\n\nLookup coverage, fields, license terms, and refresh cadence depend on the MaxMind database edition you configure. The plugin itself does no network fetching; the downloader is an operator-run refresh step.\n\n#### Performance Impact\n\nLookups are local MMDB reads with no per-flow network call. Memory use is mostly the mapped database files and the kernel page cache needed to keep active pages hot.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### MaxMind account and license key\n\nMaxMind does not allow anonymous downloads. Required for both GeoLite2 (free)\nand GeoIP2 (paid):\n\n1. Sign up at <https://www.maxmind.com/en/geolite2/signup> (GeoLite2) or\n purchase a GeoIP2 subscription.\n2. Generate a license key under "Account > Manage License Keys".\n3. Note your account ID (visible on the same account page).\n\n\n#### Install and configure geoipupdate\n\n`geoipupdate` is MaxMind\'s official downloader. Install it from your distro\n(`apt install geoipupdate`, `dnf install geoipupdate`) or download from\n<https://github.com/maxmind/geoipupdate/releases>.\n\nEdit `/etc/GeoIP.conf`:\n\n```ini\nAccountID YOUR_ACCOUNT_ID\nLicenseKey YOUR_LICENSE_KEY\n# GeoLite2 (free):\nEditionIDs GeoLite2-City GeoLite2-ASN\n# ...or for GeoIP2 (paid):\n# EditionIDs GeoIP2-City GeoIP2-ISP\nDatabaseDirectory /usr/share/GeoIP\n```\n\nRun `sudo geoipupdate` to fetch initial files, then schedule it via cron or\nthe bundled `geoipupdate.timer` systemd unit. Recommended cadences match the\nupstream publish frequency:\n\n- **GeoLite2 City / Country**: published twice weekly (Tuesday and Friday).\n- **GeoLite2 ASN**: published every weekday (Mon-Fri).\n- **GeoIP2 commercial editions**: published "every weekday, Monday through\n Friday" per <https://www.maxmind.com/en/geoip2-databases>.\n\nSource: <https://support.maxmind.com/hc/en-us/articles/4408216129947>.\n\n\n#### Optional Netdata topology downloader path\n\nTo generate Netdata\'s auto-detected topology MMDB files from GeoLite2 ASN\nand GeoLite2 Country, run:\n\n```bash\nsudo MAXMIND_LICENSE_KEY="YOUR_LICENSE_KEY" \\\n /usr/sbin/topology-ip-intel-downloader \\\n --asn maxmind:geolite2-asn \\\n --geo maxmind:geolite2-country\n```\n\nThis produces `/var/cache/netdata/topology-ip-intel/topology-ip-asn.mmdb`\nand `/var/cache/netdata/topology-ip-intel/topology-ip-geo.mmdb`. The\ngenerated metadata redacts URL query strings; do not put the license key\ndirectly in committed config files.\n\n\n#### Single MMDB per database type (dual-stack)\n\nA single MaxMind MMDB file covers both IPv4 and IPv6 in one binary tree --\nyou do **not** need separate IPv4 and IPv6 files. Point `asn_database` at one\nfile and `geo_database` at one file. (The CSV exports MaxMind also publishes\nare split per family, but the netflow plugin only reads the binary MMDB\nformat.)\n\n\n\n### Configuration\n\n#### Options\n\nOverride the default DB-IP auto-detection by pointing `asn_database` and\n`geo_database` at your MaxMind MMDB files. Both keys take a list -- you can\nchain MaxMind alongside other MMDB sources; see the\n[IP Intelligence](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment)\npage for the per-field "last non-empty wins" composition rule.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enrichment.geoip.asn_database | Paths to MaxMind ASN MMDB files (typically `GeoLite2-ASN.mmdb` for the free tier or `GeoIP2-ISP.mmdb` for the paid tier; the dual-stack file covers IPv4 and IPv6). | [] | yes |\n| enrichment.geoip.geo_database | Paths to MaxMind geographic MMDB files (typically `GeoLite2-City.mmdb` for the free tier or `GeoIP2-City.mmdb` for the paid tier; the dual-stack file covers IPv4 and IPv6). | [] | yes |\n| enrichment.geoip.optional | When true, missing or unreadable MMDBs are warnings, not fatal at startup. Useful while `geoipupdate` is being set up for the first time. | false | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### GeoLite2 (free tier)\n\nStandard `geoipupdate` install path. Free tier requires a MaxMind account and license key; usage is subject to the GeoLite2 EULA (attribution required).\n\n```yaml\nenrichment:\n geoip:\n asn_database:\n - /usr/share/GeoIP/GeoLite2-ASN.mmdb\n geo_database:\n - /usr/share/GeoIP/GeoLite2-City.mmdb\n optional: false\n\n```\n###### GeoIP2 (paid)\n\nCommercial subscription. Higher accuracy than GeoLite2 and a weekday update cadence on most editions.\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n geoip:\n asn_database:\n - /usr/share/GeoIP/GeoIP2-ISP.mmdb\n geo_database:\n - /usr/share/GeoIP/GeoIP2-City.mmdb\n optional: false\n\n```\n{% /details %}\n###### MaxMind ASN + DB-IP geo (mixed)\n\nUse MaxMind for ASN richness and keep the bundled DB-IP geo file. Both lookups run; the multi-DB composition rule is documented on the [IP Intelligence](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment) page.\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n geoip:\n asn_database:\n - /usr/share/GeoIP/GeoLite2-ASN.mmdb\n geo_database:\n - /var/cache/netdata/topology-ip-intel/topology-ip-geo.mmdb\n optional: false\n\n```\n{% /details %}\n',troubleshooting:'### License key missing or expired\n\n`geoipupdate` fails (often silently from the plugin\'s perspective) and the\nMMDB files become stale. Check the `geoipupdate` exit status and its log;\nregenerate the key under "Account > Manage License Keys" if needed and\nupdate `/etc/GeoIP.conf`.\n\n\n### GeoLite2 attribution requirement\n\nThe GeoLite2 EULA requires attribution to MaxMind. If you redistribute\ndashboards or screenshots that include GeoLite2-derived data, follow the\nupstream guidance at <https://dev.maxmind.com/geoip/geolite2-free-geolocation-data>.\nGeoIP2 (commercial) does not have the same attribution requirement.\n\n\n### Schema differences between GeoLite2 and GeoIP2\n\nBoth share the standard MMDB structure for the fields the plugin reads\n(country, subdivisions, city, location, autonomous_system_number,\nautonomous_system_organization). MaxMind\'s specialty databases (Anonymous IP,\nConnection Type, Domain) carry GeoIP2-only fields the plugin does not consume.\nUse `City` for geographic enrichment and `ASN` (GeoLite2) or `ISP` (GeoIP2) for\nAS data.\n\n\n### Mixing MaxMind with the bundled DB-IP files\n\nThe plugin loads every configured MMDB. If you list both, the per-field\n"last non-empty wins" rule applies (see the\n[IP Intelligence](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment)\nconcept page). Order matters: list the source whose values you want to win\n**last**.\n\n\n',alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nIP intelligence enriches existing flow records; it produces no metrics of its own.\nVerify enrichment is working by querying `SRC_COUNTRY` / `DST_COUNTRY` and\n`SRC_AS_NAME` / `DST_AS_NAME` on the Network Flows view and confirming non-empty\nvalues for public IPs.\n\n",integration_type:"flows",id:"netflow-plugin-maxmind-MaxMind_GeoIP_/_GeoLite2",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"netbox",monitored_instance:{name:"NetBox",link:"https://github.com/netbox-community/netbox",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["netbox","ipam","dcim","source of truth","prefix list","network identity"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"aws-ip-ranges"},{plugin_name:"netflow-plugin",module_name:"gcp-ip-ranges"},{plugin_name:"netflow-plugin",module_name:"azure-ip-ranges"},{plugin_name:"netflow-plugin",module_name:"generic-ipam"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# NetBox\n\nPlugin: netflow-plugin\nModule: netbox\n\n## Overview\n\nAnnotate network flows with tenant, site, role, VRF, and description metadata\nfrom NetBox. [NetBox](https://github.com/netbox-community/netbox) is the most\nwidely deployed open-source IPAM / DCIM. It is Apache-2.0 licensed and maintained\nby the netbox-community organization (commercial variants -- NetBox Cloud and\nNetBox Enterprise -- are offered by NetBox Labs on top of the same upstream code).\nOperators already curate prefix metadata in NetBox and want flow records to\ninherit those labels automatically rather than maintaining a parallel list in\n`netflow.yaml`.\n\nThis integration polls NetBox's Prefixes REST API at a configurable interval,\ntransforms the response with jq, and labels matching flow prefixes with whatever\nfields you map. NetBox is the authoritative source -- when the same prefix is\ntagged in NetBox and in the static `networks:` block, the static block wins\n(operator override is intentional, see the\n[Network Identity](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment)\nconcept page).\n\nUse cases: applying your organisation's data-centre rack labels, tenant names,\nenvironment tags (prod / staging / dev), and VRF / site identifiers to flows so\ndashboards and queries surface \"this is the staging tier in fra1\" instead of a\nraw CIDR.\n\n\nPeriodic HTTPS GET to `/api/ipam/prefixes/` on your NetBox host. Authentication is\na NetBox API token in the `Authorization` header. NetBox supports two token\nformats:\n\n- **Legacy v1 tokens** (`Authorization: Token <token>`) -- accepted by all NetBox\n versions, simplest to wire up.\n- **v2 tokens** (NetBox 4.5+, `Authorization: Bearer nbt_<12-char-key>.<40-char-token>`) --\n the prefix `nbt_`, the token key, a dot, and the token secret are all part of\n the header value.\n\nThe plugin transports either format -- the value is whatever NetBox issued for the\nservice account.\n\nThe plugin runs the configured `transform` (jaq -- a jq-equivalent) over the\nparsed JSON body and produces per-prefix objects. NetBox's response is paginated;\nthe plugin does **not** follow `next` links. Pass `?limit=0` (NetBox default\n`MAX_PAGE_SIZE` is 1000; setting `0` removes the cap when the server config\nallows) or an explicit `?limit=N` greater than your prefix count, or expose a\nserver-side aggregator that returns the full list at one URL.\n\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDisabled by default. Add an entry under `enrichment.network_sources` with your NetBox URL and API token.\n\n#### Limits\n\nResource use scales with the number of NetBox prefixes returned by the URL and transform. Use NetBox filtering when you only need a subset of VRFs, sites, tenants, or roles.\n\n#### Performance Impact\n\nOne HTTP request per refresh interval plus a jq transform over the response. Runtime enrichment does prefix matching for source and destination IPs, and cost scales with the number of loaded network-source records.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### NetBox API token with read scope on Prefixes\n\nIn NetBox, create or reuse a service-account user, then generate an API token\nunder "Admin > Users > Tokens". Restrict the token to read-only and (for\nNetBox 4.x) limit the scope to `ipam.view_prefix`. The token value goes in the\n`Authorization` header.\n\nThe plugin only reads -- never writes -- so a read-only token is sufficient\nand recommended. Token format depends on the NetBox version:\n\n- NetBox 3.x or earlier: `Token <40-char-hex>` (legacy).\n- NetBox 4.0 through 4.4: legacy `Token <hex>`.\n- NetBox 4.5+: legacy `Token <hex>` or new\n `Bearer nbt_<12-char-key>.<40-char-token>` (v2 tokens).\n\n\n#### Bulk endpoint (`?limit=0` or aggregator)\n\nThe plugin fetches a single page. NetBox\'s default `PAGINATE_COUNT` is 50\nand `MAX_PAGE_SIZE` is 1000. For inventories above 1000 prefixes, either\nraise `MAX_PAGE_SIZE` server-side and pass `?limit=0`, or expose an internal\naggregator endpoint that walks pagination and returns the full list at one URL.\n\n\n#### NetBox version-aware field mapping\n\nNetBox **4.2** replaced the per-prefix `site` foreign key with a generic\n`scope` field (a prefix can now be scoped to a region, site group, site, or\nlocation -- not just a site). API responses on 4.2+ omit `site` and expose\n`scope` (read-only) plus `scope_type` / `scope_id`. Adjust your jq accordingly\n-- on 4.2+ use `(.scope.name // "")`, on 4.1 and earlier use\n`(.site.name // "")`.\n\n\n\n### Configuration\n\n#### Options\n\nAdd a named entry under `enrichment.network_sources` pointing at your NetBox.\nThe network source configuration accepts `url`, `method`,\n`headers`, `proxy`, `tls`, `timeout`, `interval`, and `transform`. Authentication\nis configured via the generic `headers:` map -- there is no NetBox-specific\nauth helper.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| url | NetBox prefixes API endpoint, including `?limit=` (recommend `?limit=0` for full inventory in one shot when the server\'s `MAX_PAGE_SIZE` allows it). | | yes |\n| headers.Authorization | NetBox API token. Use `Token <hex>` for legacy v1 or `Bearer nbt_<12-char-key>.<40-char-token>` for v4.5+ v2 tokens. | | yes |\n| interval | How often to refresh. NetBox is your source of truth; 5 minutes is typical for IPAMs that change frequently, 1 hour is fine for static inventories. | 60s | no |\n| timeout | HTTP request timeout. Bump to 30-60s if your NetBox returns thousands of prefixes in one shot. | 10s | no |\n| transform | jq expression mapping NetBox\'s `.results[]` to per-prefix objects with `prefix` and any of `name`, `role`, `site`, `region`, `country`, `state`, `city`, `tenant`, `asn`, `asn_name`. | . | yes |\n| tls.ca_file | Path to your internal CA bundle when NetBox runs behind internal PKI. Disabling verification is rejected by the validator -- use this instead. | | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### NetBox 4.5+ with v2 token, scope-aware mapping\n\nStandard NetBox 4.2+ wiring. Maps tenant, role, the new `scope` field\n(covers site / region / site-group / location), and the human-readable\ndescription. `?limit=0` returns all prefixes in one call when\n`MAX_PAGE_SIZE` is set to `0` or `None` on the NetBox server.\n\n\n```yaml\nenrichment:\n network_sources:\n netbox:\n url: "https://netbox.example.internal/api/ipam/prefixes/?limit=0"\n headers:\n Authorization: "Bearer nbt_<12-char-key>.<40-char-token>"\n interval: 5m\n timeout: 30s\n transform: |\n .results[] | {\n prefix: .prefix,\n tenant: (.tenant.name // ""),\n role: (.role.name // ""),\n site: (.scope.name // ""),\n name: (.description // "")\n }\n\n```\n###### NetBox 3.x / 4.0 / 4.1 with legacy site field\n\nPre-4.2 NetBox still exposes `site` directly on the Prefix object. Use a\nlegacy `Token` header and read `.site.name` instead of `.scope.name`.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n network_sources:\n netbox:\n url: "https://netbox.example.internal/api/ipam/prefixes/?limit=10000"\n headers:\n Authorization: "Token abcdef0123456789abcdef0123456789abcdef01"\n interval: 15m\n transform: |\n .results[] | {\n prefix: .prefix,\n tenant: (.tenant.name // ""),\n role: (.role.name // ""),\n site: (.site.name // ""),\n name: (.description // "")\n }\n\n```\n{% /details %}\n###### NetBox behind internal PKI (mTLS)\n\nWhen NetBox is fronted by internal PKI. `tls.verify: false` is rejected at\nconfig-load -- supply your CA explicitly and (optionally) a client\ncertificate.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n network_sources:\n netbox:\n url: "https://netbox.example.internal/api/ipam/prefixes/?limit=0"\n headers:\n Authorization: "Token abcdef0123456789abcdef0123456789abcdef01"\n interval: 5m\n tls:\n enable: true\n ca_file: /etc/netdata/ssl/internal-ca.pem\n cert_file: /etc/netdata/ssl/netdata.crt\n key_file: /etc/netdata/ssl/netdata.key\n transform: |\n .results[] | {\n prefix: .prefix,\n tenant: (.tenant.name // ""),\n role: (.role.name // ""),\n site: (.scope.name // ""),\n name: (.description // "")\n }\n\n```\n{% /details %}\n###### VRF-aware mapping (multi-tenant networks)\n\nWhen the same RFC1918 prefix appears in multiple VRFs, fold the VRF name\ninto the friendly `name` so dashboards disambiguate. Note: the plugin keys\non `prefix` only -- if two rows share a CIDR, the last one wins. Filter the\nNetBox query (`?vrf_id=N`) to scope the export.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n network_sources:\n netbox-prod-vrf:\n url: "https://netbox.example.internal/api/ipam/prefixes/?limit=0&vrf_id=12"\n headers:\n Authorization: "Token abcdef0123456789abcdef0123456789abcdef01"\n interval: 5m\n transform: |\n .results[] | {\n prefix: .prefix,\n tenant: (.tenant.name // ""),\n role: (.role.name // ""),\n site: (.scope.name // ""),\n name: ((.vrf.name // "default") + ": " + (.description // ""))\n }\n\n```\n{% /details %}\n',troubleshooting:'### Only first 50 prefixes loaded\n\nNetBox\'s default `PAGINATE_COUNT` is 50 and the plugin does not follow `next`\nlinks. Pass `?limit=0` (NetBox removes the cap when `MAX_PAGE_SIZE` is\n`0` server-side) or `?limit=N` larger than your inventory. For inventories\nabove the server\'s `MAX_PAGE_SIZE` (default 1000), expose a server-side\naggregator endpoint.\n\n\n### 401 / 403 from NetBox\n\nToken missing, expired, or wrong format. Verify with one of:\n`curl -H "Authorization: Token <legacy-token>" https://netbox/api/ipam/prefixes/`\nor\n`curl -H "Authorization: Bearer nbt_<12-char-key>.<40-char-token>" https://netbox/api/ipam/prefixes/`.\nOn NetBox 4.5+ check whether the token is v1 (`Token <hex>`) or v2\n(`Bearer nbt_<12-char-key>.<40-char-token>`) and use the matching header.\nA v2 token sent with the legacy `Token` prefix is rejected as an invalid v1\ntoken. Watch the journal\nfor `network-sources` warnings -- HTTP errors are logged there as\nrefresh-failed warnings.\n\n\n### site is empty after upgrade to NetBox 4.2\n\nNetBox 4.2 removed `site` from the Prefix model and replaced it with `scope`\n(a generic foreign key that can reference region / site group / site /\nlocation). Update the jq from `(.site.name // "")` to `(.scope.name // "")`.\nAlternatively, key on `(.scope.name // .site.name // "")` so the same config\nworks across the upgrade boundary.\n\n\n### VRF collisions (same CIDR in multiple VRFs)\n\nThe plugin\'s network-attributes trie keys on `prefix` only -- there is no VRF\ndimension on the flow side. If NetBox lists `10.0.0.0/24` in three VRFs, only\nthe last row wins. Filter the export with `?vrf_id=N` per data-plane and run\none named source per VRF, or fold the VRF name into the friendly `name` so\ndashboards disambiguate.\n\n\n### Empty result triggers backoff\n\nAn empty `results` array (legitimate state for a freshly-installed NetBox)\nis treated as a fetch failure by the cross-cutting source loop and triggers\nexponential backoff. Add at least one synthetic prefix (e.g. a `RFC1918`\ncontainer) so the response is never empty.\n\n\n',alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nTags flow records with the labels you mapped from NetBox -- typically\n`*_NET_TENANT`, `*_NET_SITE`, `*_NET_ROLE`, `*_NET_NAME`. Verify on the Network\nFlows tab.\n\n",integration_type:"flows",id:"netflow-plugin-netbox-NetBox",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"netflow",monitored_instance:{name:"NetFlow",link:"https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_pi/configuration/15-s/nf-15-s-book/ios-netflow-ov.html",categories:["network-performance-monitoring.flows.sources"],icon_filename:"network-wired.svg"},keywords:["netflow","netflow v5","netflow v7","netflow v9","cisco","flows","network flows","flow collector"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"ipfix"},{plugin_name:"netflow-plugin",module_name:"sflow"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# NetFlow\n\nPlugin: netflow-plugin\nModule: netflow\n\n## Overview\n\nCollect network flow records from NetFlow v5, v7, and v9 exporters such as\nrouters, switches, and firewalls. Each record exposes source and destination IP,\nports, protocol, bytes, packets, ToS, TCP flags, and ingress/egress interface indices.\nEnrichment adds GeoIP country/city/ASN, static metadata, and classifier tags.\n\nFor full documentation including vendor configuration examples, sampling caveats, template\nhandling and verification steps, see the [Network Flows Overview](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/).\n\n\nThe plugin listens on configurable UDP listener sockets for NetFlow datagrams.\nNetFlow v5 and v7 records are decoded directly. NetFlow v9 records are decoded using\ndynamic templates cached from the exporter. Decoded records are enriched in-memory\nand appended to disk-backed journal tiers (raw, 1-minute, 5-minute, 1-hour rollups).\n\n\nThis integration is supported on all platforms.\n\nThis integration runs as a single instance per Netdata Agent.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe stock configuration enables the plugin and listens on the configured UDP ports.\n\n#### Limits\n\nOperational limits are driven by sustained flow records/s, exporter batching, cardinality, retention, storage speed, and enrichment. On modern hardware with fast storage, plan around 50k-100k sustained flow records/s per well-provisioned agent for the full raw + rollup pipeline, provided the underlying disks can sustain the required journal write activity; use distributed agents for larger deployments.\n\n#### Performance Impact\n\nDisabled until exporters send traffic. Once active, CPU and disk I/O scale with flow-record rate and cardinality; size retention and storage from observed flow records/s.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### NetFlow-capable exporter\n\nA router, switch, or firewall configured to export NetFlow v5, v7, or v9 datagrams to the\nNetdata agent\'s UDP listener.\n\n\n\n### Configuration\n\n#### Options\n\nThe plugin is configured via `netflow.yaml` in the Netdata configuration directory.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| listener.listen | UDP listener endpoints for NetFlow/IPFIX and sFlow datagrams. YAML accepts either a scalar endpoint or a list of endpoints; CLI accepts repeated `--netflow-listen` flags or comma-delimited values. | 0.0.0.0:2055, 0.0.0.0:6343 | no |\n| protocols.v5 | Enable NetFlow v5 decoding. | yes | no |\n| protocols.v7 | Enable NetFlow v7 decoding. | yes | no |\n| protocols.v9 | Enable NetFlow v9 decoding. | yes | no |\n| journal.journal_dir | Directory for journal files (relative to NETDATA_CACHE_DIR). | flows | no |\n| journal.tiers.<tier>.size_of_journal_files | Per-tier hard size cap. Replace `<tier>` with `raw`, `minute_1`, `minute_5`, or `hour_1`. Set to `null` for time-only retention. | 10GB | no |\n| journal.tiers.<tier>.duration_of_journal_files | Per-tier maximum age. Replace `<tier>` with `raw`, `minute_1`, `minute_5`, or `hour_1`. The default `null` disables time-based eviction; set a duration to add an age cap. | null | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### Basic NetFlow v5/v9 collection\n\nUse Netdata\'s stock listener set for v5 and v9 records.\n\n```yaml\nenabled: true\nlistener:\n listen:\n - "0.0.0.0:2055"\n - "0.0.0.0:6343"\nprotocols:\n v5: true\n v9: true\n\n```\n###### NetFlow v9 only with extended retention\n\nAccept only v9 records, keep one day of raw data, and keep longer rollups.\n\n{% details open=true summary="Config" %}\n```yaml\nenabled: true\nlistener:\n listen: "0.0.0.0:2055"\nprotocols:\n v5: false\n v7: false\n v9: true\njournal:\n journal_dir: flows\n tiers:\n raw: { size_of_journal_files: 50GB, duration_of_journal_files: 24h }\n minute_1: { size_of_journal_files: 10GB, duration_of_journal_files: 14d }\n minute_5: { size_of_journal_files: 10GB, duration_of_journal_files: 30d }\n hour_1: { size_of_journal_files: 10GB, duration_of_journal_files: 365d }\n\n```\n{% /details %}\n',troubleshooting:'### Verifying flow data is arriving and diagnosing failures\n\nSee [Troubleshooting](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/troubleshooting) for\nthe full diagnostic recipe -- including UDP path checks, template-error analysis,\nand the "looks like a bug but isn\'t" section (doubling, mirroring, internal-IP geolocation).\nSee also [Validation and Data Quality](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/validation-and-data-quality)\nand [Anti-patterns](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/anti-patterns).\n\n\n',alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nNetwork flow data is stored as journal records, not as traditional metrics.\nUse the Network Flows view in the Netdata dashboard to query and visualize flow data.\nFor the full list of fields and the per-protocol availability matrix, see the\n[Field Reference](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/field-reference).\nFor visualisation guidance see [Sankey and Table](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/visualization/sankey-and-table),\n[Time-Series](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/visualization/time-series),\nand [Maps and Globe](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/visualization/maps-and-globe).\n\n",integration_type:"flows",id:"netflow-plugin-netflow-NetFlow",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"sflow",monitored_instance:{name:"sFlow",link:"https://sflow.org/",categories:["network-performance-monitoring.flows.sources"],icon_filename:"network-wired.svg"},keywords:["sflow","sflow v5","sampled flows","flows","network flows","flow collector","inmon"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"netflow"},{plugin_name:"netflow-plugin",module_name:"ipfix"}]}},info_provided_to_referring_integrations:{description:""}},overview:"# sFlow\n\nPlugin: netflow-plugin\nModule: sflow\n\n## Overview\n\nCollect sampled network flow records from sFlow v5 agents. sFlow provides\nstatistically sampled packet headers, interface counters, or extended gateway data.\nEach flow record exposes source and destination IP, ports, protocol, bytes, packets,\nand sampling rate information.\n\nFor full documentation including how sFlow differs fundamentally from NetFlow (packet\nsampling vs aggregated flows), vendor configuration examples (Arista, Juniper, Aruba CX,\nRuckus, hsflowd), and the limits of sampled data, see the\n[Network Flows Overview](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/).\n\n\nThe plugin uses the same configurable UDP listener set as NetFlow/IPFIX. sFlow datagrams are identified by\ntheir distinct header format and decoded per the sFlow v5 specification. Decoded records\nare enriched and appended to disk-backed journal tiers.\n\n\nThis integration is supported on all platforms.\n\nThis integration runs as a single instance per Netdata Agent.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nThe stock configuration enables the plugin and listens on the configured UDP ports.\n\n#### Limits\n\nOperational limits are driven by sustained samples/s, sampling rate, cardinality, retention, storage speed, and enrichment. Plan capacity from the received sample rate and the expanded byte/packet estimates.\n\n#### Performance Impact\n\nDisabled until sFlow agents send traffic. Once active, CPU and disk I/O scale with received samples/s and cardinality; size retention and storage from observed flow records/s.\n",setup:'## Setup\n\n\n### Prerequisites\n\n#### sFlow-capable agent\n\nA switch, router, or host-based sFlow agent (such as Host sFlow) configured to send\nsFlow v5 datagrams to the Netdata agent\'s UDP listener.\n\n\n\n### Configuration\n\n#### Options\n\nsFlow shares the same `netflow.yaml` configuration file as NetFlow and IPFIX.\nEnable sFlow via the `protocols.sflow` option.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| listener.listen | UDP listener endpoints for NetFlow/IPFIX and sFlow datagrams. YAML accepts either a scalar endpoint or a list of endpoints; CLI accepts repeated `--netflow-listen` flags or comma-delimited values. | 0.0.0.0:2055, 0.0.0.0:6343 | no |\n| protocols.sflow | Enable sFlow decoding. | yes | no |\n| journal.journal_dir | Directory for journal files (relative to NETDATA_CACHE_DIR). | flows | no |\n| journal.tiers.<tier>.size_of_journal_files | Per-tier hard size cap. Replace `<tier>` with `raw`, `minute_1`, `minute_5`, or `hour_1`. Set to `null` for time-only retention. | 10GB | no |\n| journal.tiers.<tier>.duration_of_journal_files | Per-tier maximum age. Replace `<tier>` with `raw`, `minute_1`, `minute_5`, or `hour_1`. The default `null` disables time-based eviction; set a duration to add an age cap. | null | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### sFlow collection\n\nListen for sFlow v5 datagrams on the standard sFlow port.\n\n```yaml\nenabled: true\nlistener:\n listen: "0.0.0.0:6343"\nprotocols:\n v5: false\n v7: false\n v9: false\n ipfix: false\n sflow: true\n\n```\n',troubleshooting:"### Verifying sFlow is arriving and diagnosing failures\n\nSee [Troubleshooting](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/troubleshooting) for\nthe full diagnostic recipe. sFlow-specific gotchas: Netdata creates Network Flow rows\nfrom sFlow flow samples (`flow_sample` / `expanded_flow_sample`) only. Counter-only\nstreams (`counters_sample` / `expanded_counters_sample`) are valid sFlow and increment\nsFlow packet counters, but they do not contain endpoint-level source/destination flow\nrecords for the Flow Explorer, Sankey, time-series, or maps. Bytes/packets are\nstatistical estimates that won't match SNMP byte-for-byte, and VLAN information comes\nfrom `ExtendedSwitch` records only -- not from 802.1Q tags inside the sampled header.\nSee also\n[Validation and Data Quality](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/validation-and-data-quality)\nand the sFlow section of [Anti-patterns](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/anti-patterns).\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nNetwork flow data is stored as journal records, not as traditional metrics.\nUse the Network Flows view in the Netdata dashboard to query and visualize flow data.\nFor the full list of fields and the per-protocol availability matrix, see the\n[Field Reference](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/field-reference).\nsFlow byte counts are statistical estimates (sampled packets multiplied by sampling rate);\nthey will not reconcile byte-for-byte with SNMP interface counters.\n\n",integration_type:"flows",id:"netflow-plugin-sflow-sFlow",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"netflow-plugin",module_name:"static-metadata",monitored_instance:{name:"Static Metadata",link:"https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment",categories:["network-performance-monitoring.flows.enrichment-methods"],icon_filename:"network-wired.svg"},keywords:["static metadata","exporters","interfaces","networks","cidr","sampling rate override","asn override","country override","tenant","site","region","role"],related_resources:{integrations:{list:[{plugin_name:"netflow-plugin",module_name:"generic-ipam"},{plugin_name:"netflow-plugin",module_name:"netbox"},{plugin_name:"netflow-plugin",module_name:"dbip"}]}},info_provided_to_referring_integrations:{description:""}},overview:'# Static Metadata\n\nPlugin: netflow-plugin\nModule: static-metadata\n\n## Overview\n\nAnnotate network flows with operator-defined labels for exporters, interfaces,\nnetworks, and sampling rates. Static Metadata is a YAML-defined enrichment source\nthat lives entirely in `netflow.yaml`. Use it when there is no IPAM, no CMDB, and\nno MMDB to query -- you simply know your own networks, your own routers, and what\nthe interfaces on those routers do, and you want those labels visible on the\nNetwork Flows view.\n\nThree independent surfaces are configured under this card, each populating a\ndifferent set of flow-record fields:\n\n- `enrichment.metadata_static.exporters.<ip-or-cidr>` -- per-exporter labels\n (matched against the source IP of the UDP datagram) and per-interface labels\n (matched against the ifIndex from the flow record).\n- `enrichment.networks.<cidr>` -- labels for arbitrary CIDR blocks (your own\n corp ranges, customer ranges, public blocks you operate). Matched against the\n flow\'s source and destination IPs.\n- `enrichment.override_sampling_rate.<cidr>` -- per-prefix sampling-rate\n substitution for exporters that do not communicate their rate (e.g. NetFlow\n v7, which has no sampling field, or a v9 exporter that never sends a Sampling\n Options Template).\n\nFields populated:\n\n- From `metadata_static.exporters` (per-exporter):\n `EXPORTER_NAME`, `EXPORTER_GROUP`, `EXPORTER_ROLE`, `EXPORTER_SITE`,\n `EXPORTER_REGION`, `EXPORTER_TENANT`.\n- From `metadata_static.exporters.if_indexes` (per-interface):\n `IN_IF_NAME` / `OUT_IF_NAME`, `IN_IF_DESCRIPTION` / `OUT_IF_DESCRIPTION`,\n `IN_IF_SPEED` / `OUT_IF_SPEED` (in **bits per second**), `IN_IF_PROVIDER` /\n `OUT_IF_PROVIDER`, `IN_IF_CONNECTIVITY` / `OUT_IF_CONNECTIVITY`,\n `IN_IF_BOUNDARY` / `OUT_IF_BOUNDARY` (`1` = external, `2` = internal,\n `0`/omitted = removed from output).\n- From `enrichment.networks` (per-CIDR):\n `SRC_NET_NAME` / `DST_NET_NAME`, `SRC_NET_ROLE` / `DST_NET_ROLE`,\n `SRC_NET_SITE` / `DST_NET_SITE`, `SRC_NET_REGION` / `DST_NET_REGION`,\n `SRC_NET_TENANT` / `DST_NET_TENANT`, plus overrides for the GeoIP-derived\n `SRC_COUNTRY` / `DST_COUNTRY`, `SRC_GEO_STATE` / `DST_GEO_STATE`,\n `SRC_GEO_CITY` / `DST_GEO_CITY`, `SRC_GEO_LATITUDE` / `DST_GEO_LATITUDE`,\n `SRC_GEO_LONGITUDE` / `DST_GEO_LONGITUDE`. Setting `asn:` on a `networks`\n entry overrides the AS *number* via the same merge path; the AS *name*\n still comes from the ASN database (see "Composition with dynamic sources"\n below).\n- From `override_sampling_rate` (longest-prefix match against the exporter IP):\n `SAMPLING_RATE` is set unconditionally when an override prefix matches. This\n is different from `default_sampling_rate`, which only applies when the flow\n does not already carry a rate.\n\nFor the cross-cutting Enrichment concept (provider chains, merge order rules,\nhow static composes with dynamic sources, the static-blocks-classifiers\ninteraction, and shared failure modes), see\n[Enrichment](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment).\n\n\nEdit `netflow.yaml`, restart the plugin, and the YAML-defined data is loaded\ninto the same in-memory tries the GeoIP, IPAM, and BGP enrichment paths read\nfrom. There is no network access, no file watching, and no hot reload --\nchanges take effect on the next plugin startup.\n\n\nThis integration is supported on all platforms.\n\nThis integration runs as a single instance per Netdata Agent.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDisabled by default. Add entries under `enrichment.metadata_static`, `enrichment.networks`, and / or `enrichment.override_sampling_rate` to populate it.\n\n#### Limits\n\nResource use scales with the number of exporter, interface, network, and sampling-override entries. Keep CIDR ranges and interface maps specific enough to match the routers you actually export.\n\n#### Performance Impact\n\nStatic lookups are local map/trie lookups during enrichment. Cost is usually small compared with flow decode and journal writes, but very large maps add memory and lookup work.\n',setup:'## Setup\n\n\n### Prerequisites\n\n#### An understanding of your own topology\n\nYou need to know which IP addresses your routers / switches / firewalls\nexport from, the integer ifIndex values they use for each interface, and\nthe CIDR ranges that belong to each of your sites / tenants / roles. None\nof this is auto-discovered -- this card is the "I will tell you" path.\nFor sources that auto-discover the same data, see Generic IPAM, NetBox,\nand the cloud IP-range cards.\n\n\n#### Persistent ifIndex values\n\n`if_indexes` keys are the integer ifIndex the router puts in the flow\nrecord. Some platforms reassign ifIndex on line-card reseat or stack\nrebuild. After hardware changes, audit the labels -- a stale ifIndex\nentry silently no longer applies. The `default` interface block is used\ninstead, or no labels are written when `skip_missing_interfaces: true` is set.\n\n\n\n### Configuration\n\n#### Options\n\nAll keys live under `enrichment:` in `netflow.yaml`. Unknown keys fail config\nload with a parse error.\n\n\n{% details open=true summary="Config options" %}\n\n\n| Option | Description | Default | Required |\n|:-----|:------------|:--------|:---------:|\n| enrichment.metadata_static.exporters | Map keyed by exporter IP or CIDR. Longest-prefix match wins. A `/32` key and a bare IP are equivalent. Each entry holds exporter-level labels (`name`, `group`, `role`, `site`, `region`, `tenant`), an optional `default` interface block, an `if_indexes` map keyed by integer ifIndex, and `skip_missing_interfaces`. | {} | no |\n| enrichment.metadata_static.exporters.<key>.if_indexes | Map keyed by integer ifIndex (the value the router puts in the flow record). Each entry holds `name`, `description`, `speed` (bits per second), `provider`, `connectivity`, and `boundary`. | {} | no |\n| enrichment.metadata_static.exporters.<key>.default | Interface block applied to flow records whose ifIndex is not present in `if_indexes`. Same shape as an `if_indexes` entry. Ignored when `skip_missing_interfaces: true` is set. | {} | no |\n| enrichment.metadata_static.exporters.<key>.skip_missing_interfaces | When `true`, flow records whose ifIndex is not in `if_indexes` get no interface labels at all (not even from `default`). Useful when you only care about a known set of WAN interfaces and want unknown ones to stay blank instead of inheriting a placeholder. | false | no |\n| enrichment.metadata_static.exporters.<key>.if_indexes.<n>.boundary | Interface boundary marker. Accepts the integers `0` (undefined), `1` (external -- faces the outside world: Internet, peer, transit), `2` (internal -- faces your own infrastructure), or the case-insensitive strings `"undefined"`, `"external"`, `"internal"`. Any other value fails config load. Filtering for `IN_IF_BOUNDARY=1` cleanly gives you "traffic that arrived from outside". | 0 | no |\n| enrichment.metadata_static.exporters.<key>.if_indexes.<n>.speed | Interface speed in **bits per second**. A 1 Gbps interface is `1000000000`, not `1000` and not `1000000`. Operators thinking in megabits get the value wrong by a factor of 1000 to 1000000. A `0` value means "not set" and removes the field from the output. | 0 | no |\n| enrichment.networks | Map keyed by CIDR. Longest-prefix match contributes the most-specific fields; less-specific containing prefixes contribute their non-empty fields too. The same merge rule is used by `network_sources`. Each value is either a string (shorthand for `name:`) or a map with `name`, `role`, `site`, `region`, `country`, `state`, `city`, `latitude`, `longitude`, `tenant`, `asn`. | {} | no |\n| enrichment.networks.<cidr>.asn | Forces the AS *number* for traffic in this prefix, overriding whatever the `asn_providers` chain computed. The AS *name* is still resolved from the ASN MMDB -- there is no `asn_name` config field. See the ASN section of [Enrichment](https://learn.netdata.cloud/docs/network-performance-monitoring/network-flows/enrichment). | 0 | no |\n| enrichment.networks.<cidr>.latitude / longitude | Per-CIDR coordinate override. Out-of-range values (latitude not in [-90, 90] or longitude not in [-180, 180]) and non-finite values are silently coerced to empty strings -- the field is dropped, no error. Validate input out of band if your data matters. | null | no |\n| enrichment.default_sampling_rate | Global fallback applied only when the flow record does not already carry a sampling rate. Either a single integer or a CIDR-keyed map (longest-prefix match against the exporter IP). | 0 | no |\n| enrichment.override_sampling_rate | Per-exporter substitution that **always** wins when its prefix matches the exporter IP, regardless of what the flow record carried. Either a single integer or a CIDR-keyed map. | {} | no |\n\n\n{% /details %}\n\n\n#### via File\n\nThe configuration file name for this integration is `netflow.yaml`.\n\n\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config netflow.yaml\n```\n\n##### Examples\n\n###### Naming exporters and their interfaces\n\nOne edge router and one spine. The `default` block applies to any\nifIndex not listed under `if_indexes` -- handy when you only care about\na few WAN ports and want everything else to inherit a placeholder.\n\n\n```yaml\nenrichment:\n metadata_static:\n exporters:\n 192.0.2.10: # bare IP == /32\n name: edge-router-1\n site: par1\n region: eu-west\n role: edge\n tenant: tenant-a\n default:\n description: unclassified port\n if_indexes:\n 1:\n name: Gi0/0/1\n description: uplink to ISP-A\n speed: 10000000000 # 10 Gbps in bits per second\n provider: isp-a\n connectivity: transit\n boundary: external\n 2:\n name: Gi0/0/2\n description: LAN core\n speed: 1000000000\n connectivity: lan\n boundary: internal\n 198.51.100.0/24: # all routers in this subnet\n site: dc-fra1\n region: eu-central\n role: spine\n default:\n connectivity: lan\n boundary: internal\n\n```\n###### Tagging your own networks\n\nThe shorthand form (`203.0.113.0/24: transit-a`) sets only the `name`.\nThe map form takes any subset of the schema fields. Less-specific\nsupernets contribute non-empty fields to more-specific subnets via\nascending-prefix-length merge -- declare RFC1918 once at `/8` and\na `/24` inherits everything you did not override.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n networks:\n 10.0.0.0/8:\n name: corp-internal\n role: internal\n tenant: tenant-a\n 198.51.100.0/24: # a public block you operate\n name: customer-acme\n role: customer\n site: par1\n country: FR\n city: Paris\n latitude: 48.8566\n longitude: 2.3522\n asn: 64500\n 203.0.113.0/24: transit-a # shorthand: name only\n\n```\n{% /details %}\n###### Skipping interfaces you have not labelled\n\nWith `skip_missing_interfaces: true`, an ifIndex that is not in\n`if_indexes` produces no interface labels at all -- the `default`\nblock is ignored. Useful when you want clearly-blank values for\nunmodelled interfaces instead of a placeholder description.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n metadata_static:\n exporters:\n 192.0.2.10:\n name: edge-router-1\n skip_missing_interfaces: true\n if_indexes:\n 1:\n name: Gi0/0/1\n description: uplink to ISP-A\n connectivity: transit\n boundary: external\n\n```\n{% /details %}\n###### Sampling rate override for old or silent exporters\n\nNetFlow v7 has no sampling field; some v9 exporters never send a\nSampling Options Template. Without an override, the bytes/packets\nstored in the journal are exporter-side **sampled** counters with\nno scaling factor. `override_sampling_rate` always wins;\n`default_sampling_rate` is the fallback used only when the flow\ndid not carry a rate.\n\n\n{% details open=true summary="Config" %}\n```yaml\nenrichment:\n default_sampling_rate: 1 # global fallback\n override_sampling_rate:\n 10.1.0.0/16: 1024 # an old NetFlow v7 stack\n 192.0.2.10/32: 4096 # one specific exporter\n\n```\n{% /details %}\n',troubleshooting:"### A more-specific entry inherits the wrong field from its supernet\n\n`enrichment.networks` merges containing prefixes from least-specific to\nmost-specific. Leaving a field blank on a `/24` does **not** clear the `/16`'s value\nfor that field -- you must explicitly set the field on the more-specific\nentry to overwrite. The same merge rule applies to entries from\n`network_sources`, which interleave at the same prefix lengths.\n\n\n### GeoIP returns spurious data for an internal range\n\nUntil you declare your RFC1918 / RFC6598 / link-local ranges as\n`enrichment.networks` entries, the GeoIP-derived country / city / coord\nfields can pick up junk for those addresses. Adding a `networks` entry\nfor the range overrides the GeoIP layer at the merge step.\n\n\n### ifIndex changed after a hardware swap\n\n`if_indexes` keys are the numeric ifIndex sent in the flow record. A\nline-card reseat or stack rebuild can renumber the interfaces; the old\nifIndex no longer matches and the per-interface block silently no longer\napplies. Audit after hardware changes.\n\n\n### speed shows up wrong by a factor of 1000\n\n`speed:` is in **bits per second**. `speed: 1000` means 1 kbps, not\n1 Mbps. A 1 Gbps interface is `1000000000`. `speed: 0` means \"not set\"\nand removes the field from the output.\n\n\n### An interface block silently no longer applies\n\nWhen the configured ifIndex is not present in the flow record, the\n`default` block is used instead -- unless `skip_missing_interfaces: true`\nis set, in which case no interface labels are written at all. If you expected your block to apply but the labels are blank, the\nrouter is sending a different ifIndex.\n\n\n### Coordinates dropped silently\n\nOut-of-range latitude / longitude (`latitude: 91.5`) and non-finite\nvalues become empty strings without an error. The map quietly stops drawing the marker. Validate input externally if\nthe data matters.\n\n\n### Static labels block the classifiers\n\nWhen static metadata sets **any** of `group`, `role`, `site`, `region`,\n`tenant` for an exporter, the `exporter_classifiers` rule chain does not\nrun for that exporter at all. The same is true for an interface: any of `provider`, `connectivity`,\n`boundary` set by static metadata short-circuits\n`interface_classifiers`. If\nyou want classifiers to run on top of static metadata, drop the static\nfields they are supposed to set.\n\n\n### A typo fails config load\n\nThe schema is `deny_unknown_fields` at every level. A typo such as\n`if_index` (the canonical key is `if_indexes`; aliases `ifindexes`,\n`if-indexes` are accepted) or a misspelt attribute (`teannt:`) fails plugin\nstart with a YAML parse error rather than being silently ignored.\n\n\n### Sampling override looks ignored\n\n`override_sampling_rate` always wins when its prefix matches; if the\nfield still looks unset, check that the **exporter IP** -- not the\nflow's source / destination IP -- falls under the configured prefix.\n`default_sampling_rate` is only consulted when the flow did not already\ncarry a rate.\n\n\n### Changes do not take effect\n\nStatic metadata is loaded at plugin startup and there is no file-change\nwatcher. Restart the plugin (or the agent) after editing\n`netflow.yaml`.\n\n\n",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nTags flow records with operator-defined labels and (optionally) substitutes\nthe sampling rate; produces no metrics of its own. Verify on the Network\nFlows tab via the `EXPORTER_*`, `IN_IF_*`, `OUT_IF_*`, `*_NET_*`,\n`*_COUNTRY`, `*_GEO_*`, and `SAMPLING_RATE` columns.\n\n",integration_type:"flows",id:"netflow-plugin-static-metadata-Static_Metadata",edit_link:"https://github.com/netdata/netdata/blob/master/src/crates/netflow-plugin/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"cato_networks",monitored_instance:{name:"Cato Networks Topology",link:"",categories:["network-performance-monitoring.topologies"],icon_filename:"SNMP.png"},keywords:["cato","sase","sd-wan","topology","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cato Networks Topology\n\nPlugin: go.d.plugin\nModule: cato_networks\n\n## Overview\n\nMap a Cato Networks SASE fabric. The Cato collector renders sites, sockets, and gateways with their tunnel and transport paths.\n\nThe Cato collector reads the Cato Management Application over its API and renders the fabric as a `netdata.topology.v1` graph.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nBuilt from the configured Cato account.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **cato_networks** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **cato_networks**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **cato_networks** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the cato_networks data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _cato_networks_ (or scroll the list) to locate the **cato_networks** collector.\n5. Click the **+** next to the **cato_networks** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",integration_type:"device",id:"go.d.plugin-cato_networks-Cato_Networks_Topology",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"3Com",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["3com","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# 3Com\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor 3Com (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **3com.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as 3Com via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this 3Com profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**5 metrics** in 2 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-3Com",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"3Com Huawei",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["3com","huawei","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# 3Com Huawei\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor 3Com Huawei (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **3com-huawei.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as 3Com Huawei via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this 3Com Huawei profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**10 metrics** in 6 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Fan | 1 |\n| Hardware / PowerSupply | 1 |\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Memory | 2 |\n| System / Uptime | 1 |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hwDevMFanStatus` | `{status}` | per fan_index | Fan status |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hwDevMPowerStatus` | `{status}` | per power_index | Power status |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hwMemFree` | `By` | per mem_index | Free memory size |\n| `snmp.device_prof_hwMemSize` | `By` | per mem_index | Total memory size |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-3Com_Huawei",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"A10",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["a10","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# A10\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor A10 (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **a10.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as A10 via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this A10 profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**5 metrics** in 2 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-A10",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"A10 Thunder",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["a10","thunder","snmp","adc","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# A10 Thunder\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor A10 Thunder (adc) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **a10-thunder.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as A10 Thunder via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this A10 Thunder profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**65 metrics** in 18 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Environment / Temperature | 1 |\n| Hardware / Fan | 2 |\n| Hardware / Power | 2 |\n| LoadBalancer / Server | 5 |\n| LoadBalancer / ServiceGroup | 1 |\n| LoadBalancer / VirtualServer | 15 |\n| Network / Connection | 4 |\n| Network / Interface | 4 |\n| Network / NAT | 3 |\n| Network / SSL | 1 |\n| Network / Session | 1 |\n| System / Application | 9 |\n| System / CPU | 1 |\n| System / Connection | 5 |\n| System / Disk | 2 |\n| System / Memory | 2 |\n| System / Session | 6 |\n| System / Uptime | 1 |\n\n### Environment / Temperature\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_axSysHwPhySystemTemp` | `Cel` | device | The physical system temperature in Celsius |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_axFanSpeed` | `{revolution}/min` | per ax_fan_name | The fan's speed |\n| `snmp.device_prof_axFanStatus` | `{status}` | per ax_fan_name | Fan status |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_axPowerSupplyStatus` | `{status}` | per ax_power_supply_name | Power Supply status |\n| `snmp.device_prof_axPowerSupplyVoltageStatus` | `{status}` | per ax_power_supply_voltage_description | Power Supply voltage status |\n\n### LoadBalancer / Server\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_axServerEnabledState` | `{status}` | per ax_server_name | The enabled state for this server |\n| `snmp.device_prof_axServerMonitorState` | `{status}` | per ax_server_name | The server monitor status |\n| `snmp.device_prof_axServerStatServerCurConns` | `{connection}` | per ax_server_stat_name | The current connections from server side |\n| `snmp.device_prof_axServerStatServerStatus` | `{status}` | per ax_server_stat_name | Server status |\n| `snmp.device_prof_axServerStatServerTotalCurrL7Reqs` | `{request}` | per ax_server_stat_name | The number of current L7 requests if applicable |\n\n### LoadBalancer / ServiceGroup\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_axServiceGroupDisplayStatus` | `{status}` | per ax_service_group_name, ax_service_group_type, ax_service_group_lb_algorithm | Service group status |\n\n### LoadBalancer / VirtualServer\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_axVirtualServerDisplayStatus` | `{status}` | per ax_virtual_server_name, ax_virtual_server_ha_group, ax_virtual_server_enabled | Display status of the virtual server |\n| `snmp.device_prof_axVirtualServerPortStatCurConns` | `{connection}` | per ax_virtual_server_port_stat_address, ax_virtual_server_stat_port_type, ax_virtual_server_stat_port_num, ax_virtual_server_port_stat_name | Current connections from client side |\n| `snmp.device_prof_axVirtualServerStatBytesIn` | `By/s` | per ax_virtual_server_stat_address, ax_virtual_server_stat_name | The number of bytes received from client to server |\n| `snmp.device_prof_axVirtualServerStatBytesOut` | `By/s` | per ax_virtual_server_stat_address, ax_virtual_server_stat_name | The number of bytes sent from server to client |\n| `snmp.device_prof_axVirtualServerStatCurConns` | `{connection}` | per ax_virtual_server_stat_address, ax_virtual_server_stat_name | The current connections from client side |\n| `snmp.device_prof_axVirtualServerStatPersistConns` | `{connection}` | per ax_virtual_server_stat_address, ax_virtual_server_stat_name | The persistent connections from client side |\n| `snmp.device_prof_axVirtualServerStatPktsIn` | `{packet}/s` | per ax_virtual_server_stat_address, ax_virtual_server_stat_name | The number of packets received from client to server |\n| `snmp.device_prof_axVirtualServerStatPktsOut` | `{packet}/s` | per ax_virtual_server_stat_address, ax_virtual_server_stat_name | The number of packets sent from server to client |\n| `snmp.device_prof_axVirtualServerStatPortDisplayStatus` | `{status}` | per ax_virtual_server_port_stat_address, ax_virtual_server_stat_port_type, ax_virtual_server_stat_port_num, ax_virtual_server_port_stat_name | Virtual server port display status |\n| `snmp.device_prof_axVirtualServerStatPortStatus` | `{status}` | per ax_virtual_server_port_stat_address, ax_virtual_server_stat_port_type, ax_virtual_server_stat_port_num, ax_virtual_server_port_stat_name | Virtual server port status |\n| `snmp.device_prof_axVirtualServerStatStatus` | `{status}` | per ax_virtual_server_stat_address, ax_virtual_server_stat_name | Virtual server status |\n| `snmp.device_prof_axVirtualServerStatTotConns` | `{connection}/s` | per ax_virtual_server_stat_address, ax_virtual_server_stat_name | The total connections from client side |\n| `snmp.device_prof_axVirtualServerStatTotalCurrL7Reqs` | `{request}` | per ax_virtual_server_stat_address, ax_virtual_server_stat_name | The number of current L7 requests if applicable |\n| `snmp.device_prof_axVirtualServerStatTotalL7Reqs` | `{request}/s` | per ax_virtual_server_stat_address, ax_virtual_server_stat_name | The total number of L7 requests if applicable |\n| `snmp.device_prof_axVirtualServerStatTotalSuccL7Reqs` | `{request}/s` | per ax_virtual_server_stat_address, ax_virtual_server_stat_name | The number of successful L7 requests if applicable |\n\n### Network / Connection\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_axSessionGlobalStatTCPEstablished` | `{connection}` | device | The count of TCP established |\n| `snmp.device_prof_axSessionGlobalStatTCPHalfOpen` | `{connection}` | device | The count of TCP half open |\n| `snmp.device_prof_axSessionGlobalStatTCPSynHalfOpen` | `{connection}` | device | The count of TCP SYN half open |\n| `snmp.device_prof_axSessionGlobalStatUDP` | `{connection}` | device | The count of UDP connections |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / NAT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_axAppGlobalTotalNewIPNatConnections` | `{connection}/s` | device | Total new IP-NAT connections |\n| `snmp.device_prof_axSessionGlobalStatReverseNATTCP` | `{connection}` | device | The count of reverse NAT TCP |\n| `snmp.device_prof_axSessionGlobalStatReverseNATUDP` | `{connection}` | device | The count of reverse NAT UDP |\n\n### Network / SSL\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_axAppGlobalTotalSSLConnections` | `{connection}/s` | device | Total new SSL connections |\n\n### Network / Session\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_axSessionGlobalStatNonTcpUdpIPSession` | `{session}` | device | The count of non TCP/UDP IP sessions |\n\n### System / Application\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_axAppGlobalBufferConfigLimit` | `1` | device | Application buffer configured limit |\n| `snmp.device_prof_axAppGlobalBufferCurrentUsage` | `1` | device | Application buffer current usage |\n| `snmp.device_prof_axAppGlobalTotalCurrentConnections` | `{connection}` | device | Total current connections |\n| `snmp.device_prof_axAppGlobalTotalL7Requests` | `{request}/s` | device | Total L7 requests |\n| `snmp.device_prof_axAppGlobalTotalNewConnections` | `{connection}/s` | device | Total new connections |\n| `snmp.device_prof_axAppGlobalTotalNewL4Connections` | `{connection}/s` | device | Total new L4 connections |\n| `snmp.device_prof_axAppGlobalTotalNewL7Connections` | `{connection}/s` | device | Total new L7 connections |\n| `snmp.device_prof_axGlobalAppPacketDrop` | `{packet}` | device | Total number of buffer drops in the last 10 seconds |\n| `snmp.device_prof_axGlobalTotalAppPacketDrop` | `{packet}/s` | device | Total number of accumulative buffer drops |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n\n### System / Connection\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_axSessionGlobalStatConnCount` | `{connection}` | device | The count of current connections |\n| `snmp.device_prof_axSessionGlobalStatConnFree` | `{connection}/s` | device | The count of freed connections |\n| `snmp.device_prof_axSessionGlobalStatConnSMPAllocated` | `{connection}` | device | The count of allocated SMP connections |\n| `snmp.device_prof_axSessionGlobalStatConnSMPFree` | `{connection}` | device | The count of free SMP connections |\n| `snmp.device_prof_axSessionGlobalStatFreeCurrentConns` | `{connection}` | device | The count of free current connections |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_axSysDiskFreeSpace` | `By` | device | The free space of the disk |\n| `snmp.device_prof_axSysDiskTotalSpace` | `By` | device | The total space of the disk |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_axSysMemoryTotal` | `By` | device | The total memory |\n| `snmp.device_prof_axSysMemoryUsage` | `By` | device | The usage memory |\n\n### System / Session\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_axConnReuseStatTotalActivePersist` | `{session}` | device | The total count of active persistent connection-reuse sessions |\n| `snmp.device_prof_axConnReuseStatTotalEstablished` | `{session}` | device | The total count of established connection-reuse sessions |\n| `snmp.device_prof_axConnReuseStatTotalOpenPersist` | `{session}` | device | The total count of open persistent connection-reuse sessions |\n| `snmp.device_prof_axConnReuseStatTotalTerminated` | `{session}` | device | The total count of terminated connection-reuse sessions |\n| `snmp.device_prof_axGlobalTotalL4Session` | `{session}` | device | Total number of L4 sessions |\n| `snmp.device_prof_axSessionGlobalStatOther` | `{session}` | device | The count of others |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-A10_Thunder",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"APC",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["apc","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# APC\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor APC (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **apc.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as APC via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this APC profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**19 metrics** in 3 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / Uptime | 1 |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-APC",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"APC Netbotz",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["apc","netbotz","snmp","sensor","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# APC Netbotz\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor APC Netbotz (sensor) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **apc-netbotz.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as APC Netbotz via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this APC Netbotz profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**18 metrics** in 5 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Enclosure | 2 |\n| Hardware / Port | 2 |\n| Hardware / Sensor | 11 |\n| System / Alert | 2 |\n| System / Uptime | 1 |\n\n### Hardware / Enclosure\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_enclosureErrorStatus` | `{status}` | per netbotz_enclosure_index, netbotz_enclosure_id, netbotz_enclosure_label | The error status of the enclosure |\n| `snmp.device_prof_enclosureStatus` | `{status}` | per netbotz_enclosure_index, netbotz_enclosure_id, netbotz_enclosure_label | The status of the enclosure |\n\n### Hardware / Port\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dinPortStatus` | `{status}` | per netbotz_din_port_index, netbotz_din_port_id | The error status of the sensor |\n| `snmp.device_prof_otherPortStatus` | `{status}` | per netbotz_other_port_index, netbotz_other_port_id, netbotz_other_port_label, netbotz_other_port_enc_id | The error status of the sensor |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dewPointSensorErrorStatus` | `{status}` | per netbotz_dew_point_sensor_index, netbotz_dew_point_sensor_id, netbotz_dew_point_sensor_label, netbotz_dew_point_sensor_enc_id | The error status of the sensor |\n| `snmp.device_prof_dewPointSensorValueInt` | `Cel` | per netbotz_dew_point_sensor_index, netbotz_dew_point_sensor_id, netbotz_dew_point_sensor_label, netbotz_dew_point_sensor_enc_id | The dew point measured by the sensor |\n| `snmp.device_prof_dewPointSensorValueIntF` | `degF` | per netbotz_dew_point_sensor_index, netbotz_dew_point_sensor_id, netbotz_dew_point_sensor_label, netbotz_dew_point_sensor_enc_id | The dew point measured by the sensor |\n| `snmp.device_prof_doorSwitchSensorErrorStatus` | `{status}` | per netbotz_door_switch_sensor_index, netbotz_door_switch_sensor_id, netbotz_door_switch_sensor_label, netbotz_door_switch_sensor_enc_id, netbotz_door_switch_sensor_value_str | The error status of the sensor |\n| `snmp.device_prof_doorSwitchSensorValue` | `{status}` | per netbotz_door_switch_sensor_index, netbotz_door_switch_sensor_id, netbotz_door_switch_sensor_label, netbotz_door_switch_sensor_enc_id, netbotz_door_switch_sensor_value_str | Whether the door is open or closed |\n| `snmp.device_prof_humiSensorErrorStatus` | `{status}` | per netbotz_humi_sensor_index, netbotz_humi_sensor_id, netbotz_humi_sensor_label, netbotz_humi_sensor_enc_id | The error status of the sensor |\n| `snmp.device_prof_humiSensorValueInt` | `%` | per netbotz_humi_sensor_index, netbotz_humi_sensor_id, netbotz_humi_sensor_label, netbotz_humi_sensor_enc_id | The relative humidity measured by the sensor |\n| `snmp.device_prof_otherStateSensorErrorStatus` | `{status}` | per netbotz_other_state_sensor_label, netbotz_other_state_sensor_enc_id, netbotz_other_state_sensor_value_str, netbotz_other_state_sensor_id | The error status of the sensor |\n| `snmp.device_prof_tempSensorErrorStatus` | `{status}` | per netbotz_temp_sensor_index, netbotz_temp_sensor_id, netbotz_temp_sensor_label, netbotz_temp_sensor_enc_id | The error status of the sensor |\n| `snmp.device_prof_tempSensorValueInt` | `Cel` | per netbotz_temp_sensor_index, netbotz_temp_sensor_id, netbotz_temp_sensor_label, netbotz_temp_sensor_enc_id | The temperature measured by the sensor |\n| `snmp.device_prof_tempSensorValueIntF` | `degF` | per netbotz_temp_sensor_index, netbotz_temp_sensor_id, netbotz_temp_sensor_label, netbotz_temp_sensor_enc_id | The temperature measured by the sensor |\n\n### System / Alert\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_errorCondResolved` | `{status}` | per netbotz_error_cond_index, netbotz_error_cond_id, netbotz_error_cond_type_id, netbotz_error_cond_enc_id, netbotz_error_cond_sensor_id | Whether the error condition was resolved |\n| `snmp.device_prof_errorCondSeverity` | `{status}` | per netbotz_error_cond_index, netbotz_error_cond_id, netbotz_error_cond_type_id, netbotz_error_cond_enc_id, netbotz_error_cond_sensor_id | The relative severity of the error condition |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-APC_Netbotz",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"APC PDU",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["apc","pdu","snmp","pdu","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# APC PDU\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor APC PDU (pdu) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 4 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **apc-pdu.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as APC PDU via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this APC PDU profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**34 metrics** in 9 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Bank | 1 |\n| Hardware / Outlet | 3 |\n| Hardware / Phase | 1 |\n| Hardware / PhaseBank | 2 |\n| Hardware / PowerSupply | 3 |\n| Hardware / Sensor | 5 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / Uptime | 1 |\n\n### Hardware / Bank\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rPDUStatusBankState` | `{status}` | per powernet_r_pdu_status_bank_index, powernet_r_pdu_status_bank_number | Bank load state |\n\n### Hardware / Outlet\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rPDUOutletStatusLoad` | `A` | per powernet_r_pdu_outlet_status_index, powernet_r_pdu_outlet_status_outlet_name | Outlet load for an Outlet Monitored Rack PDU |\n| `snmp.device_prof_rPDUOutletStatusOutletState` | `{status}` | per powernet_r_pdu_outlet_status_index, powernet_r_pdu_outlet_status_outlet_name | Outlet state |\n| `snmp.device_prof_rPDUStatusOutletState` | `{status}` | per powernet_r_pdu_status_outlet_index, powernet_r_pdu_status_outlet_number | Outlet Load state |\n\n### Hardware / Phase\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rPDUStatusPhaseState` | `{status}` | per powernet_r_pdu_status_phase_index, powernet_r_pdu_status_phase_number | Phase Load state |\n\n### Hardware / PhaseBank\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rPDULoadStatusLoad` | `A` | per powernet_r_pdu_load_status_index | Phase/bank load |\n| `snmp.device_prof_rPDULoadStatusLoadState` | `{status}` | per powernet_r_pdu_load_status_index | Phase/bank load state |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rPDUPowerSupply1Status` | `{status}` | device | Status of power supply 1 |\n| `snmp.device_prof_rPDUPowerSupply2Status` | `{status}` | device | Status of power supply 2 |\n| `snmp.device_prof_rPDUPowerSupplyAlarm` | `{status}` | device | Alarm status of the PDU power supply |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rPDU2SensorTempHumidityStatusHumidityStatus` | `{status}` | per powernet_r_pdu2_sensor_temp_humidity_status_name, powernet_r_pdu2_sensor_temp_humidity_status_type | Current state of the humidity probe |\n| `snmp.device_prof_rPDU2SensorTempHumidityStatusRelativeHumidity` | `%` | per powernet_r_pdu2_sensor_temp_humidity_status_name, powernet_r_pdu2_sensor_temp_humidity_status_type | Relative humidity percentage |\n| `snmp.device_prof_rPDU2SensorTempHumidityStatusTempC` | `Cel` | per powernet_r_pdu2_sensor_temp_humidity_status_name, powernet_r_pdu2_sensor_temp_humidity_status_type | Temperature in degrees Celsius |\n| `snmp.device_prof_rPDU2SensorTempHumidityStatusTempF` | `degF` | per powernet_r_pdu2_sensor_temp_humidity_status_name, powernet_r_pdu2_sensor_temp_humidity_status_type | Temperature in degrees Fahrenheit |\n| `snmp.device_prof_rPDU2SensorTempHumidityStatusTempStatus` | `{status}` | per powernet_r_pdu2_sensor_temp_humidity_status_name, powernet_r_pdu2_sensor_temp_humidity_status_type | Current state of the temperature probe |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-APC_PDU",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"APC UPS",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["apc","ups","snmp","ups","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# APC UPS\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor APC UPS (ups) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 15 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **apc-ups.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as APC UPS via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this APC UPS profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**43 metrics** in 10 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Battery | 5 |\n| Hardware / OutletGroup | 1 |\n| Hardware / Sensor | 1 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| PowerFlow / Input | 5 |\n| PowerFlow / Output | 8 |\n| System / Battery | 3 |\n| System / Test | 1 |\n| System / Uptime | 1 |\n\n### Hardware / Battery\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_upsAdvBatteryNumOfBadBattPacks` | `{pack}` | device | The number of external battery packs connected to the UPS that are defective |\n| `snmp.device_prof_upsAdvBatteryNumOfBattPacks` | `{pack}` | device | The number of external battery packs connected to the UPS |\n| `snmp.device_prof_upsAdvBatteryReplaceIndicator` | `{status}` | device | Indicates whether the UPS batteries need replacing |\n| `snmp.device_prof_upsAdvBatteryTemperature` | `Cel` | device | The current internal UPS temperature |\n| `snmp.device_prof_upsHighPrecExtdBatteryTemperature` | `Cel` | device | The current internal UPS temperature |\n\n### Hardware / OutletGroup\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_upsOutletGroupStatusGroupState` | `{status}` | per outlet_group_name | Outlet group state |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_uioSensorStatusTemperatureDegC` | `Cel` | device | The sensor's current temperature reading |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### PowerFlow / Input\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_upsAdvInputFrequency` | `Hz` | device | The current input frequency to the UPS system |\n| `snmp.device_prof_upsAdvInputLineFailCause` | `{status}` | device | The reason for the occurrence of the last transfer to UPS battery power |\n| `snmp.device_prof_upsAdvInputLineVoltage` | `V` | device | The current utility line voltage (AC) |\n| `snmp.device_prof_upsHighPrecInputFrequency` | `Hz` | device | The current input frequency to the UPS system |\n| `snmp.device_prof_upsHighPrecInputLineVoltage` | `V` | device | The current utility line voltage (AC) |\n\n### PowerFlow / Output\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_upsAdvOutputActivePower` | `W` | device | The total output active power of the UPS system |\n| `snmp.device_prof_upsAdvOutputApparentPower` | `VA` | device | The total output apparent power of all phases of the UPS system |\n| `snmp.device_prof_upsAdvOutputCurrent` | `A` | device | The current drawn by the load on the UPS |\n| `snmp.device_prof_upsAdvOutputEnergyUsage` | `kWh` | device | The output energy usage of the UPS |\n| `snmp.device_prof_upsAdvOutputFrequency` | `Hz` | device | The current output frequency of the UPS system |\n| `snmp.device_prof_upsAdvOutputLoad` | `%` | device | The current UPS load expressed in percent of rated capacity |\n| `snmp.device_prof_upsAdvOutputVoltage` | `V` | device | The output voltage of the UPS system (AC) |\n| `snmp.device_prof_upsHighPrecOutputCurrent` | `A` | device | The current drawn by the load on the UPS |\n\n### System / Battery\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_upsAdvBatteryCapacity` | `%` | device | The remaining battery capacity |\n| `snmp.device_prof_upsAdvBatteryRunTimeRemaining` | `s` | device | The UPS battery run time remaining before battery exhaustion |\n| `snmp.device_prof_upsBasicBatteryTimeOnBattery` | `s` | device | The elapsed time since the UPS has switched to battery power |\n\n### System / Test\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_upsAdvTestDiagnosticsResults` | `{status}` | device | The results of the last UPS diagnostics test performed |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-APC_UPS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Alcatel-Lucent BGP",link:"",categories:["network-performance-monitoring.bgp"],icon_filename:"SNMP.png"},keywords:["alcatel-lucent","bgp","snmp","routing","peering","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Alcatel-Lucent BGP\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor BGP peering and routing health on Alcatel-Lucent devices over SNMP with Netdata, using Alcatel-Lucent BGP profile coverage.\n\nNetdata polls the BGP peer tables exposed by Alcatel-Lucent devices (vendor and standard BGP MIBs) via SNMP.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDetected automatically for Alcatel-Lucent devices that expose BGP MIBs.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",integration_type:"device",id:"go.d.plugin-snmp-Alcatel-Lucent_BGP",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Alcatel Lucent",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["alcatel","lucent","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Alcatel Lucent\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Alcatel Lucent (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **alcatel-lucent.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Alcatel Lucent via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Alcatel Lucent profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**17 metrics** in 3 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Uptime | 1 |\n| Uncategorized | 12 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Alcatel_Lucent",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Alcatel Lucent ENT",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["alcatel","lucent","ent","snmp","switch/bop","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Alcatel Lucent ENT\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Alcatel Lucent ENT (switch/bop) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **alcatel-lucent-ent.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Alcatel Lucent ENT via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Alcatel Lucent ENT profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**36 metrics** in 10 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Entity | 2 |\n| Hardware / Fan | 1 |\n| Hardware / LED | 11 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Temperature | 2 |\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Memory | 1 |\n| System / Uptime | 1 |\n| Uncategorized | 12 |\n\n### Hardware / Entity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_chasEntPhysAdminStatus` | `{status}` | per ent_physical_class, ent_physical_name, ent_physical_serial_num, ent_physical_model_name | The administrative status of the physical entity |\n| `snmp.device_prof_chasEntPhysOperStatus` | `{status}` | per ent_physical_class, ent_physical_name, ent_physical_serial_num, ent_physical_model_name | The operational status of the physical entity |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_alaChasEntPhysFanSpeed` | `{revolution}/min` | per ala_chas_ent_phys_fan_status | Fan speed in revolutions per minute |\n\n### Hardware / LED\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_chasEntPhysLedStatusBackupPS` | `{status}` | per ent_physical_class, ent_physical_name, ent_physical_serial_num, ent_physical_model_name | Physical entity backup power supply LED status |\n| `snmp.device_prof_chasEntPhysLedStatusControl` | `{status}` | per ent_physical_class, ent_physical_name, ent_physical_serial_num, ent_physical_model_name | Physical entity control LED status |\n| `snmp.device_prof_chasEntPhysLedStatusFabric` | `{status}` | per ent_physical_class, ent_physical_name, ent_physical_serial_num, ent_physical_model_name | Physical entity fabric LED status |\n| `snmp.device_prof_chasEntPhysLedStatusFan` | `{status}` | per ent_physical_class, ent_physical_name, ent_physical_serial_num, ent_physical_model_name | Physical entity fan LED status |\n| `snmp.device_prof_chasEntPhysLedStatusInternalPS` | `{status}` | per ent_physical_class, ent_physical_name, ent_physical_serial_num, ent_physical_model_name | Physical entity internal power supply LED status |\n| `snmp.device_prof_chasEntPhysLedStatusOk1` | `{status}` | per ent_physical_class, ent_physical_name, ent_physical_serial_num, ent_physical_model_name | Physical entity ok1 LED status |\n| `snmp.device_prof_chasEntPhysLedStatusOk2` | `{status}` | per ent_physical_class, ent_physical_name, ent_physical_serial_num, ent_physical_model_name | Physical entity ok2 LED status |\n| `snmp.device_prof_chasEntPhysLedStatusPS` | `{status}` | per ent_physical_class, ent_physical_name, ent_physical_serial_num, ent_physical_model_name | Physical entity power supply LED status |\n| `snmp.device_prof_chasEntPhysLedStatusPrimaryCMM` | `{status}` | per ent_physical_class, ent_physical_name, ent_physical_serial_num, ent_physical_model_name | Physical entity primary CMM LED status |\n| `snmp.device_prof_chasEntPhysLedStatusSecondaryCMM` | `{status}` | per ent_physical_class, ent_physical_name, ent_physical_serial_num, ent_physical_model_name | Physical entity secondary CMM LED status |\n| `snmp.device_prof_chasEntPhysLedStatusTemperature` | `{status}` | per ent_physical_class, ent_physical_name, ent_physical_serial_num, ent_physical_model_name | Physical entity temperature LED status |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_alaChasBpsPowerSupplyOperStatus` | `{status}` | per ala_chas_bps_power_supply_name, ala_chas_bps_power_supply_serial_num | Operational status of the power supply |\n\n### Hardware / Temperature\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_chasEntTempCurrent` | `Cel` | per ent_physical_class, ent_physical_name, ent_physical_serial_num, ent_physical_model_name | Current temperature of the physical entity |\n| `snmp.device_prof_chasEntTempStatus` | `{status}` | per ent_physical_class, ent_physical_name, ent_physical_serial_num, ent_physical_model_name | Status of the temperature sensor |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index, health_module_chassis_id | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_healthModuleMemoryLatest` | `%` | per mem_index, health_module_chassis_id | Memory usage percentage |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Alcatel_Lucent_ENT",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Alcatel Lucent IND",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["alcatel","lucent","ind","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Alcatel Lucent IND\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Alcatel Lucent IND (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **alcatel-lucent-ind.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Alcatel Lucent IND via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Alcatel Lucent IND profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**17 metrics** in 3 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Uptime | 1 |\n| Uncategorized | 12 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Alcatel_Lucent_IND",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Alcatel Lucent Omni Access WLC",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["alcatel","lucent","omni","access","wlc","snmp","switch/wlc","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Alcatel Lucent Omni Access WLC\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Alcatel Lucent Omni Access WLC (switch/wlc) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **alcatel-lucent-omni-access-wlc.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Alcatel Lucent Omni Access WLC via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Alcatel Lucent Omni Access WLC profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**25 metrics** in 7 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| Network / Wireless | 2 |\n| System / CPU | 1 |\n| System / Memory | 3 |\n| System / Storage | 2 |\n| System / Uptime | 1 |\n| Uncategorized | 12 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / Wireless\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_wlsxSwitchTotalNumAccessPoints` | `{ap}` | device | Total number of access points connected to this switch |\n| `snmp.device_prof_wlsxSwitchTotalNumStationsAssociated` | `{station}` | device | Total number of stations associated to this switch. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_sysXMemoryFree` | `By` | per mem_index | Free memory in KB |\n| `snmp.device_prof_sysXMemorySize` | `By` | per mem_index | Total memory in KB |\n| `snmp.device_prof_sysXMemoryUsed` | `By` | per mem_index | Used memory in KB |\n\n### System / Storage\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_sysXStorageSize` | `By` | per sys_x_storage_type, sys_x_storage_name | Size of the storage filesystem |\n| `snmp.device_prof_sysXStorageUsed` | `By` | per sys_x_storage_type, sys_x_storage_name | Storage filesystem usage |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Alcatel_Lucent_Omni_Access_WLC",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Anue",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["anue","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Anue\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Anue (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **anue.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Anue via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Anue profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**5 metrics** in 2 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Anue",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Arista",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["arista","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Arista\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Arista (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **arista.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Arista via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Arista profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**109 metrics** in 10 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Sensor | 2 |\n| Network / IP | 28 |\n| Network / Interface | 33 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / Activity | 2 |\n| System / CPU | 1 |\n| System / Uptime | 1 |\n| Uncategorized | 14 |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_entPhySensorOperStatus` | `{status}` | per sensor_index, rm:sensor_type, rm:sensor_scale, rm:sensor_precision | Operational status of the sensor |\n| `snmp.device_prof_entPhySensorValue` | `1` | per sensor_index, rm:sensor_type, rm:sensor_scale, rm:sensor_precision | Most recent measurement obtained by the agent for this sensor |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_aristaEgressQueuePktsDropped` | `{packet}` | per interface_index, queue_index | The number of packets discarded from this egress queue. |\n| `snmp.device_prof_aristaIngressQueuePktsDropped` | `{packet}` | per interface_index, queue_index | The number of dropped packets due to congestion at the ingress port in an interface |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Arista",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Arista BGP",link:"",categories:["network-performance-monitoring.bgp"],icon_filename:"SNMP.png"},keywords:["arista","bgp","snmp","routing","peering","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Arista BGP\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor BGP peering and routing health on Arista devices over SNMP with Netdata, using Arista BGP profile coverage.\n\nNetdata polls the BGP peer tables exposed by Arista devices (vendor and standard BGP MIBs) via SNMP.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDetected automatically for Arista devices that expose BGP MIBs.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",integration_type:"device",id:"go.d.plugin-snmp-Arista_BGP",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Arista Switch",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["arista","switch","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Arista Switch\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Arista Switch (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 148 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **arista-switch.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Arista Switch via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Arista Switch profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**31 metrics** in 5 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Sensor | 2 |\n| Network / Interface | 6 |\n| Network / Routing | 10 |\n| System / Uptime | 1 |\n| Uncategorized | 12 |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_entPhySensorOperStatus` | `{status}` | per sensor_index, rm:sensor_type, rm:sensor_scale, rm:sensor_precision | Operational status of the sensor |\n| `snmp.device_prof_entPhySensorValue` | `1` | per sensor_index, rm:sensor_type, rm:sensor_scale, rm:sensor_precision | Most recent measurement obtained by the agent for this sensor |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_aristaEgressQueuePktsDropped` | `{packet}` | per interface_index, queue_index | The number of packets discarded from this egress queue. |\n| `snmp.device_prof_aristaIngressQueuePktsDropped` | `{packet}` | per interface_index, queue_index | The number of dropped packets due to congestion at the ingress port in an interface |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Arista_Switch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Aruba",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["aruba","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Aruba\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Aruba (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **aruba.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Aruba via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Aruba profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**27 metrics** in 4 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| Network / Routing | 10 |\n| System / Uptime | 1 |\n| Uncategorized | 12 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Aruba",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Aruba Access Point",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["aruba","access","point","snmp","access point","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Aruba Access Point\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Aruba Access Point (access point) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **aruba-access-point.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Aruba Access Point via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Aruba Access Point profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**27 metrics** in 4 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| Network / Routing | 10 |\n| System / Uptime | 1 |\n| Uncategorized | 12 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Aruba_Access_Point",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Aruba CX Switch",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["aruba","cx","switch","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Aruba CX Switch\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Aruba CX Switch (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 13 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **aruba-cx-switch.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Aruba CX Switch via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Aruba CX Switch profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**37 metrics** in 9 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Fan | 2 |\n| Hardware / PowerSupply | 2 |\n| Hardware / Sensor | 1 |\n| Network / Interface | 4 |\n| Network / Routing | 10 |\n| System / Activity | 2 |\n| System / CPU | 1 |\n| System / Uptime | 1 |\n| Uncategorized | 14 |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_arubaWiredFanRPM` | `{revolution}/min` | per aruba_wired_fan_name, aruba_wired_fan_product_name, aruba_wired_fan_serial_number, aruba_wired_fan_airflow_direction | Current RPM read for the fan. |\n| `snmp.device_prof_arubaWiredFanState` | `{status}` | per aruba_wired_fan_name, aruba_wired_fan_product_name, aruba_wired_fan_serial_number, aruba_wired_fan_airflow_direction | Current status for the fan |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_arubaWiredPSUInstantaneousPower` | `W` | per aruba_wired_psu_name, aruba_wired_psu_product_name, aruba_wired_psu_serial_number, aruba_wired_psu_airflow_direction | Total instantaneous power supplied by the power supply in Watts. |\n| `snmp.device_prof_arubaWiredPSUNumberFailures` | `{failure}/s` | per aruba_wired_psu_name, aruba_wired_psu_product_name, aruba_wired_psu_serial_number, aruba_wired_psu_airflow_direction | Number of failures the power supply has experienced since the most recent insertion of the power supply and boot of the system. |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_arubaWiredTempSensorTemperature` | `Cel` | per aruba_wired_temp_sensor_name | Current temperature value read from the temperature sensor |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Aruba_CX_Switch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Aruba Clearpass",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["aruba","clearpass","snmp","clearpass","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Aruba Clearpass\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Aruba Clearpass (clearpass) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **aruba-clearpass.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Aruba Clearpass via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Aruba Clearpass profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**78 metrics** in 11 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| Network / RADIUS | 9 |\n| Network / Routing | 10 |\n| Network / TACACS | 11 |\n| Network / Traffic | 1 |\n| Security / Policy | 23 |\n| System / CPU | 1 |\n| System / Disk | 2 |\n| System / Memory | 4 |\n| System / Uptime | 1 |\n| Uncategorized | 12 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / RADIUS\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_radAuthCounterCount` | `{authentication}/s` | per rad_auth_source_name | Total number of RADIUS authentications |\n| `snmp.device_prof_radAuthCounterFailure` | `{authentication}/s` | per rad_auth_source_name | Total number of failed RADIUS authentications |\n| `snmp.device_prof_radAuthCounterSuccess` | `{authentication}/s` | per rad_auth_source_name | Total number of successful RADIUS authentications |\n| `snmp.device_prof_radAuthCounterTime` | `ms` | per rad_auth_source_name | Time taken to authenticate against an authentication source in milliseconds |\n| `snmp.device_prof_radAuthRequestTime` | `ms` | per cppm_system_hostname | Total time taken for RADIUS request end-to-end in milliseconds |\n| `snmp.device_prof_radPolicyEvalTime` | `ms` | per cppm_system_hostname | Total time taken for policy evaluation from RADIUS server perspective in milliseconds |\n| `snmp.device_prof_radServerCounterCount` | `{request}/s` | per cppm_system_hostname | Total RADIUS request count |\n| `snmp.device_prof_radServerCounterFailure` | `{request}/s` | per cppm_system_hostname | Failed RADIUS request count |\n| `snmp.device_prof_radServerCounterSuccess` | `{request}/s` | per cppm_system_hostname | Successful RADIUS request count |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TACACS\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tacAuthCounterAuthTime` | `ms` | per cppm_system_hostname | Time taken for TACACS+ authentications in milliseconds |\n| `snmp.device_prof_tacAuthCounterCount` | `{authentication}/s` | per cppm_system_hostname | Total number of TACACS+ authentications |\n| `snmp.device_prof_tacAuthCounterFailure` | `{authentication}/s` | per cppm_system_hostname | Total number of failed TACACS+ authentications |\n| `snmp.device_prof_tacAuthCounterSuccess` | `{authentication}/s` | per cppm_system_hostname | Total number of successful TACACS+ authentications |\n| `snmp.device_prof_tacAuthCounterTime` | `ms` | per cppm_system_hostname | Total time taken to perform TACACS+ authentications end-to-end in milliseconds |\n| `snmp.device_prof_tacAutzCounterCount` | `{authorization}/s` | per cppm_system_hostname | Total number of TACACS+ authorizations |\n| `snmp.device_prof_tacAutzCounterFailure` | `{authorization}/s` | per cppm_system_hostname | Total number of failed TACACS+ authorizations |\n| `snmp.device_prof_tacAutzCounterSuccess` | `{authorization}/s` | per cppm_system_hostname | Total number of successful TACACS+ authorizations |\n| `snmp.device_prof_tacAutzCounterTime` | `ms` | per cppm_system_hostname | Total time taken to perform TACACS+ authorization end-to-end in milliseconds |\n| `snmp.device_prof_tacPolicyEvalTime` | `ms` | per cppm_system_hostname | Time taken for TACACS+ policy evaluation in milliseconds |\n| `snmp.device_prof_tacServicePolicyEvalTime` | `ms` | per cppm_system_hostname | Time taken for TACACS+ service policy evaluation in milliseconds |\n\n### Network / Traffic\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nwTrafficTotal` | `By/s` | per nw_app_name, nw_app_port_number | Total network traffic in bytes |\n\n### Security / Policy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dailyFailedAuthCount` | `{authentication}/s` | per cppm_system_hostname | Total number of failed authentications computed over 24 hours |\n| `snmp.device_prof_dailySuccessAuthCount` | `{authentication}/s` | per cppm_system_hostname | Total number of successful authentications computed over 24 hours |\n| `snmp.device_prof_dailyTotalAuthCount` | `{authentication}/s` | per cppm_system_hostname | Total number of authentications computed over 24 hours |\n| `snmp.device_prof_psAuditPolicyEvalCount` | `{policy}/s` | per cppm_system_hostname | Total number of audit policies evaluated |\n| `snmp.device_prof_psAuditPolicyEvalTime` | `ms` | per cppm_system_hostname | Time taken for the evaluation of audit policies in milliseconds |\n| `snmp.device_prof_psAuthCounterFailure` | `{authentication}/s` | per cppm_system_hostname | Total number of failed authentications computed on the Policy Server |\n| `snmp.device_prof_psAuthCounterSuccess` | `{authentication}/s` | per cppm_system_hostname | Total number of successful authentications computed on the Policy Server |\n| `snmp.device_prof_psAuthCounterTotal` | `{authentication}/s` | per cppm_system_hostname | Total number of authentications computed on the Policy Server |\n| `snmp.device_prof_psAutzCounterCount` | `{authorization}/s` | per ps_autz_source_name | Total number of Policy authorizations |\n| `snmp.device_prof_psAutzCounterFailure` | `{authorization}/s` | per ps_autz_source_name | Total number of failed Policy authorizations |\n| `snmp.device_prof_psAutzCounterSuccess` | `{authorization}/s` | per ps_autz_source_name | Total number of successful Policy authorizations |\n| `snmp.device_prof_psAutzCounterTime` | `ms` | per ps_autz_source_name | Time taken for Policy authorizations in milliseconds |\n| `snmp.device_prof_psEnforcementPolicyEvalCount` | `{policy}/s` | per cppm_system_hostname | Total number of enforcement policies evaluated |\n| `snmp.device_prof_psEnforcementPolicyEvalTime` | `ms` | per cppm_system_hostname | Time taken for the evaluation of enforcement policies in milliseconds |\n| `snmp.device_prof_psPosturePolicyEvalCount` | `{policy}/s` | per cppm_system_hostname | Total number of posture policies evaluated |\n| `snmp.device_prof_psPosturePolicyEvalTime` | `ms` | per cppm_system_hostname | Time taken for the evaluation of posture policies in milliseconds |\n| `snmp.device_prof_psRestrictionPolicyEvalCount` | `{policy}/s` | per cppm_system_hostname | Total number of restriction policies evaluated |\n| `snmp.device_prof_psRestrictionPolicyEvalTime` | `ms` | per cppm_system_hostname | Time taken for the evaluation of restriction policies in milliseconds |\n| `snmp.device_prof_psRolemappingPolicyEvalCount` | `{policy}/s` | per cppm_system_hostname | Total number of role mapping policies evaluated |\n| `snmp.device_prof_psRolemappingPolicyEvalTime` | `ms` | per cppm_system_hostname | Time taken for the evaluation of role mapping policies in milliseconds |\n| `snmp.device_prof_psServicePolicyEvalCount` | `{policy}/s` | per cppm_system_hostname | Total number of service policies evaluated |\n| `snmp.device_prof_psServicePolicyEvalTime` | `ms` | per cppm_system_hostname | Time taken for the evaluation of service policies in milliseconds |\n| `snmp.device_prof_psSessionlogTime` | `ms` | per cppm_system_hostname | Time taken for session logging in milliseconds |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cppmSystemDiskSpaceFree` | `By` | per cppm_system_hostname | Amount of free disk space in bytes in the ClearPass server |\n| `snmp.device_prof_cppmSystemDiskSpaceTotal` | `By` | per cppm_system_hostname | Total amount of disk space available in bytes in the ClearPass server |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cppmSystemMemoryFree` | `By` | per cppm_system_hostname | Amount of free memory in bytes in the ClearPass server |\n| `snmp.device_prof_cppmSystemMemoryTotal` | `By` | per cppm_system_hostname | Total amount of memory available in bytes in the ClearPass server |\n| `snmp.device_prof_memAvailReal` | `By` | device | Amount of real physical memory currently unused or available |\n| `snmp.device_prof_memTotalReal` | `By` | device | Total amount of real physical memory installed on this host |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Aruba_Clearpass",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Aruba Mobility Controller",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["aruba","mobility","controller","snmp","wireless lan controller","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Aruba Mobility Controller\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Aruba Mobility Controller (wireless lan controller) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 4 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **aruba-mobility-controller.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Aruba Mobility Controller via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Aruba Mobility Controller profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**17 metrics** in 3 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Uptime | 1 |\n| Uncategorized | 12 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Aruba_Mobility_Controller",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Aruba Switch",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["aruba","switch","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Aruba Switch\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Aruba Switch (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **aruba-switch.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Aruba Switch via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Aruba Switch profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**34 metrics** in 9 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Fan | 1 |\n| Hardware / PowerSupply | 1 |\n| Network / Interface | 4 |\n| Network / Packet | 1 |\n| Network / Routing | 10 |\n| System / CPU | 1 |\n| System / Memory | 3 |\n| System / Uptime | 1 |\n| Uncategorized | 12 |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_sysExtFanStatus` | `{status}` | per fan_index | Status of the Fan |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_sysExtPowerSupplyStatus` | `{status}` | per powersupply_index | Status of the power supply |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / Packet\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_wlsxSysExtPacketLossPercent` | `%` | device | Packet loss percent of the switch |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_sysExtMemoryFree` | `By` | per mem_index | Free memory in KB |\n| `snmp.device_prof_wlsxSysExtMemorySize` | `By` | per mem_index | Total memory |\n| `snmp.device_prof_wlsxSysExtMemoryUsed` | `By` | per mem_index | Used memory |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Aruba_Switch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Aruba Wireless Controller",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["aruba","wireless","controller","snmp","wlc","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Aruba Wireless Controller\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Aruba Wireless Controller (wlc) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 38 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **aruba-wireless-controller.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Aruba Wireless Controller via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Aruba Wireless Controller profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**57 metrics** in 11 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / HighAvailability | 4 |\n| Network / Interface | 4 |\n| Network / Packet | 1 |\n| Network / Wireless | 23 |\n| System / CPU | 1 |\n| System / HighAvailability | 3 |\n| System / Memory | 1 |\n| System / Storage | 2 |\n| System / Uptime | 1 |\n| System / User | 5 |\n| Uncategorized | 12 |\n\n### Network / HighAvailability\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_haAPHbtTunnels` | `{tunnel}` | per ha_membership | Number of AP hbt GRE tunnels |\n| `snmp.device_prof_haActiveVapTunnels` | `{tunnel}` | per ha_membership | Number of active per VAP GRE tunnels |\n| `snmp.device_prof_haStandbyVapTunnels` | `{tunnel}` | per ha_membership | Number of standby per VAP GRE tunnels |\n| `snmp.device_prof_haTotalVapTunnels` | `{tunnel}` | per ha_membership | Total number of per VAP GRE tunnels |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / Packet\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_wlsxSysExtPacketLossPercent` | `%` | device | Packet loss percentage |\n\n### Network / Wireless\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_apBSSBwRate` | `kbit/s` | per ap_stats_channel | Bandwidth rate in Kbps of the ap on this BSSID |\n| `snmp.device_prof_apBSSFrameFragmentationRate` | `%` | per ap_stats_channel | Frame fragmentation rate on this BSSID |\n| `snmp.device_prof_apBSSFrameLowSpeedRate` | `%` | per ap_stats_channel | Frame low speed rate on this BSSID |\n| `snmp.device_prof_apBSSFrameNonUnicastRate` | `%` | per ap_stats_channel | Frame non unicast packet rate on this BSSID |\n| `snmp.device_prof_apBSSFrameReceiveErrorRate` | `%` | per ap_stats_channel | Frame receive error rate on this BSSID |\n| `snmp.device_prof_apBSSFrameRetryRate` | `%` | per ap_stats_channel | Frame retry rate on this BSSID |\n| `snmp.device_prof_apBSSRxBytes` | `By/s` | per ap_stats_channel | Total bytes received by the ap on this BSSID |\n| `snmp.device_prof_apBSSRxPackets` | `{packet}/s` | per ap_stats_channel | Total packets received by the ap on this BSSID |\n| `snmp.device_prof_apBSSTxBytes` | `By/s` | per ap_stats_channel | Total bytes transmitted by the ap on this BSSID |\n| `snmp.device_prof_apBSSTxPackets` | `{packet}/s` | per ap_stats_channel | Total packets transmitted by the ap on this BSSID |\n| `snmp.device_prof_apChannelBwRate` | `kbit/s` | per ap_stats_channel | Bandwidth rate in Kbps of the apChannel |\n| `snmp.device_prof_apChannelFrameFragmentationRate` | `%` | per ap_stats_channel | Number of fragments as a percentage of the total packets transmitted on this channel |\n| `snmp.device_prof_apChannelFrameLowSpeedRate` | `%` | per ap_stats_channel | Number of low data rate packets as a percentage of the total packets transmitted and received on this channel |\n| `snmp.device_prof_apChannelFrameNonUnicastRate` | `%` | per ap_stats_channel | Number of broadcast and multicast packets as a percentage of the total packets transmitted on this channel |\n| `snmp.device_prof_apChannelFrameReceiveErrorRate` | `%` | per ap_stats_channel | Number of error packets as a percentage of the total packets received on this channel |\n| `snmp.device_prof_apChannelFrameRetryRate` | `%` | per ap_stats_channel | Number of retry packets as a percentage of the total packets transmitted and received on this channel |\n| `snmp.device_prof_apChannelNoise` | `dB` | per ap_essid, ap_phy_type, ap_type, ap_current_channel, ap_load_balancing | Noise on the channel |\n| `snmp.device_prof_apSignalToNoiseRatio` | `dB` | per ap_essid, ap_phy_type, ap_type, ap_current_channel, ap_load_balancing | Signal to noise ratio for the BSSID |\n| `snmp.device_prof_wlanStaRSSI` | `dB` | per wlan_sta_phy_type, wlan_sta_access_point_essid, wlan_sta_channel, wlan_sta_vlan_id, wlan_sta_is_authenticated, wlan_sta_is_associated, wlan_sta_ht_mode | Signal to noise ratio for the station |\n| `snmp.device_prof_wlanStaRxBytes64` | `By` | per wlan_sta_channel_num | Number of bytes received by this station, 64-bit value |\n| `snmp.device_prof_wlanStaTransmitRate` | `bit/s` | per wlan_sta_phy_type, wlan_sta_access_point_essid, wlan_sta_channel, wlan_sta_vlan_id, wlan_sta_is_authenticated, wlan_sta_is_associated, wlan_sta_ht_mode | Transmit rate with which the station is associated with this system |\n| `snmp.device_prof_wlanStaTxBytes64` | `By` | per wlan_sta_channel_num | Number of bytes transmitted by this station, 64-bit value |\n| `snmp.device_prof_wlanStaUpTime` | `cs` | per wlan_sta_phy_type, wlan_sta_access_point_essid, wlan_sta_channel, wlan_sta_vlan_id, wlan_sta_is_authenticated, wlan_sta_is_associated, wlan_sta_ht_mode | Time since the station associated to the current BSSID |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n\n### System / HighAvailability\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_haActiveAPs` | `{access_point}` | device | Number of active APs |\n| `snmp.device_prof_haStandbyAPs` | `{access_point}` | device | Number of standby APs |\n| `snmp.device_prof_haTotalAPs` | `{access_point}` | device | Total number of APs |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_usage` | `%` | device | Memory usage percentage |\n\n### System / Storage\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_sysXStorageSize` | `MBy` | per sys_x_storage_type, sys_x_storage_name | Size of the storage filesystem in MB |\n| `snmp.device_prof_sysXStorageUsed` | `MBy` | per sys_x_storage_type, sys_x_storage_name | Size of the storage filesystem in MB |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / User\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_wlsxNumOfUsers8021x` | `{user}` | device | Number of 802.1x users |\n| `snmp.device_prof_wlsxNumOfUsersCP` | `{user}` | device | Number of Captive Portal users |\n| `snmp.device_prof_wlsxNumOfUsersMAC` | `{user}` | device | Number of MAC users |\n| `snmp.device_prof_wlsxNumOfUsersStateful8021x` | `{user}` | device | Number of stateful 802.1x users |\n| `snmp.device_prof_wlsxNumOfUsersVPN` | `{user}` | device | Number of VPN users |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Aruba_Wireless_Controller",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Audiocodes Mediant SBC",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["audiocodes","mediant","sbc","snmp","sbc","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Audiocodes Mediant SBC\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Audiocodes Mediant SBC (sbc) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **audiocodes-mediant-sbc.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Audiocodes Mediant SBC via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Audiocodes Mediant SBC profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**10 metrics** in 5 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Activity | 2 |\n| System / CPU | 1 |\n| System / Uptime | 1 |\n| Uncategorized | 2 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Audiocodes_Mediant_SBC",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Avaya",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["avaya","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Avaya\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Avaya (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **avaya.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Avaya via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Avaya profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**7 metrics** in 3 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| System / CPU | 1 |\n| System / Memory | 5 |\n| System / Uptime | 1 |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_genMemUtilizationDynAllocMemAvailable` | `By` | device | The available dynamically allocated memory |\n| `snmp.device_prof_genMemUtilizationDynAllocMemUsed` | `By` | device | The dynamically allocated memory has been used |\n| `snmp.device_prof_genMemUtilizationPercentUsed` | `%` | per mem_module_index | The percentage of memory used |\n| `snmp.device_prof_genMemUtilizationPhyRam` | `By` | per mem_module_index | The total size of the physical RAM |\n| `snmp.device_prof_genMemUtilizationTotalRAM` | `By` | device | The total size of the RAM |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Avaya",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Avaya Aura Media Server",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["avaya","aura","media","server","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Avaya Aura Media Server\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Avaya Aura Media Server (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **avaya-aura-media-server.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Avaya Aura Media Server via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Avaya Aura Media Server profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**15 metrics** in 6 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Activity | 2 |\n| System / CPU | 1 |\n| System / Memory | 5 |\n| System / Uptime | 1 |\n| Uncategorized | 2 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_genMemUtilizationDynAllocMemAvailable` | `By` | device | The available dynamically allocated memory |\n| `snmp.device_prof_genMemUtilizationDynAllocMemUsed` | `By` | device | The dynamically allocated memory has been used |\n| `snmp.device_prof_genMemUtilizationPercentUsed` | `%` | per mem_module_index | The percentage of memory used |\n| `snmp.device_prof_genMemUtilizationPhyRam` | `By` | per mem_module_index | The total size of the physical RAM |\n| `snmp.device_prof_genMemUtilizationTotalRAM` | `By` | device | The total size of the RAM |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Avaya_Aura_Media_Server",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Avaya Cajun Switch",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["avaya","cajun","switch","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Avaya Cajun Switch\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Avaya Cajun Switch (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 3 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **avaya-cajun-switch.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Avaya Cajun Switch via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Avaya Cajun Switch profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**42 metrics** in 4 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / EthPort | 35 |\n| System / CPU | 1 |\n| System / Memory | 5 |\n| System / Uptime | 1 |\n\n### Network / EthPort\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_avaya_scEthPortAutoNegotiationStatus` | `{status}` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The status of the Auto Negotiation process |\n| `snmp.device_prof_avaya_scEthPortBadOctets` | `By/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of bad octets of data filtered |\n| `snmp.device_prof_avaya_scEthPortBadPkts` | `{packet}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of bad packets filtered |\n| `snmp.device_prof_avaya_scEthPortCRCAlignErrors` | `{error}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of packets received that had a bad Frame Check Sequence |\n| `snmp.device_prof_avaya_scEthPortCollisions` | `{collision}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The best estimate of the total number of collisions |\n| `snmp.device_prof_avaya_scEthPortDiscardPktsRec` | `{packet}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of packets which were chosen to be discarded |\n| `snmp.device_prof_avaya_scEthPortDiscardPktsSent` | `{packet}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of packets which were chosen to be discarded |\n| `snmp.device_prof_avaya_scEthPortDropEvents` | `{event}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of events in which the probe could not count packets due to lack of resources |\n| `snmp.device_prof_avaya_scEthPortFragments` | `{packet}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of packets received that were less than 64 octets |\n| `snmp.device_prof_avaya_scEthPortFunctionalStatus` | `{status}` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | Functional status of the port |\n| `snmp.device_prof_avaya_scEthPortGoodBroadcastOctetsRec` | `By/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of good octets received that were directed to the broadcast address |\n| `snmp.device_prof_avaya_scEthPortGoodBroadcastPktsRec` | `{packet}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of good packets received that were directed to the broadcast address |\n| `snmp.device_prof_avaya_scEthPortGoodMulticastOctetsRec` | `By/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of good octets received that were directed to a multicast address |\n| `snmp.device_prof_avaya_scEthPortGoodMulticastPktsRec` | `{packet}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of good packets received that were directed to a multicast address |\n| `snmp.device_prof_avaya_scEthPortGoodOctetsRec` | `By/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of good octets of data received |\n| `snmp.device_prof_avaya_scEthPortGoodOctetsSent` | `By/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of good octets of data sent |\n| `snmp.device_prof_avaya_scEthPortGoodPktsRec` | `{packet}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of good packets received |\n| `snmp.device_prof_avaya_scEthPortGoodUnicastPktsRec` | `{packet}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of good packets received that were directed to a unicast address |\n| `snmp.device_prof_avaya_scEthPortJabber` | `{packet}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of packets received that were longer than 1518 octets |\n| `snmp.device_prof_avaya_scEthPortLateCollisions` | `{collision}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The best estimate of the total number of late collisions |\n| `snmp.device_prof_avaya_scEthPortMode` | `{status}` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | Port duplex mode |\n| `snmp.device_prof_avaya_scEthPortMulticastPktsSent` | `{packet}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of good packets sent by the port that were directed to a multicast address |\n| `snmp.device_prof_avaya_scEthPortOctetsRec` | `By/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of good octets received and bad octets filtered by the port |\n| `snmp.device_prof_avaya_scEthPortOversizePkts` | `{packet}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of packets received that were longer than 1518 octets |\n| `snmp.device_prof_avaya_scEthPortPkts1024to1518Octets` | `By/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of packets (including error packets) that were between 1024 and 1518 octets |\n| `snmp.device_prof_avaya_scEthPortPkts128to255Octets` | `By/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of packets (including error packets) that were between 128 and 255 octets |\n| `snmp.device_prof_avaya_scEthPortPkts256to511Octets` | `By/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of packets (including error packets) that were between 256 and 511 octets |\n| `snmp.device_prof_avaya_scEthPortPkts512to1023Octets` | `By/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of packets (including error packets) that were between 512 and 1023 octets |\n| `snmp.device_prof_avaya_scEthPortPkts64Octets` | `By/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of packets (including error packets) that were 64 octets in length |\n| `snmp.device_prof_avaya_scEthPortPkts65to127Octets` | `By/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of packets (including error packets) that were between 65 and 127 octets |\n| `snmp.device_prof_avaya_scEthPortPktsRec` | `{packet}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of good packets received and bad packets filtered by the port |\n| `snmp.device_prof_avaya_scEthPortTotalOctets` | `By/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of octets received and transmitted |\n| `snmp.device_prof_avaya_scEthPortTotalPkts` | `{packet}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of packets received and transmitted |\n| `snmp.device_prof_avaya_scEthPortUndersizePktsRec` | `{packet}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of packets received that were less than 64 octets long |\n| `snmp.device_prof_avaya_scEthPortUnicastPktsSent` | `{packet}/s` | per avaya_sc_eth_port_index, avaya_sc_eth_port_group_id, avaya_sc_eth_port_id | The total number of good packets sent by the port that were directed to a unicast address |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_genMemUtilizationDynAllocMemAvailable` | `By` | device | The available dynamically allocated memory |\n| `snmp.device_prof_genMemUtilizationDynAllocMemUsed` | `By` | device | The dynamically allocated memory has been used |\n| `snmp.device_prof_genMemUtilizationPercentUsed` | `%` | per mem_module_index | The percentage of memory used |\n| `snmp.device_prof_genMemUtilizationPhyRam` | `By` | per mem_module_index | The total size of the physical RAM |\n| `snmp.device_prof_genMemUtilizationTotalRAM` | `By` | device | The total size of the RAM |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Avaya_Cajun_Switch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Avaya Media Gateway",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["avaya","media","gateway","snmp","media gateway","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Avaya Media Gateway\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Avaya Media Gateway (media gateway) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 2 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **avaya-media-gateway.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Avaya Media Gateway via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Avaya Media Gateway profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**39 metrics** in 9 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 2 |\n| Hardware / Sensor | 2 |\n| Network / Interface | 4 |\n| Network / Routing | 10 |\n| System / CPU | 1 |\n| System / Memory | 5 |\n| System / Uptime | 1 |\n| Voice / H248 | 3 |\n| Voice / VoIPEngine | 11 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_avaya_avEntPhyChFruFault` | `{status}` | per avaya_ent_physical_index | Description of FRU fault |\n| `snmp.device_prof_avaya_avEntPhyChFruOperStat` | `{status}` | per avaya_ent_physical_index | Operational status of the chassis FRU unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_entPhySensorOperStatus` | `{status}` | per sensor_index, rm:sensor_type, rm:sensor_scale, rm:sensor_precision | Operational status of the sensor |\n| `snmp.device_prof_entPhySensorValue` | `1` | per sensor_index, rm:sensor_type, rm:sensor_scale, rm:sensor_precision | Most recent measurement obtained by the agent for this sensor |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_genMemUtilizationDynAllocMemAvailable` | `By` | device | The available dynamically allocated memory |\n| `snmp.device_prof_genMemUtilizationDynAllocMemUsed` | `By` | device | The dynamically allocated memory has been used |\n| `snmp.device_prof_genMemUtilizationPercentUsed` | `%` | per mem_module_index | The percentage of memory used |\n| `snmp.device_prof_genMemUtilizationPhyRam` | `By` | per mem_module_index | The total size of the physical RAM |\n| `snmp.device_prof_genMemUtilizationTotalRAM` | `By` | device | The total size of the RAM |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Voice / H248\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_avaya_cmgH248LinkErrorCode` | `{status}` | device | Most recently received H.248 error code affecting the link between media gateway and controller |\n| `snmp.device_prof_avaya_cmgLocalSig802Priority` | `1` | device | 802.1 priority for signaling traffic on the H.248 link locally administered |\n| `snmp.device_prof_avaya_cmgRemoteSig802Priority` | `1` | device | 802.1 priority for signaling traffic on the H.248 link received from the controller |\n\n### Voice / VoIPEngine\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_avaya_cmgDSPCoreAdminState` | `{status}` | per avaya_cmg_dsp_core_id | Maintenance busy-out state |\n| `snmp.device_prof_avaya_cmgDSPCoreChannelsInUse` | `{channel}` | per avaya_cmg_dsp_core_id | Number of channels currently in use at the DSP core |\n| `snmp.device_prof_avaya_cmgDSPCoreDemandTestResult` | `{status}` | per avaya_cmg_dsp_core_id | Result of demand test |\n| `snmp.device_prof_avaya_cmgDSPCoreStatus` | `{status}` | per avaya_cmg_dsp_core_id | Status of the DSP core |\n| `snmp.device_prof_avaya_cmgDSPCoreTotalChannels` | `{channel}` | per avaya_cmg_dsp_core_id | Total number of channels available to the DSP core |\n| `snmp.device_prof_avaya_cmgVoipAdminState` | `{status}` | per avaya_cmg_voip_current_ip_address | Maintenance busy-out state |\n| `snmp.device_prof_avaya_cmgVoipAverageOccupancy` | `%` | per avaya_cmg_voip_current_ip_address | Five-minute average occupancy of the VoIP engine |\n| `snmp.device_prof_avaya_cmgVoipChannelsInUse` | `{channel}` | per avaya_cmg_voip_current_ip_address | Number of channels currently in use at the VoIP engine |\n| `snmp.device_prof_avaya_cmgVoipDspStatus` | `{status}` | per avaya_cmg_voip_current_ip_address | Status of the DSP complex |\n| `snmp.device_prof_avaya_cmgVoipHyperactivity` | `{status}` | per avaya_cmg_voip_current_ip_address | Indicates whether hyperactivity has been detected |\n| `snmp.device_prof_avaya_cmgVoipTotalChannels` | `{channel}` | per avaya_cmg_voip_current_ip_address | Total number of channels available to the VoIP engine |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Avaya_Media_Gateway",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Avaya Nortel Ethernet Routing Switch",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["avaya","nortel","ethernet","routing","switch","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Avaya Nortel Ethernet Routing Switch\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Avaya Nortel Ethernet Routing Switch (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **avaya-nortel-ethernet-routing-switch.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Avaya Nortel Ethernet Routing Switch via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Avaya Nortel Ethernet Routing Switch profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**16 metrics** in 6 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Environment / Temperature | 1 |\n| Hardware / Chassis | 2 |\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Memory | 7 |\n| System / Uptime | 1 |\n\n### Environment / Temperature\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_avaya_s5ChasTmpSnrTmpValue` | `Cel` | device | Current temperature value of the temperature sensor measured in units of a half degree centigrade |\n\n### Hardware / Chassis\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_avaya_s5ChasComAdminState` | `{status}` | per avaya_s5_chas_com_descr | Desired state of the component or sub-component |\n| `snmp.device_prof_avaya_s5ChasComOperState` | `{status}` | per avaya_s5_chas_com_descr | Current operational state of the component or sub-component |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_genMemUtilizationDynAllocMemAvailable` | `By` | device | The available dynamically allocated memory |\n| `snmp.device_prof_genMemUtilizationDynAllocMemUsed` | `By` | device | The dynamically allocated memory has been used |\n| `snmp.device_prof_genMemUtilizationPercentUsed` | `%` | per mem_module_index | The percentage of memory used |\n| `snmp.device_prof_genMemUtilizationPhyRam` | `By` | per mem_module_index | The total size of the physical RAM |\n| `snmp.device_prof_genMemUtilizationTotalRAM` | `By` | device | The total size of the RAM |\n| `snmp.device_prof_memory_free` | `By` | device | Available RAM of unit |\n| `snmp.device_prof_memory_total` | `By` | device | Total RAM of unit |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Avaya_Nortel_Ethernet_Routing_Switch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Avocent ACS",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["avocent","acs","snmp","console server","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Avocent ACS\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Avocent ACS (console server) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 8 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **avocent-acs.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Avocent ACS via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Avocent ACS profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**37 metrics** in 8 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / PowerSupply | 2 |\n| Hardware / SerialPort | 1 |\n| Network / Interface | 4 |\n| System / Activity | 1 |\n| System / CPU | 2 |\n| System / Disk | 15 |\n| System / Memory | 11 |\n| System / Uptime | 1 |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_avocent_acsPowerSupplyStatePw1` | `{status}` | device | State of the first power supply |\n| `snmp.device_prof_avocent_acsPowerSupplyStatePw2` | `{status}` | device | State of the second power supply |\n\n### Hardware / SerialPort\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_avocent_acsSerialPortTableStatus` | `{status}` | per avocent_acs_serial_port_table_device_name, avocent_acs_serial_port_table_name | The status of the serial port |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_avocent_acsActiveSessionsNumberOfSession` | `{session}` | device | Number of active sessions |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_ssRawContexts` | `{switch}/s` | device | Number of context switches |\n| `snmp.device_prof_ucd_ssRawInterrupts` | `{interrupt}/s` | device | Number of interrupts processed |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_diskIOLA1` | `%` | per ucd_disk_io_device | The 1 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA15` | `%` | per ucd_disk_io_device | The 15 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA5` | `%` | per ucd_disk_io_device | The 5 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIONReadX` | `By/s` | per ucd_disk_io_device | The number of bytes read from this device since boot |\n| `snmp.device_prof_ucd_diskIONWrittenX` | `By/s` | per ucd_disk_io_device | The number of bytes written to this device since boot |\n| `snmp.device_prof_ucd_diskIOReads` | `{read}/s` | per ucd_disk_io_device | The number of read accesses from this device since boot |\n| `snmp.device_prof_ucd_diskIOWrites` | `{write}/s` | per ucd_disk_io_device | The number of write accesses to this device since boot |\n| `snmp.device_prof_ucd_dskAvail` | `By` | per ucd_dsk_path, ucd_dsk_device | Available space on the disk |\n| `snmp.device_prof_ucd_dskErrorFlag` | `{status}` | per ucd_dsk_path, ucd_dsk_device | Flag signaling that the disk or partition is under the minimum required space configured for it |\n| `snmp.device_prof_ucd_dskPercent` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of space used on disk |\n| `snmp.device_prof_ucd_dskPercentNode` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of inodes used on disk |\n| `snmp.device_prof_ucd_dskTotal` | `By` | per ucd_dsk_path, ucd_dsk_device | Total size of the disk/partition |\n| `snmp.device_prof_ucd_dskUsed` | `By` | per ucd_dsk_path, ucd_dsk_device | Used space on the disk |\n| `snmp.device_prof_ucd_ssIORawReceived` | `By/s` | device | Amount of data read from disk or other block device |\n| `snmp.device_prof_ucd_ssIORawSent` | `By/s` | device | Amount of data written to disk or other block device |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | device | The amount of real/physical memory currently unused or available |\n| `snmp.device_prof_ucd_memAvailSwap` | `By` | device | The amount of swap space currently unused or available |\n| `snmp.device_prof_ucd_memBuffer` | `By` | device | The total amount of real or virtual memory currently allocated for use as memory buffers |\n| `snmp.device_prof_ucd_memCached` | `By` | device | The total amount of real or virtual memory currently allocated for use as cached memory |\n| `snmp.device_prof_ucd_memMinimumSwap` | `By` | device | The minimum amount of swap space expected to be kept free or available during normal operation of this host |\n| `snmp.device_prof_ucd_memShared` | `By` | device | The total amount of real or virtual memory currently allocated for use as shared memory |\n| `snmp.device_prof_ucd_memTotalFree` | `By` | device | The total amount of memory free or available for use on this host |\n| `snmp.device_prof_ucd_memTotalSwap` | `By` | device | The total amount of swap space configured for this host |\n| `snmp.device_prof_ucd_memoryTotal` | `By` | device | The total amount of real/physical memory installed on this host |\n| `snmp.device_prof_ucd_ssRawSwapIn` | `By/s` | device | Amount of memory swapped in from disk |\n| `snmp.device_prof_ucd_ssRawSwapOut` | `By/s` | device | Amount of memory swapped out to disk |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Avocent_ACS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Avtech",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["avtech","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Avtech\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Avtech (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **avtech.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Avtech via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Avtech profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**1 metrics** in 1 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| System / Uptime | 1 |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Avtech",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Avtech Roomalert 32S",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["avtech","roomalert","32s","snmp","room alert monitor","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Avtech Roomalert 32S\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Avtech Roomalert 32S (room alert monitor) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **avtech-roomalert-32s.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Avtech Roomalert 32S via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Avtech Roomalert 32S profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**6 metrics** in 2 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Sensor | 5 |\n| System / Uptime | 1 |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_roomalert_32s_internal_heat_index` | `degF` | device | Internal heat index |\n| `snmp.device_prof_roomalert_32s_internal_heat_indexC` | `Cel` | device | Internal heat index |\n| `snmp.device_prof_roomalert_32s_internal_humidity` | `%` | device | Internal relative humidity percentage |\n| `snmp.device_prof_roomalert_32s_internal_tempc` | `Cel` | device | Internal temperature |\n| `snmp.device_prof_roomalert_32s_internal_tempf` | `degF` | device | Internal temperature |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Avtech_Roomalert_32S",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Avtech Roomalert 3E",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["avtech","roomalert","3e","snmp","room alert monitor","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Avtech Roomalert 3E\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Avtech Roomalert 3E (room alert monitor) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **avtech-roomalert-3e.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Avtech Roomalert 3E via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Avtech Roomalert 3E profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**16 metrics** in 3 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Sensor | 8 |\n| Hardware / SignalTower | 7 |\n| System / Uptime | 1 |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_roomalert_3e_digital_sen1_1` | `Cel` | device | The current temperature reading of the Internal Temperature Sensor |\n| `snmp.device_prof_roomalert_3e_digital_sen1_2` | `degF` | device | The current temperature reading of the Internal Temperature Sensor |\n| `snmp.device_prof_roomalert_3e_digital_sen2_1` | `Cel` | device | Current temperature |\n| `snmp.device_prof_roomalert_3e_digital_sen2_2` | `degF` | device | Current temperature |\n| `snmp.device_prof_roomalert_3e_digital_sen2_3` | `%` | device | Current relative humidity |\n| `snmp.device_prof_roomalert_3e_digital_sen2_4` | `degF` | device | Current heat index |\n| `snmp.device_prof_roomalert_3e_digital_sen2_5` | `Cel` | device | Current heat index |\n| `snmp.device_prof_roomalert_3e_switch_sen1` | `{status}` | device | The reading for the switch sensor |\n\n### Hardware / SignalTower\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_roomalert_3e_alarm1` | `{status}` | device | The status of the Signal Tower alarm1 |\n| `snmp.device_prof_roomalert_3e_alarm2` | `{status}` | device | The status of the Signal Tower alarm2 |\n| `snmp.device_prof_roomalert_3e_amber_led` | `{status}` | device | The status of the amber Signal Tower LED |\n| `snmp.device_prof_roomalert_3e_blue_led` | `{status}` | device | The status of the blue Signal Tower LED |\n| `snmp.device_prof_roomalert_3e_green_led` | `{status}` | device | The status of the green Signal Tower LED |\n| `snmp.device_prof_roomalert_3e_red_led` | `{status}` | device | The status of the red Signal Tower LED |\n| `snmp.device_prof_roomalert_3e_white_led` | `{status}` | device | The status of the white Signal Tower LED |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Avtech_Roomalert_3E",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Avtech Roomalert 3S",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["avtech","roomalert","3s","snmp","room alert monitor","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Avtech Roomalert 3S\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Avtech Roomalert 3S (room alert monitor) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **avtech-roomalert-3s.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Avtech Roomalert 3S via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Avtech Roomalert 3S profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**8 metrics** in 2 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Sensor | 7 |\n| System / Uptime | 1 |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_roomalert_3s_digital_sen1_1` | `Cel` | device | Current temperature |\n| `snmp.device_prof_roomalert_3s_digital_sen1_2` | `degF` | device | Current temperature |\n| `snmp.device_prof_roomalert_3s_digital_sen1_6` | `Cel` | device | Current dew point |\n| `snmp.device_prof_roomalert_3s_digital_sen1_7` | `degF` | device | Current dew point |\n| `snmp.device_prof_roomalert_3s_internal_tempc` | `Cel` | device | Internal temperature |\n| `snmp.device_prof_roomalert_3s_internal_tempf` | `degF` | device | Internal temperature |\n| `snmp.device_prof_roomalert_3s_switch_sen1` | `{status}` | device | The reading for switch sensor 1 |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Avtech_Roomalert_3S",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Barracuda",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["barracuda","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Barracuda\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Barracuda (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **barracuda.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Barracuda via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Barracuda profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**33 metrics** in 5 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / CPU | 2 |\n| System / Disk | 15 |\n| System / Memory | 11 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_ssRawContexts` | `{switch}/s` | device | Number of context switches |\n| `snmp.device_prof_ucd_ssRawInterrupts` | `{interrupt}/s` | device | Number of interrupts processed |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_diskIOLA1` | `%` | per ucd_disk_io_device | The 1 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA15` | `%` | per ucd_disk_io_device | The 15 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA5` | `%` | per ucd_disk_io_device | The 5 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIONReadX` | `By/s` | per ucd_disk_io_device | The number of bytes read from this device since boot |\n| `snmp.device_prof_ucd_diskIONWrittenX` | `By/s` | per ucd_disk_io_device | The number of bytes written to this device since boot |\n| `snmp.device_prof_ucd_diskIOReads` | `{read}/s` | per ucd_disk_io_device | The number of read accesses from this device since boot |\n| `snmp.device_prof_ucd_diskIOWrites` | `{write}/s` | per ucd_disk_io_device | The number of write accesses to this device since boot |\n| `snmp.device_prof_ucd_dskAvail` | `By` | per ucd_dsk_path, ucd_dsk_device | Available space on the disk |\n| `snmp.device_prof_ucd_dskErrorFlag` | `{status}` | per ucd_dsk_path, ucd_dsk_device | Flag signaling that the disk or partition is under the minimum required space configured for it |\n| `snmp.device_prof_ucd_dskPercent` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of space used on disk |\n| `snmp.device_prof_ucd_dskPercentNode` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of inodes used on disk |\n| `snmp.device_prof_ucd_dskTotal` | `By` | per ucd_dsk_path, ucd_dsk_device | Total size of the disk/partition |\n| `snmp.device_prof_ucd_dskUsed` | `By` | per ucd_dsk_path, ucd_dsk_device | Used space on the disk |\n| `snmp.device_prof_ucd_ssIORawReceived` | `By/s` | device | Amount of data read from disk or other block device |\n| `snmp.device_prof_ucd_ssIORawSent` | `By/s` | device | Amount of data written to disk or other block device |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | device | The amount of real/physical memory currently unused or available |\n| `snmp.device_prof_ucd_memAvailSwap` | `By` | device | The amount of swap space currently unused or available |\n| `snmp.device_prof_ucd_memBuffer` | `By` | device | The total amount of real or virtual memory currently allocated for use as memory buffers |\n| `snmp.device_prof_ucd_memCached` | `By` | device | The total amount of real or virtual memory currently allocated for use as cached memory |\n| `snmp.device_prof_ucd_memMinimumSwap` | `By` | device | The minimum amount of swap space expected to be kept free or available during normal operation of this host |\n| `snmp.device_prof_ucd_memShared` | `By` | device | The total amount of real or virtual memory currently allocated for use as shared memory |\n| `snmp.device_prof_ucd_memTotalFree` | `By` | device | The total amount of memory free or available for use on this host |\n| `snmp.device_prof_ucd_memTotalSwap` | `By` | device | The total amount of swap space configured for this host |\n| `snmp.device_prof_ucd_memoryTotal` | `By` | device | The total amount of real/physical memory installed on this host |\n| `snmp.device_prof_ucd_ssRawSwapIn` | `By/s` | device | Amount of memory swapped in from disk |\n| `snmp.device_prof_ucd_ssRawSwapOut` | `By/s` | device | Amount of memory swapped out to disk |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Barracuda",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Barracuda Cloudgen",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["barracuda","cloudgen","snmp","firewall","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Barracuda Cloudgen\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Barracuda Cloudgen (firewall) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **barracuda-cloudgen.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Barracuda Cloudgen via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Barracuda Cloudgen profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**50 metrics** in 8 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| Network / QoS | 14 |\n| Network / VPN | 2 |\n| System / CPU | 2 |\n| System / Disk | 15 |\n| System / Memory | 11 |\n| System / Service | 1 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / QoS\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_phion_trafficShape_class1Drop` | `{drop}/s` | per connector_name | Dropped packets for class1 |\n| `snmp.device_prof_phion_trafficShape_class1Packets` | `{packet}/s` | per connector_name | Total packets for class1 |\n| `snmp.device_prof_phion_trafficShape_class1Total` | `bit/s` | per connector_name | Total bytes for class1 |\n| `snmp.device_prof_phion_trafficShape_class2Drop` | `{drop}/s` | per connector_name | Dropped packets for class2 |\n| `snmp.device_prof_phion_trafficShape_class2Pakets` | `{packet}/s` | per connector_name | Total packets for class2 |\n| `snmp.device_prof_phion_trafficShape_class2Total` | `bit/s` | per connector_name | Total bytes for class2 |\n| `snmp.device_prof_phion_trafficShape_class3Drop` | `{drop}/s` | per connector_name | Dropped packets for class3 |\n| `snmp.device_prof_phion_trafficShape_class3Pakets` | `{packet}/s` | per connector_name | Total packets for class3 |\n| `snmp.device_prof_phion_trafficShape_class3Total` | `bit/s` | per connector_name | Total bytes for class3 |\n| `snmp.device_prof_phion_trafficShape_noDelayDrop` | `{drop}/s` | per connector_name | Dropped packets for no delay |\n| `snmp.device_prof_phion_trafficShape_noDelayPakets` | `{packet}/s` | per connector_name | Total packets for no delay |\n| `snmp.device_prof_phion_trafficShape_noDelayTotal` | `bit/s` | per connector_name | Total bytes for no delay |\n| `snmp.device_prof_phion_trafficShape_rate` | `bit/s` | per connector_name | Traffic shape rate |\n| `snmp.device_prof_phion_trafficShape_sessions` | `{session}/s` | per connector_name | Number of sessions |\n\n### Network / VPN\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_phion_vpnUsers` | `{user}` | device | Number of VPN users |\n| `snmp.device_prof_vpnState` | `{status}` | per vpn_name | VPN state |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_ssRawContexts` | `{switch}/s` | device | Number of context switches |\n| `snmp.device_prof_ucd_ssRawInterrupts` | `{interrupt}/s` | device | Number of interrupts processed |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_diskIOLA1` | `%` | per ucd_disk_io_device | The 1 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA15` | `%` | per ucd_disk_io_device | The 15 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA5` | `%` | per ucd_disk_io_device | The 5 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIONReadX` | `By/s` | per ucd_disk_io_device | The number of bytes read from this device since boot |\n| `snmp.device_prof_ucd_diskIONWrittenX` | `By/s` | per ucd_disk_io_device | The number of bytes written to this device since boot |\n| `snmp.device_prof_ucd_diskIOReads` | `{read}/s` | per ucd_disk_io_device | The number of read accesses from this device since boot |\n| `snmp.device_prof_ucd_diskIOWrites` | `{write}/s` | per ucd_disk_io_device | The number of write accesses to this device since boot |\n| `snmp.device_prof_ucd_dskAvail` | `By` | per ucd_dsk_path, ucd_dsk_device | Available space on the disk |\n| `snmp.device_prof_ucd_dskErrorFlag` | `{status}` | per ucd_dsk_path, ucd_dsk_device | Flag signaling that the disk or partition is under the minimum required space configured for it |\n| `snmp.device_prof_ucd_dskPercent` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of space used on disk |\n| `snmp.device_prof_ucd_dskPercentNode` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of inodes used on disk |\n| `snmp.device_prof_ucd_dskTotal` | `By` | per ucd_dsk_path, ucd_dsk_device | Total size of the disk/partition |\n| `snmp.device_prof_ucd_dskUsed` | `By` | per ucd_dsk_path, ucd_dsk_device | Used space on the disk |\n| `snmp.device_prof_ucd_ssIORawReceived` | `By/s` | device | Amount of data read from disk or other block device |\n| `snmp.device_prof_ucd_ssIORawSent` | `By/s` | device | Amount of data written to disk or other block device |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | device | The amount of real/physical memory currently unused or available |\n| `snmp.device_prof_ucd_memAvailSwap` | `By` | device | The amount of swap space currently unused or available |\n| `snmp.device_prof_ucd_memBuffer` | `By` | device | The total amount of real or virtual memory currently allocated for use as memory buffers |\n| `snmp.device_prof_ucd_memCached` | `By` | device | The total amount of real or virtual memory currently allocated for use as cached memory |\n| `snmp.device_prof_ucd_memMinimumSwap` | `By` | device | The minimum amount of swap space expected to be kept free or available during normal operation of this host |\n| `snmp.device_prof_ucd_memShared` | `By` | device | The total amount of real or virtual memory currently allocated for use as shared memory |\n| `snmp.device_prof_ucd_memTotalFree` | `By` | device | The total amount of memory free or available for use on this host |\n| `snmp.device_prof_ucd_memTotalSwap` | `By` | device | The total amount of swap space configured for this host |\n| `snmp.device_prof_ucd_memoryTotal` | `By` | device | The total amount of real/physical memory installed on this host |\n| `snmp.device_prof_ucd_ssRawSwapIn` | `By/s` | device | Amount of memory swapped in from disk |\n| `snmp.device_prof_ucd_ssRawSwapOut` | `By/s` | device | Amount of memory swapped out to disk |\n\n### System / Service\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_boxServiceState` | `{status}` | per box_service_name | Box service state |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Barracuda_Cloudgen",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Blue Coat Licensing",link:"",categories:["network-performance-monitoring.licensing"],icon_filename:"SNMP.png"},keywords:["blue coat","license","licensing","entitlement","expiry","snmp","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Blue Coat Licensing\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nTrack license state, entitlements, and expiry on Blue Coat devices over SNMP with Netdata.\n\nNetdata reads Blue Coat licensing telemetry (state, usage, and expiry timers) exposed over SNMP and normalizes it into per-device licensing charts and the `snmp:licenses` function.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDetected automatically for Blue Coat devices that expose licensing telemetry.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",integration_type:"device",id:"go.d.plugin-snmp-Blue_Coat_Licensing",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Bluecat Server",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["bluecat","server","snmp","server","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Bluecat Server\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Bluecat Server (server) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **bluecat-server.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Bluecat Server via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Bluecat Server profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**42 metrics** in 8 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / DHCP | 4 |\n| Network / Interface | 4 |\n| System / Activity | 2 |\n| System / CPU | 3 |\n| System / Disk | 15 |\n| System / Memory | 11 |\n| System / Uptime | 1 |\n| Uncategorized | 2 |\n\n### Network / DHCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_bcnDhcpv4PoolFreeAddresses` | `{ip_address}` | per bcn_dhcpv4_pool_subnet_ip, rm:bcn_dhcpv4_pool_start_ip, rm:bcn_dhcpv4_pool_end_ip | The number of IPs addresses available in this pool |\n| `snmp.device_prof_bcnDhcpv4PoolSize` | `{ip_address}` | per bcn_dhcpv4_pool_subnet_ip, rm:bcn_dhcpv4_pool_start_ip, rm:bcn_dhcpv4_pool_end_ip | Pool size |\n| `snmp.device_prof_bcnDhcpv4SubnetFreeAddresses` | `{ip_address}` | per rm:bcn_dhcpv4_subnet_ip, rm:bcn_dhcpv4_subnet_mask | The number of IPs addresses available in this subnet. |\n| `snmp.device_prof_bcnDhcpv4SubnetSize` | `{ip_address}` | per rm:bcn_dhcpv4_subnet_ip, rm:bcn_dhcpv4_subnet_mask | Size of the subnet |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n| `snmp.device_prof_ucd_ssRawContexts` | `{switch}/s` | device | Number of context switches |\n| `snmp.device_prof_ucd_ssRawInterrupts` | `{interrupt}/s` | device | Number of interrupts processed |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_diskIOLA1` | `%` | per ucd_disk_io_device | The 1 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA15` | `%` | per ucd_disk_io_device | The 15 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA5` | `%` | per ucd_disk_io_device | The 5 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIONReadX` | `By/s` | per ucd_disk_io_device | The number of bytes read from this device since boot |\n| `snmp.device_prof_ucd_diskIONWrittenX` | `By/s` | per ucd_disk_io_device | The number of bytes written to this device since boot |\n| `snmp.device_prof_ucd_diskIOReads` | `{read}/s` | per ucd_disk_io_device | The number of read accesses from this device since boot |\n| `snmp.device_prof_ucd_diskIOWrites` | `{write}/s` | per ucd_disk_io_device | The number of write accesses to this device since boot |\n| `snmp.device_prof_ucd_dskAvail` | `By` | per ucd_dsk_path, ucd_dsk_device | Available space on the disk |\n| `snmp.device_prof_ucd_dskErrorFlag` | `{status}` | per ucd_dsk_path, ucd_dsk_device | Flag signaling that the disk or partition is under the minimum required space configured for it |\n| `snmp.device_prof_ucd_dskPercent` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of space used on disk |\n| `snmp.device_prof_ucd_dskPercentNode` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of inodes used on disk |\n| `snmp.device_prof_ucd_dskTotal` | `By` | per ucd_dsk_path, ucd_dsk_device | Total size of the disk/partition |\n| `snmp.device_prof_ucd_dskUsed` | `By` | per ucd_dsk_path, ucd_dsk_device | Used space on the disk |\n| `snmp.device_prof_ucd_ssIORawReceived` | `By/s` | device | Amount of data read from disk or other block device |\n| `snmp.device_prof_ucd_ssIORawSent` | `By/s` | device | Amount of data written to disk or other block device |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | device | The amount of real/physical memory currently unused or available |\n| `snmp.device_prof_ucd_memAvailSwap` | `By` | device | The amount of swap space currently unused or available |\n| `snmp.device_prof_ucd_memBuffer` | `By` | device | The total amount of real or virtual memory currently allocated for use as memory buffers |\n| `snmp.device_prof_ucd_memCached` | `By` | device | The total amount of real or virtual memory currently allocated for use as cached memory |\n| `snmp.device_prof_ucd_memMinimumSwap` | `By` | device | The minimum amount of swap space expected to be kept free or available during normal operation of this host |\n| `snmp.device_prof_ucd_memShared` | `By` | device | The total amount of real or virtual memory currently allocated for use as shared memory |\n| `snmp.device_prof_ucd_memTotalFree` | `By` | device | The total amount of memory free or available for use on this host |\n| `snmp.device_prof_ucd_memTotalSwap` | `By` | device | The total amount of swap space configured for this host |\n| `snmp.device_prof_ucd_memoryTotal` | `By` | device | The total amount of real/physical memory installed on this host |\n| `snmp.device_prof_ucd_ssRawSwapIn` | `By/s` | device | Amount of memory swapped in from disk |\n| `snmp.device_prof_ucd_ssRawSwapOut` | `By/s` | device | Amount of memory swapped out to disk |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Bluecat_Server",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Bluecoat Proxysg",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["bluecoat","proxysg","snmp","proxy","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Bluecoat Proxysg\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Bluecoat Proxysg (proxy) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **bluecoat-proxysg.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Bluecoat Proxysg via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Bluecoat Proxysg profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**5 metrics** in 2 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Bluecoat_Proxysg",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Brocade",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["brocade","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Brocade\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Brocade (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **brocade.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Brocade via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Brocade profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**5 metrics** in 2 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Brocade",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Brocade FC Switch",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["brocade","fc","switch","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Brocade FC Switch\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Brocade FC Switch (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 16 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **brocade-fc-switch.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Brocade FC Switch via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Brocade FC Switch profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**27 metrics** in 5 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / FibreChannel | 20 |\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Memory | 1 |\n| System / Uptime | 1 |\n\n### Network / FibreChannel\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fcFxPortAdminMode` | `{status}` | per fc_fe_module_index, fc_fx_port_index | Desired operational mode of the FxPort |\n| `snmp.device_prof_fcFxPortBbCreditAvailable` | `{buffer}` | per fc_fe_module_index, fc_fx_port_index | Buffers currently available for receiving frames from the attached port in the buffer-to-buffer flow control |\n| `snmp.device_prof_fcFxPortOperMode` | `{status}` | per fc_fe_module_index, fc_fx_port_index | Operational mode of the FxPort |\n| `snmp.device_prof_fcFxPortPhysAdminStatus` | `{status}` | per fc_fe_module_index, fc_fx_port_index | Desired state of the FxPort |\n| `snmp.device_prof_fcFxPortPhysOperStatus` | `{status}` | per fc_fe_module_index, fc_fx_port_index | Current operational status of the FxPort |\n| `snmp.device_prof_swFCPortC3Discards` | `{frame}/s` | per sw_fc_port_name, sw_fc_port_specifier | Number of Class 3 frames discarded by the port. |\n| `snmp.device_prof_swFCPortNoTxCredits` | `{time}/s` | per sw_fc_port_name, sw_fc_port_specifier | Number of times when the transmit credit has reached zero |\n| `snmp.device_prof_swFCPortRcTruncs` | `{frame}/s` | per sw_fc_port_name, sw_fc_port_specifier | Number of truncated frames received by the port |\n| `snmp.device_prof_swFCPortRxBadEofs` | `{frame}/s` | per sw_fc_port_name, sw_fc_port_specifier | Number of received frames with bad EOF delimiter |\n| `snmp.device_prof_swFCPortRxBadOs` | `{error}/s` | per sw_fc_port_name, sw_fc_port_specifier | Number of invalid Ordered Sets received |\n| `snmp.device_prof_swFCPortRxC2Frames` | `{frame}/s` | per sw_fc_port_name, sw_fc_port_specifier | Number of Class 2 frames received by the port |\n| `snmp.device_prof_swFCPortRxC3Frames` | `{frame}/s` | per sw_fc_port_name, sw_fc_port_specifier | Number of Class 3 frames received by the port |\n| `snmp.device_prof_swFCPortRxCrcs` | `{error}/s` | per sw_fc_port_name, sw_fc_port_specifier | Number of CRC errors detected for frames received |\n| `snmp.device_prof_swFCPortRxEncInFrs` | `{error}/s` | per sw_fc_port_name, sw_fc_port_specifier | Number of encoding or disparity errors inside frames received. |\n| `snmp.device_prof_swFCPortRxEncOutFrs` | `{error}/s` | per sw_fc_port_name, sw_fc_port_specifier | Number of encoding or disparity errors outside frames received |\n| `snmp.device_prof_swFCPortRxFrames` | `{frame}/s` | per sw_fc_port_name, sw_fc_port_specifier | Number of Fibre Channel frames received by the port |\n| `snmp.device_prof_swFCPortRxLCs` | `{frame}/s` | per sw_fc_port_name, sw_fc_port_specifier | Number of Link Control frames received by the port |\n| `snmp.device_prof_swFCPortRxTooLongs` | `{frame}/s` | per sw_fc_port_name, sw_fc_port_specifier | Number of received frames that are too long |\n| `snmp.device_prof_swFCPortTooManyRdys` | `{time}/s` | per sw_fc_port_name, sw_fc_port_specifier | Number of times when RDYs exceeds the frames received |\n| `snmp.device_prof_swFCPortTxFrames` | `{frame}/s` | per sw_fc_port_name, sw_fc_port_specifier | Number of Fibre Channel frames transmitted by the port |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_usage` | `%` | device | System's memory usage |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Brocade_FC_Switch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Brother",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["brother","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Brother\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Brother (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **brother.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Brother via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Brother profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**1 metrics** in 1 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| System / Uptime | 1 |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Brother",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Brother NET Printer",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["brother","net","printer","snmp","printer","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Brother NET Printer\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Brother NET Printer (printer) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **brother-net-printer.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Brother NET Printer via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Brother NET Printer profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**6 metrics** in 3 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Printer / Jam | 1 |\n| Printer / Toner | 4 |\n| System / Uptime | 1 |\n\n### Printer / Jam\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_brJamPlace` | `{status}` | device | Location of jam |\n\n### Printer / Toner\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_brToner1Low` | `{status}` | device | Black toner status |\n| `snmp.device_prof_brToner2Low` | `{status}` | device | Cyan toner status |\n| `snmp.device_prof_brToner3Low` | `{status}` | device | Magenta toner status |\n| `snmp.device_prof_brToner4Low` | `{status}` | device | Yellow toner status |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Brother_NET_Printer",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Chatsworth PDU",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["chatsworth","pdu","snmp","pdu","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Chatsworth PDU\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Chatsworth PDU (pdu) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **chatsworth-pdu.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Chatsworth PDU via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Chatsworth PDU profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**104 metrics** in 12 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Branch | 1 |\n| Hardware / Lock | 3 |\n| Hardware / Outlet | 1 |\n| Hardware / PDU | 6 |\n| Hardware / Sensor | 4 |\n| PowerFlow / Branch | 29 |\n| PowerFlow / Line | 4 |\n| PowerFlow / Outlet | 52 |\n| PowerFlow / PDU | 1 |\n| System / Firmware | 1 |\n| System / Uptime | 1 |\n| Uncategorized | 1 |\n\n### Hardware / Branch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpiPduBranchStatus` | `{status}` | per branch_id, pdu_name, pdu_name | Alarm status of the branch |\n\n### Hardware / Lock\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpiPduDoorStatus` | `{status}` | per lock_id | Door sensor status, closed or open |\n| `snmp.device_prof_cpiPduEasStatus` | `{status}` | per lock_id | Status of the Electronic Access Control system |\n| `snmp.device_prof_cpiPduLockStatus` | `{status}` | per lock_id | Lock status, closed or open |\n\n### Hardware / Outlet\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpiPduOutletStatus` | `{status}` | per outlet_id, outlet_name, outlet_branchid | Alarm status of the outlet |\n\n### Hardware / PDU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpiPduChainRole` | `{status}` | per pdu_macaddress, pdu_model, pdu_name, pdu_version, pdu_ipaddress, pdu_cabinetid | Role of the PDU in a daisy chain |\n| `snmp.device_prof_cpiPduNumberBranches` | `{branch}` | per pdu_macaddress, pdu_model, pdu_name, pdu_version, pdu_ipaddress, pdu_cabinetid | Number of branches in the PDU |\n| `snmp.device_prof_cpiPduNumberOutlets` | `{outlet}` | per pdu_macaddress, pdu_model, pdu_name, pdu_version, pdu_ipaddress, pdu_cabinetid | Number of outlets in the PDU |\n| `snmp.device_prof_cpiPduOutOfService` | `{status}` | per pdu_macaddress, pdu_model, pdu_name, pdu_version, pdu_ipaddress, pdu_cabinetid | Whether the PDU is in service |\n| `snmp.device_prof_outOfService` | `{status}` | device | PDU operation status |\n| `snmp.device_prof_pduRole` | `{status}` | device | PDU role |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_humidityProbe1` | `%` | device | Probe 1 humidity |\n| `snmp.device_prof_humidityProbe2` | `%` | device | Probe 1 humidity |\n| `snmp.device_prof_temperatureProbe1` | `degF` | device | Probe 1 temperature |\n| `snmp.device_prof_temperatureProbe2` | `degF` | device | Probe 2 temperature |\n\n### PowerFlow / Branch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpiPduBranchCurrent` | `A` | per branch_id, pdu_name, pdu_name | Current draw of the branch on the PDU |\n| `snmp.device_prof_cpiPduBranchEnergy` | `V` | per branch_id, pdu_name, pdu_name | Branch energy accumulated in decaVA-secs, divide by 360 to obtain VA-hr |\n| `snmp.device_prof_cpiPduBranchMaxCurrent` | `A` | per branch_id, pdu_name, pdu_name | Maximum current draw of the branch on the PDU |\n| `snmp.device_prof_cpiPduBranchPower` | `VA` | per branch_id, pdu_name, pdu_name | Power in volt-amps for the branch |\n| `snmp.device_prof_cpiPduBranchVoltage` | `V` | per branch_id, pdu_name, pdu_name | Voltage in volts of the branch on the PDU |\n| `snmp.device_prof_currentxy1` | `A` | device | XY1 current draw |\n| `snmp.device_prof_currentxy2` | `A` | device | XY2 current draw |\n| `snmp.device_prof_currentyz1` | `A` | device | YZ1 current draw |\n| `snmp.device_prof_currentyz2` | `A` | device | YZ2 current draw |\n| `snmp.device_prof_currentzx1` | `A` | device | ZX1 current draw |\n| `snmp.device_prof_currentzx2` | `A` | device | ZX2 current draw |\n| `snmp.device_prof_energyxy1s` | `daW` | device | XY1 branch energy accumulated |\n| `snmp.device_prof_energyxy2s` | `daW` | device | XY2 branch energy accumulated |\n| `snmp.device_prof_energyyz1s` | `daW` | device | YZ1 branch energy accumulated |\n| `snmp.device_prof_energyyz2s` | `daW` | device | YZ2 branch energy accumulated |\n| `snmp.device_prof_energyzx1s` | `daW` | device | ZX1 branch energy accumulated |\n| `snmp.device_prof_energyzx2s` | `daW` | device | ZX2 branch energy accumulated |\n| `snmp.device_prof_powerxy1` | `W` | device | XY1 power consumption in Watts |\n| `snmp.device_prof_powerxy2` | `W` | device | XY2 power consumption in Watts |\n| `snmp.device_prof_poweryz1` | `W` | device | YZ1 power consumption in Watts |\n| `snmp.device_prof_poweryz2` | `W` | device | YZ2 power consumption in Watts |\n| `snmp.device_prof_powerzx1` | `W` | device | ZX1 power consumption in Watts |\n| `snmp.device_prof_powerzx2` | `W` | device | ZX2 power consumption in Watts |\n| `snmp.device_prof_voltagexy1` | `V` | device | XY1 voltage in volts |\n| `snmp.device_prof_voltagexy2` | `V` | device | XY2 voltage in volts |\n| `snmp.device_prof_voltageyz1` | `V` | device | YZ1 voltage in volts |\n| `snmp.device_prof_voltageyz2` | `V` | device | YZ2 voltage in volts |\n| `snmp.device_prof_voltagezx1` | `V` | device | ZX1 voltage in volts |\n| `snmp.device_prof_voltagezx2` | `V` | device | ZX2 voltage in volts |\n\n### PowerFlow / Line\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpiPduLineCurrent` | `A` | per line_id | Current draw of the line on the PDU |\n| `snmp.device_prof_line1curr` | `A` | device | Line 1 current draw |\n| `snmp.device_prof_line2curr` | `A` | device | Line 2 current draw |\n| `snmp.device_prof_line3curr` | `A` | device | Line 3 current draw |\n\n### PowerFlow / Outlet\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpiPduOutletCurrent` | `A` | per outlet_id, outlet_name, outlet_branchid | Current draw in amp of the outlet on the PDU |\n| `snmp.device_prof_cpiPduOutletEnergy` | `W` | per outlet_id, outlet_name, outlet_branchid | Outlet energy accumulated in decaWatt-secs, divide by 360 to obtain Watt-hr |\n| `snmp.device_prof_cpiPduOutletPower` | `VA` | per outlet_id, outlet_name, outlet_branchid | Power in Volt-Amps of the outlet on the PDU |\n| `snmp.device_prof_cpiPduOutletVoltage` | `V` | per outlet_id, outlet_name, outlet_branchid | Voltage in volts of the outlet on the PDU |\n| `snmp.device_prof_outlet10Current` | `A` | device | Outlet10 current draw |\n| `snmp.device_prof_outlet11Current` | `A` | device | Outlet11 current draw |\n| `snmp.device_prof_outlet12Current` | `A` | device | Outlet12 current draw |\n| `snmp.device_prof_outlet13Current` | `A` | device | Outlet13 current draw |\n| `snmp.device_prof_outlet14Current` | `A` | device | Outlet14 current draw |\n| `snmp.device_prof_outlet15Current` | `A` | device | Outlet15 current draw |\n| `snmp.device_prof_outlet16Current` | `A` | device | Outlet16 current draw |\n| `snmp.device_prof_outlet17Current` | `A` | device | Outlet17 current draw |\n| `snmp.device_prof_outlet18Current` | `A` | device | Outlet18 current draw |\n| `snmp.device_prof_outlet19Current` | `A` | device | Outlet19 current draw |\n| `snmp.device_prof_outlet1Current` | `A` | device | Outlet1 current draw |\n| `snmp.device_prof_outlet20Current` | `A` | device | Outlet20 current draw |\n| `snmp.device_prof_outlet21Current` | `A` | device | Outlet21 current draw |\n| `snmp.device_prof_outlet22Current` | `A` | device | Outlet22 current draw |\n| `snmp.device_prof_outlet23Current` | `A` | device | Outlet23 current draw |\n| `snmp.device_prof_outlet24Current` | `A` | device | Outlet24 current draw |\n| `snmp.device_prof_outlet2Current` | `A` | device | Outlet2 current draw |\n| `snmp.device_prof_outlet3Current` | `A` | device | Outlet3 current draw |\n| `snmp.device_prof_outlet4Current` | `A` | device | Outlet4 current draw |\n| `snmp.device_prof_outlet5Current` | `A` | device | Outlet5 current draw |\n| `snmp.device_prof_outlet6Current` | `A` | device | Outlet6 current draw |\n| `snmp.device_prof_outlet7Current` | `A` | device | Outlet7 current draw |\n| `snmp.device_prof_outlet8Current` | `A` | device | Outlet8 current draw |\n| `snmp.device_prof_outlet9Current` | `A` | device | Outlet9 current draw |\n| `snmp.device_prof_receptacleEnergyoutlet10s` | `daW` | device | Outlet10 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet11s` | `daW` | device | Outlet11 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet12s` | `daW` | device | Outlet12 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet13s` | `daW` | device | Outlet13 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet14s` | `daW` | device | Outlet14 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet15s` | `daW` | device | Outlet15 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet16s` | `daW` | device | Outlet16 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet17s` | `daW` | device | Outlet17 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet18s` | `daW` | device | Outlet18 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet19s` | `daW` | device | Outlet19 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet1s` | `daW` | device | Outlet1 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet20s` | `daW` | device | Outlet20 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet21s` | `daW` | device | Outlet21 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet22s` | `daW` | device | Outlet22 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet23s` | `daW` | device | Outlet23 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet24s` | `daW` | device | Outlet24 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet2s` | `daW` | device | Outlet2 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet3s` | `daW` | device | Outlet3 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet4s` | `daW` | device | Outlet4 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet5s` | `daW` | device | Outlet5 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet6s` | `daW` | device | Outlet6 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet7s` | `daW` | device | Outlet7 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet8s` | `daW` | device | Outlet8 receptacle energy accumulated |\n| `snmp.device_prof_receptacleEnergyoutlet9s` | `daW` | device | Outlet9 receptacle energy accumulated |\n\n### PowerFlow / PDU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpiPduTotalPower` | `VA` | per pdu_macaddress, pdu_model, pdu_name, pdu_version, pdu_ipaddress, pdu_cabinetid | Power for the entire PDU |\n\n### System / Firmware\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpiPduUpgrade` | `{status}` | per pdu_macaddress, pdu_model, pdu_name, pdu_version, pdu_ipaddress, pdu_cabinetid | Indicator if the PDU firmware is being upgraded |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpiPduSensorValue` | \u2014 | per sensor_index, sensor_name, rm:sensor_type | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Chatsworth_PDU",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Checkpoint",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["checkpoint","snmp","firewall","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Checkpoint\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Checkpoint (firewall) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **checkpoint.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Checkpoint via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Checkpoint profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**176 metrics** in 16 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / RAID | 6 |\n| Hardware / Sensor | 7 |\n| Network / IP | 28 |\n| Network / Interface | 31 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| Network / VPN | 28 |\n| Security / Cluster | 6 |\n| Security / Firewall | 14 |\n| Security / RemoteAccess | 2 |\n| Security / VSX | 15 |\n| System / Activity | 2 |\n| System / CPU | 7 |\n| System / Disk | 6 |\n| System / Memory | 5 |\n| System / Uptime | 1 |\n\n### Hardware / RAID\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_numOfDisksOnRaid` | `{disk}` | per raid_volume_index | Number of physical disks in RAID volume |\n| `snmp.device_prof_raidDiskSize` | `GBy` | per raid_disk_index | RAID physical disk size |\n| `snmp.device_prof_raidDiskState` | `{status}` | per raid_disk_index | RAID physical disk state |\n| `snmp.device_prof_raidDiskSyncState` | `%` | per raid_disk_index | RAID disk synchronization progress |\n| `snmp.device_prof_raidVolumeSize` | `GBy` | per raid_volume_index | RAID volume size |\n| `snmp.device_prof_raidVolumeState` | `{status}` | per raid_volume_index | RAID volume operational state |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fanSpeedSensorStatus` | `{status}` | per sensor_index, sensor_name | Sensor is out of range true(1), false(0), reading error(2) |\n| `snmp.device_prof_fanSpeedSensorValue` | `{revolution}/min` | per sensor_index, sensor_name | Sensor value |\n| `snmp.device_prof_powerSupplyStatus` | `{status}` | per psu_index | Power supply operational status |\n| `snmp.device_prof_tempertureSensorStatus` | `{status}` | per sensor_index, sensor_name | Sensor is out of range true(1), false(0), reading error(2) |\n| `snmp.device_prof_tempertureSensorValue` | `Cel` | per sensor_index, sensor_name | Sensor value |\n| `snmp.device_prof_voltageSensorStatus` | `{status}` | per sensor_index, sensor_name | Voltage sensor out-of-range status |\n| `snmp.device_prof_voltageSensorValue` | `V` | per sensor_index, sensor_name | Voltage sensor reading |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### Network / VPN\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpvCurrEspSAsIn` | `{sa}` | device | Number of current inbound ESP Security Associations |\n| `snmp.device_prof_cpvCurrEspSAsOut` | `{sa}` | device | Number of current outbound ESP Security Associations |\n| `snmp.device_prof_cpvIKECurrInitSAs` | `{sa}` | device | Current IKE Security Associations initiated by this gateway |\n| `snmp.device_prof_cpvIKECurrRespSAs` | `{sa}` | device | Current IKE Security Associations responded to by this gateway |\n| `snmp.device_prof_cpvIKECurrSAs` | `{sa}` | device | Number of current IKE Security Associations |\n| `snmp.device_prof_cpvIKEMaxConncurSAs` | `{sa}` | device | Peak concurrent IKE Security Associations |\n| `snmp.device_prof_cpvIKENoResp` | `{failure}/s` | device | IKE failures per second due to no response from peer |\n| `snmp.device_prof_cpvIKETotalFailuresInit` | `{failure}/s` | device | IKE negotiation failures as initiator per second |\n| `snmp.device_prof_cpvIKETotalFailuresResp` | `{failure}/s` | device | IKE negotiation failures as responder per second |\n| `snmp.device_prof_cpvIKETotalSAs` | `{sa}/s` | device | IKE Security Associations created per second |\n| `snmp.device_prof_cpvIKETotalSAsAttempts` | `{attempt}/s` | device | IKE SA negotiation attempts per second |\n| `snmp.device_prof_cpvIpsecEspDecBytes` | `By/s` | device | ESP decrypted bytes per second |\n| `snmp.device_prof_cpvIpsecEspDecPkts` | `{packet}/s` | device | ESP decrypted packets per second |\n| `snmp.device_prof_cpvIpsecEspEncBytes` | `By/s` | device | ESP encrypted bytes per second |\n| `snmp.device_prof_cpvIpsecEspEncPkts` | `{packet}/s` | device | ESP encrypted packets per second |\n| `snmp.device_prof_cpvIpsecUdpEspDecPkts` | `{packet}/s` | device | NAT-T UDP-encapsulated ESP decrypted packets per second |\n| `snmp.device_prof_cpvIpsecUdpEspEncPkts` | `{packet}/s` | device | NAT-T UDP-encapsulated ESP encrypted packets per second |\n| `snmp.device_prof_cpvSaAuthErr` | `{error}/s` | device | SA authentication errors per second |\n| `snmp.device_prof_cpvSaDecrErr` | `{error}/s` | device | SA decryption errors per second |\n| `snmp.device_prof_cpvSaOtherErrIn` | `{error}/s` | device | IPSec SA other inbound errors per second |\n| `snmp.device_prof_cpvSaOtherErrOut` | `{error}/s` | device | IPSec SA other outbound errors per second |\n| `snmp.device_prof_cpvSaPolicyErr` | `{error}/s` | device | IPSec SA policy errors per second |\n| `snmp.device_prof_cpvSaReplayErr` | `{error}/s` | device | SA replay errors per second |\n| `snmp.device_prof_cpvSaUnknownSpiErr` | `{error}/s` | device | IPSec SA unknown SPI errors per second |\n| `snmp.device_prof_permanentTunnelProbState` | `{status}` | per tunnel_index, tunnel_peer_name | DPD probe state of the permanent VPN tunnel |\n| `snmp.device_prof_permanentTunnelState` | `{status}` | per tunnel_index, tunnel_peer_name | Current state of the permanent VPN tunnel |\n| `snmp.device_prof_tunnelProbState` | `{status}` | per tunnel_index, tunnel_peer_name | DPD probe state of the VPN tunnel |\n| `snmp.device_prof_tunnelState` | `{status}` | per tunnel_index, tunnel_peer_name | Current state of the VPN tunnel |\n\n### Security / Cluster\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_haInstalled` | `{status}` | device | Whether HA/ClusterXL is installed on this gateway |\n| `snmp.device_prof_haProblemPriority` | `{priority}` | per problem_index | HA problem priority level |\n| `snmp.device_prof_haProblemVerified` | `{status}` | per problem_index | Whether the HA problem has been verified |\n| `snmp.device_prof_haStarted` | `{status}` | device | Whether HA/ClusterXL has been started |\n| `snmp.device_prof_haStatCode` | `{code}` | device | HA/ClusterXL numeric status code (0 = healthy) |\n| `snmp.device_prof_haState` | `{status}` | device | HA/ClusterXL member state |\n\n### Security / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fwAccepted` | `{packet}/s` | device | Number of accepted packets |\n| `snmp.device_prof_fwDropped` | `{packet}/s` | device | Number of dropped packets |\n| `snmp.device_prof_fwFullyUtilizedDrops` | `{packet}/s` | device | Packets dropped per second due to fully utilized firewall instance |\n| `snmp.device_prof_fwHmemBytesPeak` | `By` | device | Firewall heap memory peak bytes used |\n| `snmp.device_prof_fwHmemBytesUsed` | `By` | device | Firewall heap memory bytes in use |\n| `snmp.device_prof_fwHmemFailedAlloc` | `{failure}/s` | device | Firewall heap memory allocation failures per second |\n| `snmp.device_prof_fwKmemAvailablePhysicalMem` | `By` | device | Firewall kernel physical memory available for allocation |\n| `snmp.device_prof_fwKmemBytesPeak` | `By` | device | Firewall kernel memory peak bytes used |\n| `snmp.device_prof_fwKmemBytesUsed` | `By` | device | Firewall kernel memory bytes in use |\n| `snmp.device_prof_fwKmemFailedAlloc` | `{failure}/s` | device | Firewall kernel memory allocation failures per second |\n| `snmp.device_prof_fwKmemSystemPhysicalMem` | `By` | device | Firewall kernel total system physical memory |\n| `snmp.device_prof_fwLogged` | `{packet}/s` | device | Logged packets per second |\n| `snmp.device_prof_fwRejected` | `{packet}/s` | device | Number of rejected packets |\n| `snmp.device_prof_fwSICTrustState` | `{status}` | device | SIC trust state between gateway and management server |\n\n### Security / RemoteAccess\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dtpsConnectedUsers` | `{user}` | device | Currently connected remote access VPN users |\n| `snmp.device_prof_dtpsLicensedUsers` | `{user}` | device | Licensed remote access VPN users |\n\n### Security / VSX\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_vsxCountersAcceptedTotal` | `{packet}/s` | per vs_id | Virtual system accepted packets per second |\n| `snmp.device_prof_vsxCountersBytesAcceptedTotal` | `By/s` | per vs_id | Virtual system accepted bytes per second |\n| `snmp.device_prof_vsxCountersBytesDroppedTotal` | `By/s` | per vs_id | Virtual system dropped bytes per second |\n| `snmp.device_prof_vsxCountersBytesRejectedTotal` | `By/s` | per vs_id | Virtual system rejected bytes per second |\n| `snmp.device_prof_vsxCountersConnNum` | `{connection}` | per vs_id | Virtual system active connections |\n| `snmp.device_prof_vsxCountersConnPeakNum` | `{connection}` | per vs_id | Virtual system peak connections |\n| `snmp.device_prof_vsxCountersConnTableLimit` | `{connection}` | per vs_id | Virtual system connection table limit |\n| `snmp.device_prof_vsxCountersDroppedTotal` | `{packet}/s` | per vs_id | Virtual system dropped packets per second |\n| `snmp.device_prof_vsxCountersLoggedTotal` | `{packet}/s` | per vs_id | Virtual system logged packets per second |\n| `snmp.device_prof_vsxCountersRejectedTotal` | `{packet}/s` | per vs_id | Virtual system rejected packets per second |\n| `snmp.device_prof_vsxStatusCPUUsage1min` | `%` | per vs_id | Virtual system CPU usage (1 minute average) |\n| `snmp.device_prof_vsxStatusVSWeight` | `{weight}` | per vs_id, vs_name | Virtual system resource control weight |\n| `snmp.device_prof_vsxVsConfigured` | `{vs}` | device | Number of virtual systems configured |\n| `snmp.device_prof_vsxVsInstalled` | `{vs}` | device | Number of virtual systems installed |\n| `snmp.device_prof_vsxVsSupported` | `{vs}` | device | Maximum number of virtual systems supported |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fwNumConn` | `{connection}` | device | Number of connections |\n| `snmp.device_prof_fwPeakNumConn` | `{connection}` | device | Peak number of connections |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_core | The current CPU utilization |\n| `snmp.device_prof_multiProcIdleTime` | `%` | per cpu_core | Processor idle time |\n| `snmp.device_prof_multiProcSystemTime` | `%` | per cpu_core | Processor system time |\n| `snmp.device_prof_multiProcUserTime` | `%` | per cpu_core | Processor user time |\n| `snmp.device_prof_procInterrupts` | `{interrupt}/s` | device | Processor interrupts per second |\n| `snmp.device_prof_procNum` | `{processor}` | device | Number of processors |\n| `snmp.device_prof_procQueue` | `{process}` | device | Processor run queue length |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_multiDiskFreeAvailableBytes` | `By` | per disk_index, disk_name | Disk free available bytes |\n| `snmp.device_prof_multiDiskFreeAvailablePercent` | `%` | per disk_index, disk_name | Disk free available percent |\n| `snmp.device_prof_multiDiskFreeTotalBytes` | `By` | per disk_index, disk_name | Disk free total bytes |\n| `snmp.device_prof_multiDiskFreeTotalPercent` | `%` | per disk_index, disk_name | Disk free total percent |\n| `snmp.device_prof_multiDiskSize` | `GBy` | per disk_index, disk_name | Disk size |\n| `snmp.device_prof_multiDiskUsed` | `GBy` | per disk_index, disk_name | Disk used |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memActiveReal64` | `By` | device | Active real memory |\n| `snmp.device_prof_memActiveVirtual64` | `By` | device | Active virtual memory |\n| `snmp.device_prof_memFreeReal64` | `By` | device | Free real memory |\n| `snmp.device_prof_memTotalReal64` | `By` | device | Total real memory |\n| `snmp.device_prof_memTotalVirtual64` | `By` | device | Total virtual memory |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Checkpoint",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Checkpoint Licensing",link:"",categories:["network-performance-monitoring.licensing"],icon_filename:"SNMP.png"},keywords:["checkpoint","license","licensing","entitlement","expiry","snmp","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Checkpoint Licensing\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nTrack license state, entitlements, and expiry on Checkpoint devices over SNMP with Netdata.\n\nNetdata reads Checkpoint licensing telemetry (state, usage, and expiry timers) exposed over SNMP and normalizes it into per-device licensing charts and the `snmp:licenses` function.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDetected automatically for Checkpoint devices that expose licensing telemetry.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",integration_type:"device",id:"go.d.plugin-snmp-Checkpoint_Licensing",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Chrysalis",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["chrysalis","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Chrysalis\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Chrysalis (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **chrysalis.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Chrysalis via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Chrysalis profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**1 metrics** in 1 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| System / Uptime | 1 |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Chrysalis",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Chrysalis Luna HSM",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["chrysalis","luna","hsm","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Chrysalis Luna HSM\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Chrysalis Luna HSM (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **chrysalis-luna-hsm.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Chrysalis Luna HSM via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Chrysalis Luna HSM profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**48 metrics** in 6 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / TCP | 12 |\n| Security / HSM | 7 |\n| System / CPU | 2 |\n| System / Disk | 15 |\n| System / Memory | 11 |\n| System / Uptime | 1 |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Security / HSM\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hsmOperationErrors` | `{error}` | device | Number of operation errors |\n| `snmp.device_prof_hsmOperationRequests` | `{operation}` | device | Number of operations |\n| `snmp.device_prof_ntlsConnectedClients` | `{client}` | device | The current number of connected clients using NTLS |\n| `snmp.device_prof_ntlsFailedClientConnections` | `{connection}/s` | device | The total number of unsuccessful client connections |\n| `snmp.device_prof_ntlsLinks` | `{link}` | device | The current number of links in NTLS |\n| `snmp.device_prof_ntlsOperStatus` | `{status}` | device | Current operational status of the NTL service |\n| `snmp.device_prof_ntlsSuccessfulClientConnections` | `{connection}/s` | device | The total number of successful client connections |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_ssRawContexts` | `{switch}/s` | device | Number of context switches |\n| `snmp.device_prof_ucd_ssRawInterrupts` | `{interrupt}/s` | device | Number of interrupts processed |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_diskIOLA1` | `%` | per ucd_disk_io_device | The 1 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA15` | `%` | per ucd_disk_io_device | The 15 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA5` | `%` | per ucd_disk_io_device | The 5 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIONReadX` | `By/s` | per ucd_disk_io_device | The number of bytes read from this device since boot |\n| `snmp.device_prof_ucd_diskIONWrittenX` | `By/s` | per ucd_disk_io_device | The number of bytes written to this device since boot |\n| `snmp.device_prof_ucd_diskIOReads` | `{read}/s` | per ucd_disk_io_device | The number of read accesses from this device since boot |\n| `snmp.device_prof_ucd_diskIOWrites` | `{write}/s` | per ucd_disk_io_device | The number of write accesses to this device since boot |\n| `snmp.device_prof_ucd_dskAvail` | `By` | per ucd_dsk_path, ucd_dsk_device | Available space on the disk |\n| `snmp.device_prof_ucd_dskErrorFlag` | `{status}` | per ucd_dsk_path, ucd_dsk_device | Flag signaling that the disk or partition is under the minimum required space configured for it |\n| `snmp.device_prof_ucd_dskPercent` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of space used on disk |\n| `snmp.device_prof_ucd_dskPercentNode` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of inodes used on disk |\n| `snmp.device_prof_ucd_dskTotal` | `By` | per ucd_dsk_path, ucd_dsk_device | Total size of the disk/partition |\n| `snmp.device_prof_ucd_dskUsed` | `By` | per ucd_dsk_path, ucd_dsk_device | Used space on the disk |\n| `snmp.device_prof_ucd_ssIORawReceived` | `By/s` | device | Amount of data read from disk or other block device |\n| `snmp.device_prof_ucd_ssIORawSent` | `By/s` | device | Amount of data written to disk or other block device |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | device | The amount of real/physical memory currently unused or available |\n| `snmp.device_prof_ucd_memAvailSwap` | `By` | device | The amount of swap space currently unused or available |\n| `snmp.device_prof_ucd_memBuffer` | `By` | device | The total amount of real or virtual memory currently allocated for use as memory buffers |\n| `snmp.device_prof_ucd_memCached` | `By` | device | The total amount of real or virtual memory currently allocated for use as cached memory |\n| `snmp.device_prof_ucd_memMinimumSwap` | `By` | device | The minimum amount of swap space expected to be kept free or available during normal operation of this host |\n| `snmp.device_prof_ucd_memShared` | `By` | device | The total amount of real or virtual memory currently allocated for use as shared memory |\n| `snmp.device_prof_ucd_memTotalFree` | `By` | device | The total amount of memory free or available for use on this host |\n| `snmp.device_prof_ucd_memTotalSwap` | `By` | device | The total amount of swap space configured for this host |\n| `snmp.device_prof_ucd_memoryTotal` | `By` | device | The total amount of real/physical memory installed on this host |\n| `snmp.device_prof_ucd_ssRawSwapIn` | `By/s` | device | Amount of memory swapped in from disk |\n| `snmp.device_prof_ucd_ssRawSwapOut` | `By/s` | device | Amount of memory swapped out to disk |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Chrysalis_Luna_HSM",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**146 metrics** in 20 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 3 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Firewall | 1 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Redundancy | 4 |\n| Hardware / Sensor | 4 |\n| Hardware / StackWise | 4 |\n| Network / Firewall | 1 |\n| Network / IP | 28 |\n| Network / Interface | 32 |\n| Network / RTT | 5 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / CPU | 6 |\n| System / Memory | 4 |\n| System / Uptime | 1 |\n| System / VirtualSwitch | 1 |\n| Uncategorized | 21 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFRUCurrent` | `A` | per fru_index | Current supplied by the FRU or current required to operate the FRU |\n| `snmp.device_prof_cefcFRUPowerAdminStatus` | `{status}` | per fru_index | Administratively desired FRU power state |\n| `snmp.device_prof_cefcFRUPowerOperStatus` | `{status}` | per fru_index | Operational FRU power state |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonFanState` | `{status}` | per fan_status_index | Current state of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFanTrayOperStatus` | `{status}` | per fru_index, cefc_fan_tray_direction | Operational state of the fan or fan tray |\n\n### Hardware / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwHardwareStatusValue` | `{status}` | per hardware_type, hardware_desc | Current status of the resource |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonSupplyState` | `{status}` | per power_supply_index | Current state of the power supply |\n\n### Hardware / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cRFStatusDuplexMode` | `{status}` | device | Redundancy duplex mode (simplex=no redundancy, duplex=redundant pair) |\n| `snmp.device_prof_cRFStatusLastSwactReasonCode` | `{reason}` | device | Reason code for the last switchover |\n| `snmp.device_prof_cRFStatusPeerUnitState` | `{status}` | device | Current state of the peer redundancy unit |\n| `snmp.device_prof_cRFStatusUnitState` | `{status}` | device | Current state of this redundancy unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonTemperatureState` | `{status}` | per temp_index | Current state of the testpoint |\n| `snmp.device_prof_ciscoEnvMonTemperatureStatusValue` | `Cel` | per temp_index | Current measurement of the testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageState` | `{status}` | per voltage_index | Current state of the voltage testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageStatusValue` | `mV` | per voltage_index | Current measurement of the voltage testpoint |\n\n### Hardware / StackWise\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cswRingRedundant` | `{status}` | device | Whether the stack ring is in a redundant configuration |\n| `snmp.device_prof_cswStackPortOperStatus` | `{status}` | per stack_port_index | State of the stackport |\n| `snmp.device_prof_cswSwitchRole` | `{role}` | per mac_addr, entity_name | Role of a switch in the stack |\n| `snmp.device_prof_cswSwitchState` | `{status}` | per mac_addr, entity_name | Current state of a switch |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwConnectionStatCount` | `1` | per conn_stat_id | Integer that contains the value of the resource statistic. |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cieIfResetCount` | `{reset}/s` | per interface | Number of times the interface was internally reset and brought up |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / RTT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rttMonCtrlOperConnectionLostOccurred` | `{status}` | per rtt_index | Indicates if a connection lost occurred for the RTT operation |\n| `snmp.device_prof_rttMonCtrlOperOverThresholdOccurred` | `{status}` | per rtt_index | Indicates if the latest RTT operation exceeded its configured threshold value |\n| `snmp.device_prof_rttMonCtrlOperState` | `{status}` | per rtt_index | Used to manage the state of the probe that is implementing conceptual RTT control row. |\n| `snmp.device_prof_rttMonCtrlOperTimeoutOccurred` | `{status}` | per rtt_index | Indicates if a timeout occurred for the RTT operation |\n| `snmp.device_prof_rttMonLatestRttOperSense` | `{status}` | per rtt_index | Sense code for the completion status of the latest RTT operation |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpmCPULoadAvg15min` | `{load_average}` | per cpu_index | CPU load average over the last 15 minutes |\n| `snmp.device_prof_cpmCPULoadAvg1min` | `{load_average}` | per cpu_index | CPU load average over the last 1 minute |\n| `snmp.device_prof_cpmCPULoadAvg5min` | `{load_average}` | per cpu_index | CPU load average over the last 5 minutes |\n| `snmp.device_prof_cpmCPUTotal1minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 1 minute period |\n| `snmp.device_prof_cpmCPUTotal5minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 5 minute period |\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cempMemPoolLowestFree` | `By` | per mem_pool_index | Lowest amount of free memory observed since last clear (watermark) |\n| `snmp.device_prof_ciscoMemoryPoolFree` | `By` | per mem_pool_index | Number of bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolLargestFree` | `By` | per mem_pool_index | Largest number of contiguous bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolUsed` | `By` | per mem_pool_index | Number of bytes from the memory pool currently in use |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / VirtualSwitch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvsChassisUpTime` | `cs` | per chassis_switch_id | Up time for the chassis since last re-initialization |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco 3850",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","3850","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco 3850\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco 3850 (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-3850.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco 3850 via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco 3850 profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**159 metrics** in 21 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 3 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Firewall | 1 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Redundancy | 4 |\n| Hardware / Sensor | 5 |\n| Hardware / StackWise | 4 |\n| Network / Bridge | 2 |\n| Network / Firewall | 1 |\n| Network / IP | 28 |\n| Network / Interface | 42 |\n| Network / RTT | 5 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / CPU | 6 |\n| System / Memory | 4 |\n| System / Uptime | 1 |\n| System / VirtualSwitch | 1 |\n| Uncategorized | 21 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFRUCurrent` | `A` | per fru_index | Current supplied by the FRU or current required to operate the FRU |\n| `snmp.device_prof_cefcFRUPowerAdminStatus` | `{status}` | per fru_index | Administratively desired FRU power state |\n| `snmp.device_prof_cefcFRUPowerOperStatus` | `{status}` | per fru_index | Operational FRU power state |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonFanState` | `{status}` | per fan_status_index | Current state of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFanTrayOperStatus` | `{status}` | per fru_index, cefc_fan_tray_direction | Operational state of the fan or fan tray |\n\n### Hardware / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwHardwareStatusValue` | `{status}` | per hardware_type, hardware_desc | Current status of the resource |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonSupplyState` | `{status}` | per power_supply_index | Current state of the power supply |\n\n### Hardware / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cRFStatusDuplexMode` | `{status}` | device | Redundancy duplex mode (simplex=no redundancy, duplex=redundant pair) |\n| `snmp.device_prof_cRFStatusLastSwactReasonCode` | `{reason}` | device | Reason code for the last switchover |\n| `snmp.device_prof_cRFStatusPeerUnitState` | `{status}` | device | Current state of the peer redundancy unit |\n| `snmp.device_prof_cRFStatusUnitState` | `{status}` | device | Current state of this redundancy unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonTemperatureState` | `{status}` | per temp_index | Current state of the testpoint |\n| `snmp.device_prof_ciscoEnvMonTemperatureStatusValue` | `Cel` | per temp_index | Current measurement of the testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageState` | `{status}` | per voltage_index | Current state of the voltage testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageStatusValue` | `mV` | per voltage_index | Current measurement of the voltage testpoint |\n| `snmp.device_prof_entSensorValue` | `1` | per sensor_index, rm:sensor_type, rm:sensor_scale, rm:sensor_precision | Most recent measurement obtained by the agent for this sensor |\n\n### Hardware / StackWise\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cswRingRedundant` | `{status}` | device | Whether the stack ring is in a redundant configuration |\n| `snmp.device_prof_cswStackPortOperStatus` | `{status}` | per stack_port_index | State of the stackport |\n| `snmp.device_prof_cswSwitchRole` | `{role}` | per mac_addr, entity_name | Role of a switch in the stack |\n| `snmp.device_prof_cswSwitchState` | `{status}` | per mac_addr, entity_name | Current state of a switch |\n\n### Network / Bridge\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dot1dStpTimeSinceTopologyChange` | `s` | device | Time since the last STP topology change was detected |\n| `snmp.device_prof_dot1dStpTopChanges` | `{change}/s` | device | Rate of STP topology changes detected |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwConnectionStatCount` | `1` | per conn_stat_id | Integer that contains the value of the resource statistic. |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cieIfInAbortErrs` | `{error}/s` | per interface | Number of input packets aborted |\n| `snmp.device_prof_cieIfInFramingErrs` | `{error}/s` | per interface | Number of framing error packets received |\n| `snmp.device_prof_cieIfInGiantsErrs` | `{error}/s` | per interface | Number of giant packets received (frames larger than MTU) |\n| `snmp.device_prof_cieIfInIgnored` | `{error}/s` | per interface | Number of input packets ignored by the interface |\n| `snmp.device_prof_cieIfInOverrunErrs` | `{error}/s` | per interface | Number of overrun error packets received (hardware buffer exhaustion) |\n| `snmp.device_prof_cieIfInRuntsErrs` | `{error}/s` | per interface | Number of runt packets received (frames smaller than 64 bytes) |\n| `snmp.device_prof_cieIfInputQueueDrops` | `{drop}/s` | per interface | Number of input packets which were dropped |\n| `snmp.device_prof_cieIfLastInTime` | `ms` | per interface | Elapsed time in milliseconds since last protocol input packet was received |\n| `snmp.device_prof_cieIfLastOutTime` | `ms` | per interface | Elapsed time in milliseconds since last protocol output packet was transmitted |\n| `snmp.device_prof_cieIfOutputQueueDrops` | `{drop}/s` | per interface | Number of output packets dropped by the interface |\n| `snmp.device_prof_cieIfResetCount` | `{reset}/s` | per interface | Number of times the interface was internally reset and brought up |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / RTT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rttMonCtrlOperConnectionLostOccurred` | `{status}` | per rtt_index | Indicates if a connection lost occurred for the RTT operation |\n| `snmp.device_prof_rttMonCtrlOperOverThresholdOccurred` | `{status}` | per rtt_index | Indicates if the latest RTT operation exceeded its configured threshold value |\n| `snmp.device_prof_rttMonCtrlOperState` | `{status}` | per rtt_index | Used to manage the state of the probe that is implementing conceptual RTT control row. |\n| `snmp.device_prof_rttMonCtrlOperTimeoutOccurred` | `{status}` | per rtt_index | Indicates if a timeout occurred for the RTT operation |\n| `snmp.device_prof_rttMonLatestRttOperSense` | `{status}` | per rtt_index | Sense code for the completion status of the latest RTT operation |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpmCPULoadAvg15min` | `{load_average}` | per cpu_index | CPU load average over the last 15 minutes |\n| `snmp.device_prof_cpmCPULoadAvg1min` | `{load_average}` | per cpu_index | CPU load average over the last 1 minute |\n| `snmp.device_prof_cpmCPULoadAvg5min` | `{load_average}` | per cpu_index | CPU load average over the last 5 minutes |\n| `snmp.device_prof_cpmCPUTotal1minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 1 minute period |\n| `snmp.device_prof_cpmCPUTotal5minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 5 minute period |\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cempMemPoolLowestFree` | `By` | per mem_pool_index | Lowest amount of free memory observed since last clear (watermark) |\n| `snmp.device_prof_ciscoMemoryPoolFree` | `By` | per mem_pool_index | Number of bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolLargestFree` | `By` | per mem_pool_index | Largest number of contiguous bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolUsed` | `By` | per mem_pool_index | Number of bytes from the memory pool currently in use |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / VirtualSwitch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvsChassisUpTime` | `cs` | per chassis_switch_id | Up time for the chassis since last re-initialization |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_3850",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco ASA",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","asa","snmp","firewall","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco ASA\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco ASA (firewall) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 126 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-asa.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco ASA via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco ASA profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**156 metrics** in 21 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 3 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Firewall | 1 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Redundancy | 4 |\n| Hardware / Sensor | 6 |\n| Hardware / StackWise | 4 |\n| Network / Firewall | 2 |\n| Network / IP | 28 |\n| Network / Interface | 32 |\n| Network / RTT | 5 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| Network / VPN | 7 |\n| System / CPU | 6 |\n| System / Memory | 4 |\n| System / Uptime | 1 |\n| System / VirtualSwitch | 1 |\n| Uncategorized | 21 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFRUCurrent` | `A` | per fru_index | Current supplied by the FRU or current required to operate the FRU |\n| `snmp.device_prof_cefcFRUPowerAdminStatus` | `{status}` | per fru_index | Administratively desired FRU power state |\n| `snmp.device_prof_cefcFRUPowerOperStatus` | `{status}` | per fru_index | Operational FRU power state |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonFanState` | `{status}` | per fan_status_index | Current state of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFanTrayOperStatus` | `{status}` | per fru_index, cefc_fan_tray_direction | Operational state of the fan or fan tray |\n\n### Hardware / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwHardwareStatusValue` | `{status}` | per hardware_type, hardware_desc | Current status of the resource |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonSupplyState` | `{status}` | per power_supply_index | Current state of the power supply |\n\n### Hardware / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cRFStatusDuplexMode` | `{status}` | device | Redundancy duplex mode (simplex=no redundancy, duplex=redundant pair) |\n| `snmp.device_prof_cRFStatusLastSwactReasonCode` | `{reason}` | device | Reason code for the last switchover |\n| `snmp.device_prof_cRFStatusPeerUnitState` | `{status}` | device | Current state of the peer redundancy unit |\n| `snmp.device_prof_cRFStatusUnitState` | `{status}` | device | Current state of this redundancy unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonTemperatureState` | `{status}` | per temp_index | Current state of the testpoint |\n| `snmp.device_prof_ciscoEnvMonTemperatureStatusValue` | `Cel` | per temp_index | Current measurement of the testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageState` | `{status}` | per voltage_index | Current state of the voltage testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageStatusValue` | `mV` | per voltage_index | Current measurement of the voltage testpoint |\n| `snmp.device_prof_entPhySensorOperStatus` | `{status}` | per sensor_index, rm:sensor_type, rm:sensor_scale, rm:sensor_precision | Operational status of the sensor |\n| `snmp.device_prof_entPhySensorValue` | `1` | per sensor_index, rm:sensor_type, rm:sensor_scale, rm:sensor_precision | Most recent measurement obtained by the agent for this sensor |\n\n### Hardware / StackWise\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cswRingRedundant` | `{status}` | device | Whether the stack ring is in a redundant configuration |\n| `snmp.device_prof_cswStackPortOperStatus` | `{status}` | per stack_port_index | State of the stackport |\n| `snmp.device_prof_cswSwitchRole` | `{role}` | per mac_addr, entity_name | Role of a switch in the stack |\n| `snmp.device_prof_cswSwitchState` | `{status}` | per mac_addr, entity_name | Current state of a switch |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwConnectionStatCount` | `1` | per conn_stat_id | Integer that contains the value of the resource statistic. |\n| `snmp.device_prof_cfwConnectionStatValue` | `{connection}` | per service_type, stat_type | Current status of the resource statistic |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cieIfResetCount` | `{reset}/s` | per interface | Number of times the interface was internally reset and brought up |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / RTT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rttMonCtrlOperConnectionLostOccurred` | `{status}` | per rtt_index | Indicates if a connection lost occurred for the RTT operation |\n| `snmp.device_prof_rttMonCtrlOperOverThresholdOccurred` | `{status}` | per rtt_index | Indicates if the latest RTT operation exceeded its configured threshold value |\n| `snmp.device_prof_rttMonCtrlOperState` | `{status}` | per rtt_index | Used to manage the state of the probe that is implementing conceptual RTT control row. |\n| `snmp.device_prof_rttMonCtrlOperTimeoutOccurred` | `{status}` | per rtt_index | Indicates if a timeout occurred for the RTT operation |\n| `snmp.device_prof_rttMonLatestRttOperSense` | `{status}` | per rtt_index | Sense code for the completion status of the latest RTT operation |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### Network / VPN\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cipSecGlobalActiveTunnels` | `{tunnel}` | device | Number of currently active IPsec Phase-2 Tunnels |\n| `snmp.device_prof_cipSecGlobalHcInOctets` | `By/s` | device | High capacity count of total octets received by all current and previous IPsec Phase-2 Tunnels |\n| `snmp.device_prof_cipSecGlobalHcOutOctets` | `By/s` | device | High capacity count of total octets sent by all current and previous IPsec Phase-2 Tunnels |\n| `snmp.device_prof_crasNumDeclinedSessions` | `{session}/s` | device | Number of session setup attempts declined due to authentication or authorization failure |\n| `snmp.device_prof_crasNumSessions` | `{session}` | device | Number of currently active sessions |\n| `snmp.device_prof_crasNumSetupFailInsufResources` | `{failure}/s` | device | Number of session setup attempts failed due to insufficient resources |\n| `snmp.device_prof_crasNumUsers` | `{user}` | device | Number of users who have active sessions |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpmCPULoadAvg15min` | `{load_average}` | per cpu_index | CPU load average over the last 15 minutes |\n| `snmp.device_prof_cpmCPULoadAvg1min` | `{load_average}` | per cpu_index | CPU load average over the last 1 minute |\n| `snmp.device_prof_cpmCPULoadAvg5min` | `{load_average}` | per cpu_index | CPU load average over the last 5 minutes |\n| `snmp.device_prof_cpmCPUTotal1minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 1 minute period |\n| `snmp.device_prof_cpmCPUTotal5minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 5 minute period |\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cempMemPoolLowestFree` | `By` | per mem_pool_index | Lowest amount of free memory observed since last clear (watermark) |\n| `snmp.device_prof_ciscoMemoryPoolFree` | `By` | per mem_pool_index | Number of bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolLargestFree` | `By` | per mem_pool_index | Largest number of contiguous bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolUsed` | `By` | per mem_pool_index | Number of bytes from the memory pool currently in use |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / VirtualSwitch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvsChassisUpTime` | `cs` | per chassis_switch_id | Up time for the chassis since last re-initialization |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_ASA",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco ASR",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","asr","snmp","router","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco ASR\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco ASR (router) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 76 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-asr.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco ASR via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco ASR profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**146 metrics** in 20 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 3 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Firewall | 1 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Redundancy | 4 |\n| Hardware / Sensor | 4 |\n| Hardware / StackWise | 4 |\n| Network / Firewall | 1 |\n| Network / IP | 28 |\n| Network / Interface | 32 |\n| Network / RTT | 5 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / CPU | 6 |\n| System / Memory | 4 |\n| System / Uptime | 1 |\n| System / VirtualSwitch | 1 |\n| Uncategorized | 21 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFRUCurrent` | `A` | per fru_index | Current supplied by the FRU or current required to operate the FRU |\n| `snmp.device_prof_cefcFRUPowerAdminStatus` | `{status}` | per fru_index | Administratively desired FRU power state |\n| `snmp.device_prof_cefcFRUPowerOperStatus` | `{status}` | per fru_index | Operational FRU power state |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonFanState` | `{status}` | per fan_status_index | Current state of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFanTrayOperStatus` | `{status}` | per fru_index, cefc_fan_tray_direction | Operational state of the fan or fan tray |\n\n### Hardware / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwHardwareStatusValue` | `{status}` | per hardware_type, hardware_desc | Current status of the resource |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonSupplyState` | `{status}` | per power_supply_index | Current state of the power supply |\n\n### Hardware / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cRFStatusDuplexMode` | `{status}` | device | Redundancy duplex mode (simplex=no redundancy, duplex=redundant pair) |\n| `snmp.device_prof_cRFStatusLastSwactReasonCode` | `{reason}` | device | Reason code for the last switchover |\n| `snmp.device_prof_cRFStatusPeerUnitState` | `{status}` | device | Current state of the peer redundancy unit |\n| `snmp.device_prof_cRFStatusUnitState` | `{status}` | device | Current state of this redundancy unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonTemperatureState` | `{status}` | per temp_index | Current state of the testpoint |\n| `snmp.device_prof_ciscoEnvMonTemperatureStatusValue` | `Cel` | per temp_index | Current measurement of the testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageState` | `{status}` | per voltage_index | Current state of the voltage testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageStatusValue` | `mV` | per voltage_index | Current measurement of the voltage testpoint |\n\n### Hardware / StackWise\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cswRingRedundant` | `{status}` | device | Whether the stack ring is in a redundant configuration |\n| `snmp.device_prof_cswStackPortOperStatus` | `{status}` | per stack_port_index | State of the stackport |\n| `snmp.device_prof_cswSwitchRole` | `{role}` | per mac_addr, entity_name | Role of a switch in the stack |\n| `snmp.device_prof_cswSwitchState` | `{status}` | per mac_addr, entity_name | Current state of a switch |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwConnectionStatCount` | `1` | per conn_stat_id | Integer that contains the value of the resource statistic. |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cieIfResetCount` | `{reset}/s` | per interface | Number of times the interface was internally reset and brought up |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / RTT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rttMonCtrlOperConnectionLostOccurred` | `{status}` | per rtt_index | Indicates if a connection lost occurred for the RTT operation |\n| `snmp.device_prof_rttMonCtrlOperOverThresholdOccurred` | `{status}` | per rtt_index | Indicates if the latest RTT operation exceeded its configured threshold value |\n| `snmp.device_prof_rttMonCtrlOperState` | `{status}` | per rtt_index | Used to manage the state of the probe that is implementing conceptual RTT control row. |\n| `snmp.device_prof_rttMonCtrlOperTimeoutOccurred` | `{status}` | per rtt_index | Indicates if a timeout occurred for the RTT operation |\n| `snmp.device_prof_rttMonLatestRttOperSense` | `{status}` | per rtt_index | Sense code for the completion status of the latest RTT operation |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpmCPULoadAvg15min` | `{load_average}` | per cpu_index | CPU load average over the last 15 minutes |\n| `snmp.device_prof_cpmCPULoadAvg1min` | `{load_average}` | per cpu_index | CPU load average over the last 1 minute |\n| `snmp.device_prof_cpmCPULoadAvg5min` | `{load_average}` | per cpu_index | CPU load average over the last 5 minutes |\n| `snmp.device_prof_cpmCPUTotal1minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 1 minute period |\n| `snmp.device_prof_cpmCPUTotal5minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 5 minute period |\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cempMemPoolLowestFree` | `By` | per mem_pool_index | Lowest amount of free memory observed since last clear (watermark) |\n| `snmp.device_prof_ciscoMemoryPoolFree` | `By` | per mem_pool_index | Number of bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolLargestFree` | `By` | per mem_pool_index | Largest number of contiguous bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolUsed` | `By` | per mem_pool_index | Number of bytes from the memory pool currently in use |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / VirtualSwitch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvsChassisUpTime` | `cs` | per chassis_switch_id | Up time for the chassis since last re-initialization |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_ASR",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco Access Point",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","access","point","snmp","access point","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco Access Point\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco Access Point (access point) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 4 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-access-point.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco Access Point via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco Access Point profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**155 metrics** in 20 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 3 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Firewall | 1 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Redundancy | 4 |\n| Hardware / Sensor | 4 |\n| Hardware / StackWise | 4 |\n| Network / Firewall | 1 |\n| Network / IP | 28 |\n| Network / Interface | 41 |\n| Network / RTT | 5 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / CPU | 6 |\n| System / Memory | 4 |\n| System / Uptime | 1 |\n| System / VirtualSwitch | 1 |\n| Uncategorized | 21 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFRUCurrent` | `A` | per fru_index | Current supplied by the FRU or current required to operate the FRU |\n| `snmp.device_prof_cefcFRUPowerAdminStatus` | `{status}` | per fru_index | Administratively desired FRU power state |\n| `snmp.device_prof_cefcFRUPowerOperStatus` | `{status}` | per fru_index | Operational FRU power state |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonFanState` | `{status}` | per fan_status_index | Current state of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFanTrayOperStatus` | `{status}` | per fru_index, cefc_fan_tray_direction | Operational state of the fan or fan tray |\n\n### Hardware / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwHardwareStatusValue` | `{status}` | per hardware_type, hardware_desc | Current status of the resource |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonSupplyState` | `{status}` | per power_supply_index | Current state of the power supply |\n\n### Hardware / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cRFStatusDuplexMode` | `{status}` | device | Redundancy duplex mode (simplex=no redundancy, duplex=redundant pair) |\n| `snmp.device_prof_cRFStatusLastSwactReasonCode` | `{reason}` | device | Reason code for the last switchover |\n| `snmp.device_prof_cRFStatusPeerUnitState` | `{status}` | device | Current state of the peer redundancy unit |\n| `snmp.device_prof_cRFStatusUnitState` | `{status}` | device | Current state of this redundancy unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonTemperatureState` | `{status}` | per temp_index | Current state of the testpoint |\n| `snmp.device_prof_ciscoEnvMonTemperatureStatusValue` | `Cel` | per temp_index | Current measurement of the testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageState` | `{status}` | per voltage_index | Current state of the voltage testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageStatusValue` | `mV` | per voltage_index | Current measurement of the voltage testpoint |\n\n### Hardware / StackWise\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cswRingRedundant` | `{status}` | device | Whether the stack ring is in a redundant configuration |\n| `snmp.device_prof_cswStackPortOperStatus` | `{status}` | per stack_port_index | State of the stackport |\n| `snmp.device_prof_cswSwitchRole` | `{role}` | per mac_addr, entity_name | Role of a switch in the stack |\n| `snmp.device_prof_cswSwitchState` | `{status}` | per mac_addr, entity_name | Current state of a switch |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwConnectionStatCount` | `1` | per conn_stat_id | Integer that contains the value of the resource statistic. |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cDot11ActiveBridges` | `{bridge}` | per interface | Number of bridges currently associating with this device on this interface |\n| `snmp.device_prof_cDot11ActiveRepeaters` | `{repeater}` | per interface | Number of repeaters currently associating with this device on this interface |\n| `snmp.device_prof_cDot11ActiveWirelessClients` | `{client}` | per interface | Number of wireless clients currently associating with this device on this interface |\n| `snmp.device_prof_cDot11AssStatsAssociated` | `{station}/s` | per interface | Number of stations associated with this device on this interface since device re-started |\n| `snmp.device_prof_cDot11AssStatsAuthenticated` | `{station}/s` | per interface | Number of stations authenticated with this device on this interface since device re-started |\n| `snmp.device_prof_cDot11AssStatsDeauthenticated` | `{station}/s` | per interface | Number of stations deauthenticated with this device on this interface since device re-started |\n| `snmp.device_prof_cDot11AssStatsDisassociated` | `{station}/s` | per interface | Number of stations disassociated with this device on this interface since device re-started |\n| `snmp.device_prof_cDot11AssStatsRoamedAway` | `{station}/s` | per interface | Number of stations roamed away from this device on this interface since device re-started |\n| `snmp.device_prof_cDot11AssStatsRoamedIn` | `{station}/s` | per interface | Number of stations roamed from another device to this device on this interface since device re-started |\n| `snmp.device_prof_cieIfResetCount` | `{reset}/s` | per interface | Number of times the interface was internally reset and brought up |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / RTT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rttMonCtrlOperConnectionLostOccurred` | `{status}` | per rtt_index | Indicates if a connection lost occurred for the RTT operation |\n| `snmp.device_prof_rttMonCtrlOperOverThresholdOccurred` | `{status}` | per rtt_index | Indicates if the latest RTT operation exceeded its configured threshold value |\n| `snmp.device_prof_rttMonCtrlOperState` | `{status}` | per rtt_index | Used to manage the state of the probe that is implementing conceptual RTT control row. |\n| `snmp.device_prof_rttMonCtrlOperTimeoutOccurred` | `{status}` | per rtt_index | Indicates if a timeout occurred for the RTT operation |\n| `snmp.device_prof_rttMonLatestRttOperSense` | `{status}` | per rtt_index | Sense code for the completion status of the latest RTT operation |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpmCPULoadAvg15min` | `{load_average}` | per cpu_index | CPU load average over the last 15 minutes |\n| `snmp.device_prof_cpmCPULoadAvg1min` | `{load_average}` | per cpu_index | CPU load average over the last 1 minute |\n| `snmp.device_prof_cpmCPULoadAvg5min` | `{load_average}` | per cpu_index | CPU load average over the last 5 minutes |\n| `snmp.device_prof_cpmCPUTotal1minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 1 minute period |\n| `snmp.device_prof_cpmCPUTotal5minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 5 minute period |\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cempMemPoolLowestFree` | `By` | per mem_pool_index | Lowest amount of free memory observed since last clear (watermark) |\n| `snmp.device_prof_ciscoMemoryPoolFree` | `By` | per mem_pool_index | Number of bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolLargestFree` | `By` | per mem_pool_index | Largest number of contiguous bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolUsed` | `By` | per mem_pool_index | Number of bytes from the memory pool currently in use |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / VirtualSwitch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvsChassisUpTime` | `cs` | per chassis_switch_id | Up time for the chassis since last re-initialization |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_Access_Point",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco BGP",link:"",categories:["network-performance-monitoring.bgp"],icon_filename:"cisco.svg"},keywords:["cisco","bgp","snmp","routing","peering","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco BGP\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor BGP peering and routing health on Cisco devices over SNMP with Netdata, using Cisco BGP profile coverage.\n\nNetdata polls the BGP peer tables exposed by Cisco devices (vendor and standard BGP MIBs) via SNMP.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDetected automatically for Cisco devices that expose BGP MIBs.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_BGP",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco Catalyst",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","catalyst","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco Catalyst\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco Catalyst (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 446 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-catalyst.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco Catalyst via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco Catalyst profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**165 metrics** in 22 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 3 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Firewall | 1 |\n| Hardware / PoE | 6 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Redundancy | 4 |\n| Hardware / Sensor | 5 |\n| Hardware / StackWise | 4 |\n| Network / Bridge | 2 |\n| Network / Firewall | 1 |\n| Network / IP | 28 |\n| Network / Interface | 42 |\n| Network / RTT | 5 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / CPU | 6 |\n| System / Memory | 4 |\n| System / Uptime | 1 |\n| System / VirtualSwitch | 1 |\n| Uncategorized | 21 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFRUCurrent` | `A` | per fru_index | Current supplied by the FRU or current required to operate the FRU |\n| `snmp.device_prof_cefcFRUPowerAdminStatus` | `{status}` | per fru_index | Administratively desired FRU power state |\n| `snmp.device_prof_cefcFRUPowerOperStatus` | `{status}` | per fru_index | Operational FRU power state |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonFanState` | `{status}` | per fan_status_index | Current state of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFanTrayOperStatus` | `{status}` | per fru_index, cefc_fan_tray_direction | Operational state of the fan or fan tray |\n\n### Hardware / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwHardwareStatusValue` | `{status}` | per hardware_type, hardware_desc | Current status of the resource |\n\n### Hardware / PoE\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_pethMainPseConsumptionPower` | `W` | per pse_group_index | Measured usage power drawn from the PSE |\n| `snmp.device_prof_pethMainPseOperStatus` | `{status}` | per pse_group_index | Operational status of the main PSE |\n| `snmp.device_prof_pethMainPsePower` | `W` | per pse_group_index | Total inline power available from the PSE |\n| `snmp.device_prof_pethMainPseUsageThreshold` | `%` | per pse_group_index | Usage threshold expressed in percent for comparing the measured power |\n| `snmp.device_prof_pethPsePortDetectionStatus` | `{status}` | per pse_port_index, interface | Detection status of the PSE port |\n| `snmp.device_prof_pethPsePortPowerClassifications` | `{class}` | per pse_port_index, interface | Power class of the detected powered device |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonSupplyState` | `{status}` | per power_supply_index | Current state of the power supply |\n\n### Hardware / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cRFStatusDuplexMode` | `{status}` | device | Redundancy duplex mode (simplex=no redundancy, duplex=redundant pair) |\n| `snmp.device_prof_cRFStatusLastSwactReasonCode` | `{reason}` | device | Reason code for the last switchover |\n| `snmp.device_prof_cRFStatusPeerUnitState` | `{status}` | device | Current state of the peer redundancy unit |\n| `snmp.device_prof_cRFStatusUnitState` | `{status}` | device | Current state of this redundancy unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonTemperatureState` | `{status}` | per temp_index | Current state of the testpoint |\n| `snmp.device_prof_ciscoEnvMonTemperatureStatusValue` | `Cel` | per temp_index | Current measurement of the testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageState` | `{status}` | per voltage_index | Current state of the voltage testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageStatusValue` | `mV` | per voltage_index | Current measurement of the voltage testpoint |\n| `snmp.device_prof_entSensorValue` | `1` | per sensor_index, rm:sensor_type, rm:sensor_scale, rm:sensor_precision | Most recent measurement obtained by the agent for this sensor |\n\n### Hardware / StackWise\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cswRingRedundant` | `{status}` | device | Whether the stack ring is in a redundant configuration |\n| `snmp.device_prof_cswStackPortOperStatus` | `{status}` | per stack_port_index | State of the stackport |\n| `snmp.device_prof_cswSwitchRole` | `{role}` | per mac_addr, entity_name | Role of a switch in the stack |\n| `snmp.device_prof_cswSwitchState` | `{status}` | per mac_addr, entity_name | Current state of a switch |\n\n### Network / Bridge\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dot1dStpTimeSinceTopologyChange` | `s` | device | Time since the last STP topology change was detected |\n| `snmp.device_prof_dot1dStpTopChanges` | `{change}/s` | device | Rate of STP topology changes detected |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwConnectionStatCount` | `1` | per conn_stat_id | Integer that contains the value of the resource statistic. |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cieIfInAbortErrs` | `{error}/s` | per interface | Number of input packets aborted |\n| `snmp.device_prof_cieIfInFramingErrs` | `{error}/s` | per interface | Number of framing error packets received |\n| `snmp.device_prof_cieIfInGiantsErrs` | `{error}/s` | per interface | Number of giant packets received (frames larger than MTU) |\n| `snmp.device_prof_cieIfInIgnored` | `{error}/s` | per interface | Number of input packets ignored by the interface |\n| `snmp.device_prof_cieIfInOverrunErrs` | `{error}/s` | per interface | Number of overrun error packets received (hardware buffer exhaustion) |\n| `snmp.device_prof_cieIfInRuntsErrs` | `{error}/s` | per interface | Number of runt packets received (frames smaller than 64 bytes) |\n| `snmp.device_prof_cieIfInputQueueDrops` | `{drop}/s` | per interface | Number of input packets which were dropped |\n| `snmp.device_prof_cieIfLastInTime` | `ms` | per interface | Elapsed time in milliseconds since last protocol input packet was received |\n| `snmp.device_prof_cieIfLastOutTime` | `ms` | per interface | Elapsed time in milliseconds since last protocol output packet was transmitted |\n| `snmp.device_prof_cieIfOutputQueueDrops` | `{drop}/s` | per interface | Number of output packets dropped by the interface |\n| `snmp.device_prof_cieIfResetCount` | `{reset}/s` | per interface | Number of times the interface was internally reset and brought up |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / RTT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rttMonCtrlOperConnectionLostOccurred` | `{status}` | per rtt_index | Indicates if a connection lost occurred for the RTT operation |\n| `snmp.device_prof_rttMonCtrlOperOverThresholdOccurred` | `{status}` | per rtt_index | Indicates if the latest RTT operation exceeded its configured threshold value |\n| `snmp.device_prof_rttMonCtrlOperState` | `{status}` | per rtt_index | Used to manage the state of the probe that is implementing conceptual RTT control row. |\n| `snmp.device_prof_rttMonCtrlOperTimeoutOccurred` | `{status}` | per rtt_index | Indicates if a timeout occurred for the RTT operation |\n| `snmp.device_prof_rttMonLatestRttOperSense` | `{status}` | per rtt_index | Sense code for the completion status of the latest RTT operation |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpmCPULoadAvg15min` | `{load_average}` | per cpu_index | CPU load average over the last 15 minutes |\n| `snmp.device_prof_cpmCPULoadAvg1min` | `{load_average}` | per cpu_index | CPU load average over the last 1 minute |\n| `snmp.device_prof_cpmCPULoadAvg5min` | `{load_average}` | per cpu_index | CPU load average over the last 5 minutes |\n| `snmp.device_prof_cpmCPUTotal1minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 1 minute period |\n| `snmp.device_prof_cpmCPUTotal5minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 5 minute period |\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cempMemPoolLowestFree` | `By` | per mem_pool_index | Lowest amount of free memory observed since last clear (watermark) |\n| `snmp.device_prof_ciscoMemoryPoolFree` | `By` | per mem_pool_index | Number of bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolLargestFree` | `By` | per mem_pool_index | Largest number of contiguous bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolUsed` | `By` | per mem_pool_index | Number of bytes from the memory pool currently in use |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / VirtualSwitch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvsChassisUpTime` | `cs` | per chassis_switch_id | Up time for the chassis since last re-initialization |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_Catalyst",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco Catalyst WLC",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","catalyst","wlc","snmp","wlc","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco Catalyst WLC\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco Catalyst WLC (wlc) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 9 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-catalyst-wlc.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco Catalyst WLC via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco Catalyst WLC profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**171 metrics** in 22 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 3 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Firewall | 1 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Redundancy | 4 |\n| Hardware / Sensor | 5 |\n| Hardware / StackWise | 4 |\n| Network / Bridge | 2 |\n| Network / Firewall | 1 |\n| Network / IP | 28 |\n| Network / Interface | 42 |\n| Network / RTT | 5 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| Network / Wireless | 12 |\n| System / CPU | 6 |\n| System / Memory | 4 |\n| System / Uptime | 1 |\n| System / VirtualSwitch | 1 |\n| Uncategorized | 21 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFRUCurrent` | `A` | per fru_index | Current supplied by the FRU or current required to operate the FRU |\n| `snmp.device_prof_cefcFRUPowerAdminStatus` | `{status}` | per fru_index | Administratively desired FRU power state |\n| `snmp.device_prof_cefcFRUPowerOperStatus` | `{status}` | per fru_index | Operational FRU power state |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonFanState` | `{status}` | per fan_status_index | Current state of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFanTrayOperStatus` | `{status}` | per fru_index, cefc_fan_tray_direction | Operational state of the fan or fan tray |\n\n### Hardware / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwHardwareStatusValue` | `{status}` | per hardware_type, hardware_desc | Current status of the resource |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonSupplyState` | `{status}` | per power_supply_index | Current state of the power supply |\n\n### Hardware / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cRFStatusDuplexMode` | `{status}` | device | Redundancy duplex mode (simplex=no redundancy, duplex=redundant pair) |\n| `snmp.device_prof_cRFStatusLastSwactReasonCode` | `{reason}` | device | Reason code for the last switchover |\n| `snmp.device_prof_cRFStatusPeerUnitState` | `{status}` | device | Current state of the peer redundancy unit |\n| `snmp.device_prof_cRFStatusUnitState` | `{status}` | device | Current state of this redundancy unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonTemperatureState` | `{status}` | per temp_index | Current state of the testpoint |\n| `snmp.device_prof_ciscoEnvMonTemperatureStatusValue` | `Cel` | per temp_index | Current measurement of the testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageState` | `{status}` | per voltage_index | Current state of the voltage testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageStatusValue` | `mV` | per voltage_index | Current measurement of the voltage testpoint |\n| `snmp.device_prof_entSensorValue` | `1` | per sensor_index, rm:sensor_type, rm:sensor_scale, rm:sensor_precision | Most recent measurement obtained by the agent for this sensor |\n\n### Hardware / StackWise\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cswRingRedundant` | `{status}` | device | Whether the stack ring is in a redundant configuration |\n| `snmp.device_prof_cswStackPortOperStatus` | `{status}` | per stack_port_index | State of the stackport |\n| `snmp.device_prof_cswSwitchRole` | `{role}` | per mac_addr, entity_name | Role of a switch in the stack |\n| `snmp.device_prof_cswSwitchState` | `{status}` | per mac_addr, entity_name | Current state of a switch |\n\n### Network / Bridge\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dot1dStpTimeSinceTopologyChange` | `s` | device | Time since the last STP topology change was detected |\n| `snmp.device_prof_dot1dStpTopChanges` | `{change}/s` | device | Rate of STP topology changes detected |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwConnectionStatCount` | `1` | per conn_stat_id | Integer that contains the value of the resource statistic. |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cieIfInAbortErrs` | `{error}/s` | per interface | Number of input packets aborted |\n| `snmp.device_prof_cieIfInFramingErrs` | `{error}/s` | per interface | Number of framing error packets received |\n| `snmp.device_prof_cieIfInGiantsErrs` | `{error}/s` | per interface | Number of giant packets received (frames larger than MTU) |\n| `snmp.device_prof_cieIfInIgnored` | `{error}/s` | per interface | Number of input packets ignored by the interface |\n| `snmp.device_prof_cieIfInOverrunErrs` | `{error}/s` | per interface | Number of overrun error packets received (hardware buffer exhaustion) |\n| `snmp.device_prof_cieIfInRuntsErrs` | `{error}/s` | per interface | Number of runt packets received (frames smaller than 64 bytes) |\n| `snmp.device_prof_cieIfInputQueueDrops` | `{drop}/s` | per interface | Number of input packets which were dropped |\n| `snmp.device_prof_cieIfLastInTime` | `ms` | per interface | Elapsed time in milliseconds since last protocol input packet was received |\n| `snmp.device_prof_cieIfLastOutTime` | `ms` | per interface | Elapsed time in milliseconds since last protocol output packet was transmitted |\n| `snmp.device_prof_cieIfOutputQueueDrops` | `{drop}/s` | per interface | Number of output packets dropped by the interface |\n| `snmp.device_prof_cieIfResetCount` | `{reset}/s` | per interface | Number of times the interface was internally reset and brought up |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / RTT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rttMonCtrlOperConnectionLostOccurred` | `{status}` | per rtt_index | Indicates if a connection lost occurred for the RTT operation |\n| `snmp.device_prof_rttMonCtrlOperOverThresholdOccurred` | `{status}` | per rtt_index | Indicates if the latest RTT operation exceeded its configured threshold value |\n| `snmp.device_prof_rttMonCtrlOperState` | `{status}` | per rtt_index | Used to manage the state of the probe that is implementing conceptual RTT control row. |\n| `snmp.device_prof_rttMonCtrlOperTimeoutOccurred` | `{status}` | per rtt_index | Indicates if a timeout occurred for the RTT operation |\n| `snmp.device_prof_rttMonLatestRttOperSense` | `{status}` | per rtt_index | Sense code for the completion status of the latest RTT operation |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### Network / Wireless\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_bsnAPAdminStatus` | `{status}` | per ap_mac_address, ap_name, ap_location, ap_ip_address | Admin State of the AP |\n| `snmp.device_prof_bsnAPIfAdminStatus` | `{status}` | per ap_if_slot_id, ap_mac_address, ap_name, ap_location, ap_ip_address | Admin status of the interface |\n| `snmp.device_prof_bsnAPIfLoadChannelUtilization` | `%` | per ap_if_slot_id, ap_mac_address, ap_name, ap_location, ap_ip_address | Channel utilization |\n| `snmp.device_prof_bsnAPIfLoadRxUtilization` | `%` | per ap_if_slot_id, ap_mac_address, ap_name, ap_location, ap_ip_address | Percentage of time the Airespace AP receiver is busy operating on packets |\n| `snmp.device_prof_bsnAPIfLoadTxUtilization` | `%` | per ap_if_slot_id, ap_mac_address, ap_name, ap_location, ap_ip_address | Percentage of time the Airespace AP transmitter is busy operating on packets |\n| `snmp.device_prof_bsnAPIfOperStatus` | `{status}` | per ap_if_slot_id, ap_mac_address, ap_name, ap_location, ap_ip_address | Operational status of the interface |\n| `snmp.device_prof_bsnAPIfPoorSNRClients` | `{client}` | per ap_if_slot_id, ap_mac_address, ap_name, ap_location, ap_ip_address | Number of clients with poor SNR attached to this Airespace AP at the last measurement interval |\n| `snmp.device_prof_bsnAPOperationStatus` | `{status}` | per ap_mac_address, ap_name, ap_location, ap_ip_address | Operation State of the AP |\n| `snmp.device_prof_bsnApIfNoOfUsers` | `{user}` | per ap_if_slot_id, ap_mac_address, ap_name, ap_location, ap_ip_address | Number of users associated with this radio |\n| `snmp.device_prof_bsnDot11EssAdminStatus` | `{status}` | per wlan_index, ssid | Administrative Status of ESS(WLAN) |\n| `snmp.device_prof_bsnDot11EssNumberOfMobileStations` | `{station}` | per wlan_index, ssid | Number of mobile stations currently associated with the WLAN |\n| `snmp.device_prof_bsnDot11EssRowStatus` | `{status}` | per wlan_index, ssid | Row status type for the bsnDot11EssEntry |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpmCPULoadAvg15min` | `{load_average}` | per cpu_index | CPU load average over the last 15 minutes |\n| `snmp.device_prof_cpmCPULoadAvg1min` | `{load_average}` | per cpu_index | CPU load average over the last 1 minute |\n| `snmp.device_prof_cpmCPULoadAvg5min` | `{load_average}` | per cpu_index | CPU load average over the last 5 minutes |\n| `snmp.device_prof_cpmCPUTotal1minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 1 minute period |\n| `snmp.device_prof_cpmCPUTotal5minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 5 minute period |\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cempMemPoolLowestFree` | `By` | per mem_pool_index | Lowest amount of free memory observed since last clear (watermark) |\n| `snmp.device_prof_ciscoMemoryPoolFree` | `By` | per mem_pool_index | Number of bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolLargestFree` | `By` | per mem_pool_index | Largest number of contiguous bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolUsed` | `By` | per mem_pool_index | Number of bytes from the memory pool currently in use |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / VirtualSwitch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvsChassisUpTime` | `cs` | per chassis_switch_id | Up time for the chassis since last re-initialization |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_Catalyst_WLC",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco Csr1000V",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","csr1000v","snmp","router","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco Csr1000V\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco Csr1000V (router) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-csr1000v.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco Csr1000V via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco Csr1000V profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**146 metrics** in 20 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 3 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Firewall | 1 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Redundancy | 4 |\n| Hardware / Sensor | 4 |\n| Hardware / StackWise | 4 |\n| Network / Firewall | 1 |\n| Network / IP | 28 |\n| Network / Interface | 32 |\n| Network / RTT | 5 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / CPU | 6 |\n| System / Memory | 4 |\n| System / Uptime | 1 |\n| System / VirtualSwitch | 1 |\n| Uncategorized | 21 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFRUCurrent` | `A` | per fru_index | Current supplied by the FRU or current required to operate the FRU |\n| `snmp.device_prof_cefcFRUPowerAdminStatus` | `{status}` | per fru_index | Administratively desired FRU power state |\n| `snmp.device_prof_cefcFRUPowerOperStatus` | `{status}` | per fru_index | Operational FRU power state |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonFanState` | `{status}` | per fan_status_index | Current state of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFanTrayOperStatus` | `{status}` | per fru_index, cefc_fan_tray_direction | Operational state of the fan or fan tray |\n\n### Hardware / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwHardwareStatusValue` | `{status}` | per hardware_type, hardware_desc | Current status of the resource |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonSupplyState` | `{status}` | per power_supply_index | Current state of the power supply |\n\n### Hardware / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cRFStatusDuplexMode` | `{status}` | device | Redundancy duplex mode (simplex=no redundancy, duplex=redundant pair) |\n| `snmp.device_prof_cRFStatusLastSwactReasonCode` | `{reason}` | device | Reason code for the last switchover |\n| `snmp.device_prof_cRFStatusPeerUnitState` | `{status}` | device | Current state of the peer redundancy unit |\n| `snmp.device_prof_cRFStatusUnitState` | `{status}` | device | Current state of this redundancy unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonTemperatureState` | `{status}` | per temp_index | Current state of the testpoint |\n| `snmp.device_prof_ciscoEnvMonTemperatureStatusValue` | `Cel` | per temp_index | Current measurement of the testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageState` | `{status}` | per voltage_index | Current state of the voltage testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageStatusValue` | `mV` | per voltage_index | Current measurement of the voltage testpoint |\n\n### Hardware / StackWise\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cswRingRedundant` | `{status}` | device | Whether the stack ring is in a redundant configuration |\n| `snmp.device_prof_cswStackPortOperStatus` | `{status}` | per stack_port_index | State of the stackport |\n| `snmp.device_prof_cswSwitchRole` | `{role}` | per mac_addr, entity_name | Role of a switch in the stack |\n| `snmp.device_prof_cswSwitchState` | `{status}` | per mac_addr, entity_name | Current state of a switch |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwConnectionStatCount` | `1` | per conn_stat_id | Integer that contains the value of the resource statistic. |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cieIfResetCount` | `{reset}/s` | per interface | Number of times the interface was internally reset and brought up |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / RTT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rttMonCtrlOperConnectionLostOccurred` | `{status}` | per rtt_index | Indicates if a connection lost occurred for the RTT operation |\n| `snmp.device_prof_rttMonCtrlOperOverThresholdOccurred` | `{status}` | per rtt_index | Indicates if the latest RTT operation exceeded its configured threshold value |\n| `snmp.device_prof_rttMonCtrlOperState` | `{status}` | per rtt_index | Used to manage the state of the probe that is implementing conceptual RTT control row. |\n| `snmp.device_prof_rttMonCtrlOperTimeoutOccurred` | `{status}` | per rtt_index | Indicates if a timeout occurred for the RTT operation |\n| `snmp.device_prof_rttMonLatestRttOperSense` | `{status}` | per rtt_index | Sense code for the completion status of the latest RTT operation |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpmCPULoadAvg15min` | `{load_average}` | per cpu_index | CPU load average over the last 15 minutes |\n| `snmp.device_prof_cpmCPULoadAvg1min` | `{load_average}` | per cpu_index | CPU load average over the last 1 minute |\n| `snmp.device_prof_cpmCPULoadAvg5min` | `{load_average}` | per cpu_index | CPU load average over the last 5 minutes |\n| `snmp.device_prof_cpmCPUTotal1minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 1 minute period |\n| `snmp.device_prof_cpmCPUTotal5minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 5 minute period |\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cempMemPoolLowestFree` | `By` | per mem_pool_index | Lowest amount of free memory observed since last clear (watermark) |\n| `snmp.device_prof_ciscoMemoryPoolFree` | `By` | per mem_pool_index | Number of bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolLargestFree` | `By` | per mem_pool_index | Largest number of contiguous bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolUsed` | `By` | per mem_pool_index | Number of bytes from the memory pool currently in use |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / VirtualSwitch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvsChassisUpTime` | `cs` | per chassis_switch_id | Up time for the chassis since last re-initialization |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_Csr1000V",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco Firepower",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","firepower","snmp","firewall/firepower","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco Firepower\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco Firepower (firewall/firepower) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 6 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-firepower.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco Firepower via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco Firepower profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**12 metrics** in 7 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Fan | 1 |\n| Hardware / PowerSupply | 1 |\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Disk | 2 |\n| System / Memory | 2 |\n| System / Uptime | 1 |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfprEquipmentFanOperState` | `{status}` | per cfpr_equipment_fan_dn | Equipment/Fans |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfprEquipmentPsuPower` | `{status}` | per cfpr_equipment_psu_dn | Psu power state |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfprSmMonitorDataDiskAvailable` | `By` | per cfpr_sm_monitor_dn | Data disk available |\n| `snmp.device_prof_cfprSmMonitorDataDiskTotal` | `By` | per cfpr_sm_monitor_dn | Data disk total |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | per mem_index | Memory free |\n| `snmp.device_prof_memory_used` | `By` | per mem_index | Memory used |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_Firepower",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco Firepower ASA",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","firepower","asa","snmp","firewall/firepower","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco Firepower ASA\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco Firepower ASA (firewall/firepower) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 17 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-firepower-asa.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco Firepower ASA via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco Firepower ASA profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**14 metrics** in 5 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| Network / VPN | 6 |\n| System / CPU | 1 |\n| System / Memory | 2 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / VPN\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_crasMaxSessionsSupportable` | `{session}` | device | The maximum number of remote access sessions that may be supported on this device |\n| `snmp.device_prof_crasMaxUsersSupportable` | `{user}` | device | The maximum number of remote access users for whom Remote Access sessions may be supported on this device |\n| `snmp.device_prof_crasNumDeclinedSessions` | `{session}/s` | device | Number of session setup attempts which were declined due to authentication or authorization failure |\n| `snmp.device_prof_crasNumSessions` | `{session}` | device | Number of currently active sessions |\n| `snmp.device_prof_crasNumSetupFailInsufResources` | `{session}/s` | device | The number of session setup attempts that failed due to insufficient resources |\n| `snmp.device_prof_crasNumUsers` | `{user}` | device | The number of users who have active sessions |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | device | Number of bytes from the memory pool that are currently unused on the physical entity |\n| `snmp.device_prof_memory_used` | `By` | device | Number of bytes from the memory pool that are currently in use by applications on the physical entity |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_Firepower_ASA",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco ICM",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","icm","snmp","icm","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco ICM\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco ICM (icm) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-icm.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco ICM via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco ICM profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**173 metrics** in 26 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 3 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Firewall | 1 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Redundancy | 4 |\n| Hardware / Sensor | 4 |\n| Hardware / StackWise | 4 |\n| Network / Firewall | 1 |\n| Network / IP | 28 |\n| Network / Interface | 32 |\n| Network / RTT | 5 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / CPU | 6 |\n| System / Memory | 4 |\n| System / Process | 3 |\n| System / Uptime | 1 |\n| System / VirtualSwitch | 1 |\n| Uncategorized | 21 |\n| Voice / CCA | 4 |\n| Voice / CVP | 8 |\n| Voice / DialPeer | 6 |\n| Voice / Interface | 2 |\n| Voice / UCM | 4 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFRUCurrent` | `A` | per fru_index | Current supplied by the FRU or current required to operate the FRU |\n| `snmp.device_prof_cefcFRUPowerAdminStatus` | `{status}` | per fru_index | Administratively desired FRU power state |\n| `snmp.device_prof_cefcFRUPowerOperStatus` | `{status}` | per fru_index | Operational FRU power state |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonFanState` | `{status}` | per fan_status_index | Current state of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFanTrayOperStatus` | `{status}` | per fru_index, cefc_fan_tray_direction | Operational state of the fan or fan tray |\n\n### Hardware / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwHardwareStatusValue` | `{status}` | per hardware_type, hardware_desc | Current status of the resource |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonSupplyState` | `{status}` | per power_supply_index | Current state of the power supply |\n\n### Hardware / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cRFStatusDuplexMode` | `{status}` | device | Redundancy duplex mode (simplex=no redundancy, duplex=redundant pair) |\n| `snmp.device_prof_cRFStatusLastSwactReasonCode` | `{reason}` | device | Reason code for the last switchover |\n| `snmp.device_prof_cRFStatusPeerUnitState` | `{status}` | device | Current state of the peer redundancy unit |\n| `snmp.device_prof_cRFStatusUnitState` | `{status}` | device | Current state of this redundancy unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonTemperatureState` | `{status}` | per temp_index | Current state of the testpoint |\n| `snmp.device_prof_ciscoEnvMonTemperatureStatusValue` | `Cel` | per temp_index | Current measurement of the testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageState` | `{status}` | per voltage_index | Current state of the voltage testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageStatusValue` | `mV` | per voltage_index | Current measurement of the voltage testpoint |\n\n### Hardware / StackWise\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cswRingRedundant` | `{status}` | device | Whether the stack ring is in a redundant configuration |\n| `snmp.device_prof_cswStackPortOperStatus` | `{status}` | per stack_port_index | State of the stackport |\n| `snmp.device_prof_cswSwitchRole` | `{role}` | per mac_addr, entity_name | Role of a switch in the stack |\n| `snmp.device_prof_cswSwitchState` | `{status}` | per mac_addr, entity_name | Current state of a switch |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwConnectionStatCount` | `1` | per conn_stat_id | Integer that contains the value of the resource statistic. |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cieIfResetCount` | `{reset}/s` | per interface | Number of times the interface was internally reset and brought up |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / RTT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rttMonCtrlOperConnectionLostOccurred` | `{status}` | per rtt_index | Indicates if a connection lost occurred for the RTT operation |\n| `snmp.device_prof_rttMonCtrlOperOverThresholdOccurred` | `{status}` | per rtt_index | Indicates if the latest RTT operation exceeded its configured threshold value |\n| `snmp.device_prof_rttMonCtrlOperState` | `{status}` | per rtt_index | Used to manage the state of the probe that is implementing conceptual RTT control row. |\n| `snmp.device_prof_rttMonCtrlOperTimeoutOccurred` | `{status}` | per rtt_index | Indicates if a timeout occurred for the RTT operation |\n| `snmp.device_prof_rttMonLatestRttOperSense` | `{status}` | per rtt_index | Sense code for the completion status of the latest RTT operation |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpmCPULoadAvg15min` | `{load_average}` | per cpu_index | CPU load average over the last 15 minutes |\n| `snmp.device_prof_cpmCPULoadAvg1min` | `{load_average}` | per cpu_index | CPU load average over the last 1 minute |\n| `snmp.device_prof_cpmCPULoadAvg5min` | `{load_average}` | per cpu_index | CPU load average over the last 5 minutes |\n| `snmp.device_prof_cpmCPUTotal1minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 1 minute period |\n| `snmp.device_prof_cpmCPUTotal5minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 5 minute period |\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cempMemPoolLowestFree` | `By` | per mem_pool_index | Lowest amount of free memory observed since last clear (watermark) |\n| `snmp.device_prof_ciscoMemoryPoolFree` | `By` | per mem_pool_index | Number of bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolLargestFree` | `By` | per mem_pool_index | Largest number of contiguous bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolUsed` | `By` | per mem_pool_index | Number of bytes from the memory pool currently in use |\n\n### System / Process\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSWRunPerfCPU` | `cs` | per run_index | The number of centi-seconds of the total system's CPU resources consumed by this process |\n| `snmp.device_prof_hrSWRunPerfMem` | `By` | per run_index | Total amount of real system memory allocated to this process |\n| `snmp.device_prof_hrSWRunStatus` | `{status}` | per run_index | The status of this running piece of software |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / VirtualSwitch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvsChassisUpTime` | `cs` | per chassis_switch_id | Up time for the chassis since last re-initialization |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n### Voice / CCA\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cccaPimStatus` | `{status}` | per pim_num, pim_name, pim_host | Last known status of the enterprise contact center application peripheral interface manager functional component. |\n| `snmp.device_prof_cccaRouterAgentsLoggedOn` | `{agent}` | per instance_number | Number of contact center agents currently managed by the enterprise contact center application. |\n| `snmp.device_prof_cccaRouterCallsInProgress` | `{call}` | per instance_number | Number of active (voice) calls being managed by the enterprise contact center application. |\n| `snmp.device_prof_cccaRouterCallsInQueue` | `{call}` | per instance_number | Number of calls queued in all network Voice Response Units (VRUs). |\n\n### Voice / CVP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ccvpLicAggMaxPortsInUse` | `{license}` | device | Peak number of simultaneous port licenses used since the start of the system |\n| `snmp.device_prof_ccvpLicRtPortsInUse` | `{license}` | device | Number of port licenses currently in use on the call server |\n| `snmp.device_prof_ccvpSipIntAvgLatency1` | `ms` | per service_index | Average period of time elapsed between the arrival of a CONNECT message from ICM and when the call is actually answered, on the fi\u2026 |\n| `snmp.device_prof_ccvpSipIntAvgLatency2` | `ms` | per service_index | Average period of time between the arrival of a CONNECT message from ICM and when the call is actually answered, on the second and\u2026 |\n| `snmp.device_prof_ccvpSipIntConnectsRcv` | `{connect}/s` | per service_index | Number of CONNECT messages received by the SIP service in order to perform a Customer Voice Portal transfer |\n| `snmp.device_prof_ccvpSipIntNewCalls` | `{invite}/s` | per service_index | Number of SIP INVITE messages received by CVP since system start time |\n| `snmp.device_prof_ccvpSipRtActiveCalls` | `{call}` | per service_index | Number of active calls being handled by the CVP SIP service |\n| `snmp.device_prof_ccvpSipRtTotalCallLegs` | `{call_leg}` | per service_index | Number of SIP call legs being handled by the SIP service |\n\n### Voice / DialPeer\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvCallVolPeerIncomingCalls` | `{call}` | per peer_index | Total number of active calls that has selected the dialpeer as an incoming dialpeer. |\n| `snmp.device_prof_cvCallVolPeerOutgoingCalls` | `{call}` | per peer_index | Total number of active calls that has selected the dialpeer as an outgoing dialpeer. |\n| `snmp.device_prof_dialCtlPeerStatsAcceptCalls` | `{call}/s` | per peer_index | Number of calls from this peer accepted since system startup |\n| `snmp.device_prof_dialCtlPeerStatsFailCalls` | `{call}/s` | per peer_index | Number of failed call attempts to this peer since system startup |\n| `snmp.device_prof_dialCtlPeerStatsRefuseCalls` | `{call}/s` | per peer_index | Number of calls from this peer refused since system startup |\n| `snmp.device_prof_dialCtlPeerStatsSuccessCalls` | `{call}/s` | per peer_index | Number of completed calls to this peer |\n\n### Voice / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvCallVolMediaIncomingCalls` | `{call}/s` | per interface | Total number of inbound active media calls through this IP interface. |\n| `snmp.device_prof_cvCallVolMediaOutgoingCalls` | `{call}/s` | per interface | Total number of outbound active media calls through the IP interface. |\n\n### Voice / UCM\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ccmRegisteredGateways` | `{gateway}` | device | Number of gateways that are registered and actively in communication with the local call manager |\n| `snmp.device_prof_ccmRegisteredPhones` | `{phone}` | device | Number of phones that are registered and actively in communication with the local call manager. |\n| `snmp.device_prof_ccmRejectedPhones` | `{reject}` | device | Number of phones whose registration requests were rejected by the local call manager. |\n| `snmp.device_prof_ccmUnregisteredPhones` | `{phone}` | device | Number of phone that are unregistered or have lost contact with the local call manager. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_ICM",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco ISE",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","ise","snmp","server","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco ISE\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco ISE (server) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 2 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-ise.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco ISE via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco ISE profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**38 metrics** in 7 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Activity | 2 |\n| System / CPU | 3 |\n| System / Disk | 15 |\n| System / Memory | 11 |\n| System / Uptime | 1 |\n| Uncategorized | 2 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n| `snmp.device_prof_ucd_ssRawContexts` | `{switch}/s` | device | Number of context switches |\n| `snmp.device_prof_ucd_ssRawInterrupts` | `{interrupt}/s` | device | Number of interrupts processed |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_diskIOLA1` | `%` | per ucd_disk_io_device | The 1 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA15` | `%` | per ucd_disk_io_device | The 15 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA5` | `%` | per ucd_disk_io_device | The 5 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIONReadX` | `By/s` | per ucd_disk_io_device | The number of bytes read from this device since boot |\n| `snmp.device_prof_ucd_diskIONWrittenX` | `By/s` | per ucd_disk_io_device | The number of bytes written to this device since boot |\n| `snmp.device_prof_ucd_diskIOReads` | `{read}/s` | per ucd_disk_io_device | The number of read accesses from this device since boot |\n| `snmp.device_prof_ucd_diskIOWrites` | `{write}/s` | per ucd_disk_io_device | The number of write accesses to this device since boot |\n| `snmp.device_prof_ucd_dskAvail` | `By` | per ucd_dsk_path, ucd_dsk_device | Available space on the disk |\n| `snmp.device_prof_ucd_dskErrorFlag` | `{status}` | per ucd_dsk_path, ucd_dsk_device | Flag signaling that the disk or partition is under the minimum required space configured for it |\n| `snmp.device_prof_ucd_dskPercent` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of space used on disk |\n| `snmp.device_prof_ucd_dskPercentNode` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of inodes used on disk |\n| `snmp.device_prof_ucd_dskTotal` | `By` | per ucd_dsk_path, ucd_dsk_device | Total size of the disk/partition |\n| `snmp.device_prof_ucd_dskUsed` | `By` | per ucd_dsk_path, ucd_dsk_device | Used space on the disk |\n| `snmp.device_prof_ucd_ssIORawReceived` | `By/s` | device | Amount of data read from disk or other block device |\n| `snmp.device_prof_ucd_ssIORawSent` | `By/s` | device | Amount of data written to disk or other block device |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | device | The amount of real/physical memory currently unused or available |\n| `snmp.device_prof_ucd_memAvailSwap` | `By` | device | The amount of swap space currently unused or available |\n| `snmp.device_prof_ucd_memBuffer` | `By` | device | The total amount of real or virtual memory currently allocated for use as memory buffers |\n| `snmp.device_prof_ucd_memCached` | `By` | device | The total amount of real or virtual memory currently allocated for use as cached memory |\n| `snmp.device_prof_ucd_memMinimumSwap` | `By` | device | The minimum amount of swap space expected to be kept free or available during normal operation of this host |\n| `snmp.device_prof_ucd_memShared` | `By` | device | The total amount of real or virtual memory currently allocated for use as shared memory |\n| `snmp.device_prof_ucd_memTotalFree` | `By` | device | The total amount of memory free or available for use on this host |\n| `snmp.device_prof_ucd_memTotalSwap` | `By` | device | The total amount of swap space configured for this host |\n| `snmp.device_prof_ucd_memoryTotal` | `By` | device | The total amount of real/physical memory installed on this host |\n| `snmp.device_prof_ucd_ssRawSwapIn` | `By/s` | device | Amount of memory swapped in from disk |\n| `snmp.device_prof_ucd_ssRawSwapOut` | `By/s` | device | Amount of memory swapped out to disk |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_ISE",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco ISR",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","isr","snmp","router","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco ISR\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco ISR (router) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 77 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-isr.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco ISR via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco ISR profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**146 metrics** in 20 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 3 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Firewall | 1 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Redundancy | 4 |\n| Hardware / Sensor | 4 |\n| Hardware / StackWise | 4 |\n| Network / Firewall | 1 |\n| Network / IP | 28 |\n| Network / Interface | 32 |\n| Network / RTT | 5 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / CPU | 6 |\n| System / Memory | 4 |\n| System / Uptime | 1 |\n| System / VirtualSwitch | 1 |\n| Uncategorized | 21 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFRUCurrent` | `A` | per fru_index | Current supplied by the FRU or current required to operate the FRU |\n| `snmp.device_prof_cefcFRUPowerAdminStatus` | `{status}` | per fru_index | Administratively desired FRU power state |\n| `snmp.device_prof_cefcFRUPowerOperStatus` | `{status}` | per fru_index | Operational FRU power state |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonFanState` | `{status}` | per fan_status_index | Current state of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFanTrayOperStatus` | `{status}` | per fru_index, cefc_fan_tray_direction | Operational state of the fan or fan tray |\n\n### Hardware / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwHardwareStatusValue` | `{status}` | per hardware_type, hardware_desc | Current status of the resource |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonSupplyState` | `{status}` | per power_supply_index | Current state of the power supply |\n\n### Hardware / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cRFStatusDuplexMode` | `{status}` | device | Redundancy duplex mode (simplex=no redundancy, duplex=redundant pair) |\n| `snmp.device_prof_cRFStatusLastSwactReasonCode` | `{reason}` | device | Reason code for the last switchover |\n| `snmp.device_prof_cRFStatusPeerUnitState` | `{status}` | device | Current state of the peer redundancy unit |\n| `snmp.device_prof_cRFStatusUnitState` | `{status}` | device | Current state of this redundancy unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonTemperatureState` | `{status}` | per temp_index | Current state of the testpoint |\n| `snmp.device_prof_ciscoEnvMonTemperatureStatusValue` | `Cel` | per temp_index | Current measurement of the testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageState` | `{status}` | per voltage_index | Current state of the voltage testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageStatusValue` | `mV` | per voltage_index | Current measurement of the voltage testpoint |\n\n### Hardware / StackWise\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cswRingRedundant` | `{status}` | device | Whether the stack ring is in a redundant configuration |\n| `snmp.device_prof_cswStackPortOperStatus` | `{status}` | per stack_port_index | State of the stackport |\n| `snmp.device_prof_cswSwitchRole` | `{role}` | per mac_addr, entity_name | Role of a switch in the stack |\n| `snmp.device_prof_cswSwitchState` | `{status}` | per mac_addr, entity_name | Current state of a switch |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwConnectionStatCount` | `1` | per conn_stat_id | Integer that contains the value of the resource statistic. |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cieIfResetCount` | `{reset}/s` | per interface | Number of times the interface was internally reset and brought up |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / RTT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rttMonCtrlOperConnectionLostOccurred` | `{status}` | per rtt_index | Indicates if a connection lost occurred for the RTT operation |\n| `snmp.device_prof_rttMonCtrlOperOverThresholdOccurred` | `{status}` | per rtt_index | Indicates if the latest RTT operation exceeded its configured threshold value |\n| `snmp.device_prof_rttMonCtrlOperState` | `{status}` | per rtt_index | Used to manage the state of the probe that is implementing conceptual RTT control row. |\n| `snmp.device_prof_rttMonCtrlOperTimeoutOccurred` | `{status}` | per rtt_index | Indicates if a timeout occurred for the RTT operation |\n| `snmp.device_prof_rttMonLatestRttOperSense` | `{status}` | per rtt_index | Sense code for the completion status of the latest RTT operation |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpmCPULoadAvg15min` | `{load_average}` | per cpu_index | CPU load average over the last 15 minutes |\n| `snmp.device_prof_cpmCPULoadAvg1min` | `{load_average}` | per cpu_index | CPU load average over the last 1 minute |\n| `snmp.device_prof_cpmCPULoadAvg5min` | `{load_average}` | per cpu_index | CPU load average over the last 5 minutes |\n| `snmp.device_prof_cpmCPUTotal1minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 1 minute period |\n| `snmp.device_prof_cpmCPUTotal5minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 5 minute period |\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cempMemPoolLowestFree` | `By` | per mem_pool_index | Lowest amount of free memory observed since last clear (watermark) |\n| `snmp.device_prof_ciscoMemoryPoolFree` | `By` | per mem_pool_index | Number of bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolLargestFree` | `By` | per mem_pool_index | Largest number of contiguous bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolUsed` | `By` | per mem_pool_index | Number of bytes from the memory pool currently in use |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / VirtualSwitch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvsChassisUpTime` | `cs` | per chassis_switch_id | Up time for the chassis since last re-initialization |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_ISR",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco ISR 4431",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","isr","4431","snmp","router","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco ISR 4431\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco ISR 4431 (router) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-isr-4431.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco ISR 4431 via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco ISR 4431 profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**173 metrics** in 26 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 3 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Firewall | 1 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Redundancy | 4 |\n| Hardware / Sensor | 4 |\n| Hardware / StackWise | 4 |\n| Network / Firewall | 1 |\n| Network / IP | 28 |\n| Network / Interface | 32 |\n| Network / RTT | 5 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / CPU | 6 |\n| System / Memory | 4 |\n| System / Process | 3 |\n| System / Uptime | 1 |\n| System / VirtualSwitch | 1 |\n| Uncategorized | 21 |\n| Voice / CCA | 4 |\n| Voice / CVP | 8 |\n| Voice / DialPeer | 6 |\n| Voice / Interface | 2 |\n| Voice / UCM | 4 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFRUCurrent` | `A` | per fru_index | Current supplied by the FRU or current required to operate the FRU |\n| `snmp.device_prof_cefcFRUPowerAdminStatus` | `{status}` | per fru_index | Administratively desired FRU power state |\n| `snmp.device_prof_cefcFRUPowerOperStatus` | `{status}` | per fru_index | Operational FRU power state |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonFanState` | `{status}` | per fan_status_index | Current state of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFanTrayOperStatus` | `{status}` | per fru_index, cefc_fan_tray_direction | Operational state of the fan or fan tray |\n\n### Hardware / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwHardwareStatusValue` | `{status}` | per hardware_type, hardware_desc | Current status of the resource |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonSupplyState` | `{status}` | per power_supply_index | Current state of the power supply |\n\n### Hardware / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cRFStatusDuplexMode` | `{status}` | device | Redundancy duplex mode (simplex=no redundancy, duplex=redundant pair) |\n| `snmp.device_prof_cRFStatusLastSwactReasonCode` | `{reason}` | device | Reason code for the last switchover |\n| `snmp.device_prof_cRFStatusPeerUnitState` | `{status}` | device | Current state of the peer redundancy unit |\n| `snmp.device_prof_cRFStatusUnitState` | `{status}` | device | Current state of this redundancy unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonTemperatureState` | `{status}` | per temp_index | Current state of the testpoint |\n| `snmp.device_prof_ciscoEnvMonTemperatureStatusValue` | `Cel` | per temp_index | Current measurement of the testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageState` | `{status}` | per voltage_index | Current state of the voltage testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageStatusValue` | `mV` | per voltage_index | Current measurement of the voltage testpoint |\n\n### Hardware / StackWise\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cswRingRedundant` | `{status}` | device | Whether the stack ring is in a redundant configuration |\n| `snmp.device_prof_cswStackPortOperStatus` | `{status}` | per stack_port_index | State of the stackport |\n| `snmp.device_prof_cswSwitchRole` | `{role}` | per mac_addr, entity_name | Role of a switch in the stack |\n| `snmp.device_prof_cswSwitchState` | `{status}` | per mac_addr, entity_name | Current state of a switch |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwConnectionStatCount` | `1` | per conn_stat_id | Integer that contains the value of the resource statistic. |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cieIfResetCount` | `{reset}/s` | per interface | Number of times the interface was internally reset and brought up |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / RTT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rttMonCtrlOperConnectionLostOccurred` | `{status}` | per rtt_index | Indicates if a connection lost occurred for the RTT operation |\n| `snmp.device_prof_rttMonCtrlOperOverThresholdOccurred` | `{status}` | per rtt_index | Indicates if the latest RTT operation exceeded its configured threshold value |\n| `snmp.device_prof_rttMonCtrlOperState` | `{status}` | per rtt_index | Used to manage the state of the probe that is implementing conceptual RTT control row. |\n| `snmp.device_prof_rttMonCtrlOperTimeoutOccurred` | `{status}` | per rtt_index | Indicates if a timeout occurred for the RTT operation |\n| `snmp.device_prof_rttMonLatestRttOperSense` | `{status}` | per rtt_index | Sense code for the completion status of the latest RTT operation |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpmCPULoadAvg15min` | `{load_average}` | per cpu_index | CPU load average over the last 15 minutes |\n| `snmp.device_prof_cpmCPULoadAvg1min` | `{load_average}` | per cpu_index | CPU load average over the last 1 minute |\n| `snmp.device_prof_cpmCPULoadAvg5min` | `{load_average}` | per cpu_index | CPU load average over the last 5 minutes |\n| `snmp.device_prof_cpmCPUTotal1minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 1 minute period |\n| `snmp.device_prof_cpmCPUTotal5minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 5 minute period |\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cempMemPoolLowestFree` | `By` | per mem_pool_index | Lowest amount of free memory observed since last clear (watermark) |\n| `snmp.device_prof_ciscoMemoryPoolFree` | `By` | per mem_pool_index | Number of bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolLargestFree` | `By` | per mem_pool_index | Largest number of contiguous bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolUsed` | `By` | per mem_pool_index | Number of bytes from the memory pool currently in use |\n\n### System / Process\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSWRunPerfCPU` | `cs` | per run_index | The number of centi-seconds of the total system's CPU resources consumed by this process |\n| `snmp.device_prof_hrSWRunPerfMem` | `By` | per run_index | Total amount of real system memory allocated to this process |\n| `snmp.device_prof_hrSWRunStatus` | `{status}` | per run_index | The status of this running piece of software |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / VirtualSwitch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvsChassisUpTime` | `cs` | per chassis_switch_id | Up time for the chassis since last re-initialization |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n### Voice / CCA\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cccaPimStatus` | `{status}` | per pim_num, pim_name, pim_host | Last known status of the enterprise contact center application peripheral interface manager functional component. |\n| `snmp.device_prof_cccaRouterAgentsLoggedOn` | `{agent}` | per instance_number | Number of contact center agents currently managed by the enterprise contact center application. |\n| `snmp.device_prof_cccaRouterCallsInProgress` | `{call}` | per instance_number | Number of active (voice) calls being managed by the enterprise contact center application. |\n| `snmp.device_prof_cccaRouterCallsInQueue` | `{call}` | per instance_number | Number of calls queued in all network Voice Response Units (VRUs). |\n\n### Voice / CVP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ccvpLicAggMaxPortsInUse` | `{license}` | device | Peak number of simultaneous port licenses used since the start of the system |\n| `snmp.device_prof_ccvpLicRtPortsInUse` | `{license}` | device | Number of port licenses currently in use on the call server |\n| `snmp.device_prof_ccvpSipIntAvgLatency1` | `ms` | per service_index | Average period of time elapsed between the arrival of a CONNECT message from ICM and when the call is actually answered, on the fi\u2026 |\n| `snmp.device_prof_ccvpSipIntAvgLatency2` | `ms` | per service_index | Average period of time between the arrival of a CONNECT message from ICM and when the call is actually answered, on the second and\u2026 |\n| `snmp.device_prof_ccvpSipIntConnectsRcv` | `{connect}/s` | per service_index | Number of CONNECT messages received by the SIP service in order to perform a Customer Voice Portal transfer |\n| `snmp.device_prof_ccvpSipIntNewCalls` | `{invite}/s` | per service_index | Number of SIP INVITE messages received by CVP since system start time |\n| `snmp.device_prof_ccvpSipRtActiveCalls` | `{call}` | per service_index | Number of active calls being handled by the CVP SIP service |\n| `snmp.device_prof_ccvpSipRtTotalCallLegs` | `{call_leg}` | per service_index | Number of SIP call legs being handled by the SIP service |\n\n### Voice / DialPeer\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvCallVolPeerIncomingCalls` | `{call}` | per peer_index | Total number of active calls that has selected the dialpeer as an incoming dialpeer. |\n| `snmp.device_prof_cvCallVolPeerOutgoingCalls` | `{call}` | per peer_index | Total number of active calls that has selected the dialpeer as an outgoing dialpeer. |\n| `snmp.device_prof_dialCtlPeerStatsAcceptCalls` | `{call}/s` | per peer_index | Number of calls from this peer accepted since system startup |\n| `snmp.device_prof_dialCtlPeerStatsFailCalls` | `{call}/s` | per peer_index | Number of failed call attempts to this peer since system startup |\n| `snmp.device_prof_dialCtlPeerStatsRefuseCalls` | `{call}/s` | per peer_index | Number of calls from this peer refused since system startup |\n| `snmp.device_prof_dialCtlPeerStatsSuccessCalls` | `{call}/s` | per peer_index | Number of completed calls to this peer |\n\n### Voice / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvCallVolMediaIncomingCalls` | `{call}/s` | per interface | Total number of inbound active media calls through this IP interface. |\n| `snmp.device_prof_cvCallVolMediaOutgoingCalls` | `{call}/s` | per interface | Total number of outbound active media calls through the IP interface. |\n\n### Voice / UCM\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ccmRegisteredGateways` | `{gateway}` | device | Number of gateways that are registered and actively in communication with the local call manager |\n| `snmp.device_prof_ccmRegisteredPhones` | `{phone}` | device | Number of phones that are registered and actively in communication with the local call manager. |\n| `snmp.device_prof_ccmRejectedPhones` | `{reject}` | device | Number of phones whose registration requests were rejected by the local call manager. |\n| `snmp.device_prof_ccmUnregisteredPhones` | `{phone}` | device | Number of phone that are unregistered or have lost contact with the local call manager. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_ISR_4431",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco Ironport Email",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","ironport","email","snmp","secure email gateway","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco Ironport Email\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco Ironport Email (secure email gateway) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 2 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-ironport-email.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco Ironport Email via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco Ironport Email profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**66 metrics** in 20 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Disk | 2 |\n| Hardware / Fan | 1 |\n| Hardware / Power | 2 |\n| Hardware / Sensor | 1 |\n| Mail / Queue | 4 |\n| Mail / Transfer | 1 |\n| Network / Bandwidth | 4 |\n| Network / DNS | 2 |\n| Network / Interface | 4 |\n| System / CPU | 2 |\n| System / Disk | 1 |\n| System / License | 1 |\n| System / Memory | 2 |\n| System / Resource | 2 |\n| System / Security | 1 |\n| System / Service | 2 |\n| System / Uptime | 2 |\n| Web / Cache | 11 |\n| Web / HTTP | 20 |\n| Web / Throughput | 1 |\n\n### Hardware / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_raidEvents` | `{event}/s` | device | The total number of RAID events that have occurred since the last appliance power on event |\n| `snmp.device_prof_ironport_raidStatus` | `{status}` | per ironport_raid_id | Represents the status of a drive attached to a RAID controller in the appliance |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_fanRPMs` | `{revolution}/min` | per ironport_fan_name | Speed in RPMs of the chassis fan |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_powerSupplyRedundancy` | `{status}` | per ironport_power_supply_name | Status of a collection of one or more power supplies |\n| `snmp.device_prof_ironport_powerSupplyStatus` | `{status}` | per ironport_power_supply_name | Status of the power supply |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_degreesCelsius` | `Cel` | per ironport_temperature_name | Temperature reading for the sensor being instrumented |\n\n### Mail / Queue\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_oldestMessageAge` | `s` | device | The number of seconds the oldest message has been in queue |\n| `snmp.device_prof_ironport_perCentQueueUtilization` | `%` | device | Percent of total queue capacity used |\n| `snmp.device_prof_ironport_queueAvailabilityStatus` | `{status}` | device | Status indicating the current availability of the message queue |\n| `snmp.device_prof_ironport_workQueueMessages` | `{message}` | device | Number of messages in the work queue |\n\n### Mail / Transfer\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_mailTransferThreads` | `{thread}` | device | Number of threads that perform some task related to transferring mail. |\n\n### Network / Bandwidth\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_cacheBwidthSavingNow` | `bit/s` | device | Bandwidth savings in the last minute |\n| `snmp.device_prof_ironport_cacheBwidthSpentNow` | `bit/s` | device | Bandwidth spent in the last minute |\n| `snmp.device_prof_ironport_cacheBwidthTotalNow` | `bit/s` | device | Bandwidth total in the last minute |\n| `snmp.device_prof_ironport_cacheTotalBandwidthSaving` | `bit/s` | device | The total bandwidth savings for HTTP |\n\n### Network / DNS\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_outstandingDNSRequests` | `{request}/s` | device | Number of DNS requests that have been sent but for which no reply has been received |\n| `snmp.device_prof_ironport_pendingDNSRequests` | `{request}` | device | Number of DNS requests waiting to be sent |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n| `snmp.device_prof_ironport_perCentCPULoad` | `%` | device | This object provides a general idea of how busy the CPU is according to the appliance software, within the last 5 seconds of ironp\u2026 |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_perCentDiskIOUtilization` | `%` | device | Disk I/O within the last 5-15 seconds |\n\n### System / License\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_keySecondsUntilExpire` | `s` | per ironport_key_description, ironport_key_is_perpetual | Seconds until the valid Feature Key expires |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_memoryAvailabilityStatus` | `{status}` | device | Current status of memory availability |\n| `snmp.device_prof_memory_usage` | `%` | device | This object provides a general idea of how much memory is being consumed by the appliance software |\n\n### System / Resource\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_openFilesOrSockets` | `{fd}` | device | This object notes how many files or sockets are open on the appliance. In normal operating conditions, the measurement is taken at\u2026 |\n| `snmp.device_prof_ironport_resourceConservationReason` | `{status}` | device | Reason the appliance is conserving resources |\n\n### System / Security\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_fipsMode` | `{status}` | device | Indicates whether the appliance is operating in FIPS mode |\n\n### System / Service\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_updateFailures` | `{attempt}/s` | per ironport_update_service_name | The number of failed attempts that have occurred when updating a service. |\n| `snmp.device_prof_ironport_updates` | `{attempt}/s` | per ironport_update_service_name | The number of successful attempts that have occurred when updating a service |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_cacheDuration` | `s` | device | The proxy up time |\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Web / Cache\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_cacheDeniedNow` | `{denial}` | device | Cache denial throughput time in the last minute |\n| `snmp.device_prof_ironport_cacheDeniedRespTimeNow` | `ms` | device | Cache denial response time in the last minute |\n| `snmp.device_prof_ironport_cacheErrRespTimeNow` | `ms` | device | Cache error response time in the last minute |\n| `snmp.device_prof_ironport_cacheErrsNow` | `{error}` | device | Cache error throughput time in the last minute |\n| `snmp.device_prof_ironport_cacheHitRespTimeNow` | `ms` | device | Cache hit response time in the last minute |\n| `snmp.device_prof_ironport_cacheHitsNow` | `{hit}` | device | Hit throughput in the last minute |\n| `snmp.device_prof_ironport_cacheMeanByteHitRatio` | `%` | device | The HTTP byte hit ratio |\n| `snmp.device_prof_ironport_cacheMeanHitRatio` | `%` | device | The HTTP hit ratio |\n| `snmp.device_prof_ironport_cacheMissRespTimeNow` | `ms` | device | Cache miss response time in the last minute |\n| `snmp.device_prof_ironport_cacheMissesNow` | `{miss}` | device | Miss throughput in the last minute |\n| `snmp.device_prof_ironport_cacheTotalRespTimeNow` | `ms` | device | Cache total response time in the last minute |\n\n### Web / HTTP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_cacheClientAccepts` | `{socket}/s` | device | The total number of sockets accepted from the clients |\n| `snmp.device_prof_ironport_cacheClientErrors` | `{error}/s` | device | The number of HTTP errors caused by client connections. |\n| `snmp.device_prof_ironport_cacheClientIdleConns` | `{connection}` | device | The number of connected but idle persistent client connections |\n| `snmp.device_prof_ironport_cacheClientMaxConns` | `{connection}` | device | The maximum number of simultaneous client connections that will be allowed |\n| `snmp.device_prof_ironport_cacheClientReqDenials` | `{response}/s` | device | The number of responses blocked by access control |\n| `snmp.device_prof_ironport_cacheClientRequests` | `{request}/s` | device | The number of HTTP requests received from clients |\n| `snmp.device_prof_ironport_cacheClientTotalConns` | `{connection}` | device | The current number of active + idle client connections |\n| `snmp.device_prof_ironport_cacheCltReplyErrPct` | `%` | device | The percentage of errors in the HTTP replies to clients |\n| `snmp.device_prof_ironport_cacheMeanHitRespTime` | `ms` | device | The HTTP mean response time of Hits |\n| `snmp.device_prof_ironport_cacheMeanMissRespTime` | `ms` | device | The HTTP mean response time of Misses |\n| `snmp.device_prof_ironport_cacheMeanRespTime` | `ms` | device | The HTTP mean response time |\n| `snmp.device_prof_ironport_cacheServerCloseIdleConns` | `{connection}/s` | device | The number of server connections closed due to idle time limits |\n| `snmp.device_prof_ironport_cacheServerConnsThresh` | `{connection}` | device | The limit on the number of server connections |\n| `snmp.device_prof_ironport_cacheServerErrors` | `{error}/s` | device | The number of HTTP errors while fetching objects |\n| `snmp.device_prof_ironport_cacheServerIdleConns` | `{connection}` | device | The number of connected but idle persistent server connections |\n| `snmp.device_prof_ironport_cacheServerLimitIdleConns` | `{connection}/s` | device | The number of times the number of idle persistent connections hit the count limit and caused a connection to be closed |\n| `snmp.device_prof_ironport_cacheServerRequests` | `{request}/s` | device | The total number of HTTP requests sent to servers |\n| `snmp.device_prof_ironport_cacheServerSockets` | `{socket}` | device | The total number of sockets opened from the servers |\n| `snmp.device_prof_ironport_cacheServerTotalConns` | `{connection}` | device | The current number of active + idle server connections |\n| `snmp.device_prof_ironport_cacheTotalHttpReqs` | `{request}/s` | device | Total number of HTTP requests from clients |\n\n### Web / Throughput\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ironport_cacheThruputNow` | `{request}` | device | Request throughput in the last minute |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_Ironport_Email",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco Legacy WLC",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","legacy","wlc","snmp","wireless lan controller","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco Legacy WLC\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco Legacy WLC (wireless lan controller) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 14 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-legacy-wlc.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco Legacy WLC via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco Legacy WLC profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**38 metrics** in 7 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| Network / Wireless | 12 |\n| System / CPU | 1 |\n| System / Memory | 2 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### Network / Wireless\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_bsnAPAdminStatus` | `{status}` | per ap_mac_address, ap_name, ap_location, ap_ip_address | Admin State of the AP |\n| `snmp.device_prof_bsnAPIfAdminStatus` | `{status}` | per ap_if_slot_id, ap_mac_address, ap_name, ap_location, ap_ip_address | Admin status of the interface |\n| `snmp.device_prof_bsnAPIfLoadChannelUtilization` | `%` | per ap_if_slot_id, ap_mac_address, ap_name, ap_location, ap_ip_address | Channel utilization |\n| `snmp.device_prof_bsnAPIfLoadRxUtilization` | `%` | per ap_if_slot_id, ap_mac_address, ap_name, ap_location, ap_ip_address | Percentage of time the Airespace AP receiver is busy operating on packets |\n| `snmp.device_prof_bsnAPIfLoadTxUtilization` | `%` | per ap_if_slot_id, ap_mac_address, ap_name, ap_location, ap_ip_address | Percentage of time the Airespace AP transmitter is busy operating on packets |\n| `snmp.device_prof_bsnAPIfOperStatus` | `{status}` | per ap_if_slot_id, ap_mac_address, ap_name, ap_location, ap_ip_address | Operational status of the interface |\n| `snmp.device_prof_bsnAPIfPoorSNRClients` | `{client}` | per ap_if_slot_id, ap_mac_address, ap_name, ap_location, ap_ip_address | Number of clients with poor SNR attached to this Airespace AP at the last measurement interval |\n| `snmp.device_prof_bsnAPOperationStatus` | `{status}` | per ap_mac_address, ap_name, ap_location, ap_ip_address | Operation State of the AP |\n| `snmp.device_prof_bsnApIfNoOfUsers` | `{user}` | per ap_if_slot_id, ap_mac_address, ap_name, ap_location, ap_ip_address | Number of users associated with this radio |\n| `snmp.device_prof_bsnDot11EssAdminStatus` | `{status}` | per wlan_index, ssid | Administrative Status of ESS(WLAN) |\n| `snmp.device_prof_bsnDot11EssNumberOfMobileStations` | `{station}` | per wlan_index, ssid | Number of mobile stations currently associated with the WLAN |\n| `snmp.device_prof_bsnDot11EssRowStatus` | `{status}` | per wlan_index, ssid | Row status type for the bsnDot11EssEntry |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | device | Free RAM of the switch |\n| `snmp.device_prof_memory_total` | `By` | device | Total RAM of the switch |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_Legacy_WLC",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco Licensing",link:"",categories:["network-performance-monitoring.licensing"],icon_filename:"cisco.svg"},keywords:["cisco","license","licensing","entitlement","expiry","snmp","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco Licensing\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nTrack license state, entitlements, and expiry on Cisco devices over SNMP with Netdata.\n\nNetdata reads Cisco licensing telemetry (state, usage, and expiry timers) exposed over SNMP and normalizes it into per-device licensing charts and the `snmp:licenses` function.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDetected automatically for Cisco devices that expose licensing telemetry.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_Licensing",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco Load Balancer",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","load","balancer","snmp","server load balancer","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco Load Balancer\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco Load Balancer (server load balancer) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-load-balancer.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco Load Balancer via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco Load Balancer profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**183 metrics** in 21 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 3 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Firewall | 1 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Redundancy | 4 |\n| Hardware / Sensor | 4 |\n| Hardware / StackWise | 4 |\n| Network / Firewall | 1 |\n| Network / IP | 29 |\n| Network / Interface | 32 |\n| Network / LoadBalancer | 35 |\n| Network / RTT | 5 |\n| Network / Routing | 10 |\n| Network / TCP | 13 |\n| Network / UDP | 6 |\n| System / CPU | 6 |\n| System / Memory | 4 |\n| System / Uptime | 1 |\n| System / VirtualSwitch | 1 |\n| Uncategorized | 21 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFRUCurrent` | `A` | per fru_index | Current supplied by the FRU or current required to operate the FRU |\n| `snmp.device_prof_cefcFRUPowerAdminStatus` | `{status}` | per fru_index | Administratively desired FRU power state |\n| `snmp.device_prof_cefcFRUPowerOperStatus` | `{status}` | per fru_index | Operational FRU power state |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonFanState` | `{status}` | per fan_status_index | Current state of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFanTrayOperStatus` | `{status}` | per fru_index, cefc_fan_tray_direction | Operational state of the fan or fan tray |\n\n### Hardware / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwHardwareStatusValue` | `{status}` | per hardware_type, hardware_desc | Current status of the resource |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonSupplyState` | `{status}` | per power_supply_index | Current state of the power supply |\n\n### Hardware / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cRFStatusDuplexMode` | `{status}` | device | Redundancy duplex mode (simplex=no redundancy, duplex=redundant pair) |\n| `snmp.device_prof_cRFStatusLastSwactReasonCode` | `{reason}` | device | Reason code for the last switchover |\n| `snmp.device_prof_cRFStatusPeerUnitState` | `{status}` | device | Current state of the peer redundancy unit |\n| `snmp.device_prof_cRFStatusUnitState` | `{status}` | device | Current state of this redundancy unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonTemperatureState` | `{status}` | per temp_index | Current state of the testpoint |\n| `snmp.device_prof_ciscoEnvMonTemperatureStatusValue` | `Cel` | per temp_index | Current measurement of the testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageState` | `{status}` | per voltage_index | Current state of the voltage testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageStatusValue` | `mV` | per voltage_index | Current measurement of the voltage testpoint |\n\n### Hardware / StackWise\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cswRingRedundant` | `{status}` | device | Whether the stack ring is in a redundant configuration |\n| `snmp.device_prof_cswStackPortOperStatus` | `{status}` | per stack_port_index | State of the stackport |\n| `snmp.device_prof_cswSwitchRole` | `{role}` | per mac_addr, entity_name | Role of a switch in the stack |\n| `snmp.device_prof_cswSwitchState` | `{status}` | per mac_addr, entity_name | Current state of a switch |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwConnectionStatCount` | `1` | per conn_stat_id | Integer that contains the value of the resource statistic. |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cslbxStatsIpChecksumErrorPkts` | `{packet}/s` | per slb_entity_index | Accumulated number of IP packets which have checksum error |\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cieIfResetCount` | `{reset}/s` | per interface | Number of times the interface was internally reset and brought up |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / LoadBalancer\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cslbxStatsAclDenyHCRejects` | `{connection}/s` | per slb_entity_index | Number of connections rejected because the the matching client access list was configured to deny access (64-bit) |\n| `snmp.device_prof_cslbxStatsAclDenyRejects` | `{connection}/s` | per slb_entity_index | Number of connections rejected because the the matching client access list was configured to deny access |\n| `snmp.device_prof_cslbxStatsBadSslFormatRejects` | `{connection}/s` | per slb_entity_index | Number of connections rejected because some invalid or unrecognized SSL format was detected |\n| `snmp.device_prof_cslbxStatsCurrConnections` | `{connection}` | per slb_entity_index | Number of connections currently still open |\n| `snmp.device_prof_cslbxStatsDroppedL4PolicyConns` | `{connection}/s` | per slb_entity_index | Number of connections dropped by virtual servers with only layer 4 configuration |\n| `snmp.device_prof_cslbxStatsDroppedL4PolicyHCConns` | `{connection}/s` | per slb_entity_index | Number of connections dropped by virtual servers with only layer 4 configuration (64-bit) |\n| `snmp.device_prof_cslbxStatsDroppedL7PolicyConns` | `{connection}/s` | per slb_entity_index | Number of connections dropped by virtual servers with some layer 7 policy |\n| `snmp.device_prof_cslbxStatsDroppedL7PolicyHCConns` | `{connection}/s` | per slb_entity_index | Number of connections dropped by virtual servers with some layer 7 configuration |\n| `snmp.device_prof_cslbxStatsDroppedRedirectConns` | `{connection}/s` | per slb_entity_index | Number of connections dropped by HTTP redirect servers |\n| `snmp.device_prof_cslbxStatsFailedConns` | `{connection}/s` | per slb_entity_index | Number of connections that were load balanced to real servers that then failed to respond |\n| `snmp.device_prof_cslbxStatsFtpConns` | `{connection}/s` | per slb_entity_index | Number of connections made to virtual servers with the FTP service |\n| `snmp.device_prof_cslbxStatsHttpRedirectConns` | `{connection}/s` | per slb_entity_index | Number of connections made to HTTP redirect servers |\n| `snmp.device_prof_cslbxStatsL4PolicyConns` | `{connection}/s` | per slb_entity_index | Number of connections made to the virtual servers with only layer 4 configuration |\n| `snmp.device_prof_cslbxStatsL4PolicyHCConns` | `{connection}/s` | per slb_entity_index | Number of connections made to the virtual servers with only layer 4 configuration (64-bit) |\n| `snmp.device_prof_cslbxStatsL7ParserErrorRejects` | `{connection}/s` | per slb_entity_index | Number of connections rejected because an error occurred while parsing the connection data at Layer 7 |\n| `snmp.device_prof_cslbxStatsL7PolicyConns` | `{connection}/s` | per slb_entity_index | Number of connections made to the virtual servers with some layer 7 configuration |\n| `snmp.device_prof_cslbxStatsL7PolicyHCConns` | `{connection}/s` | per slb_entity_index | Number of connections made to the virtual servers with some layer 7 configuration (64-bit) |\n| `snmp.device_prof_cslbxStatsMaxParseLenRejects` | `{connection}/s` | per slb_entity_index | Number of connections rejected because the length of an HTTP request or response header exceeded the maximum L7 parse length confi\u2026 |\n| `snmp.device_prof_cslbxStatsNoActiveServerRejects` | `{connection}/s` | per slb_entity_index | Number of connections rejected because the chosen server farm did not have any active servers |\n| `snmp.device_prof_cslbxStatsNoCfgPolicyHCRejects` | `{connection}/s` | per slb_entity_index | Number of connections rejected because the matching virtual server was not configured with any policy (64-bit) |\n| `snmp.device_prof_cslbxStatsNoCfgPolicyRejects` | `{connection}/s` | per slb_entity_index | Number of connections rejected because the matching virtual server was not configured with any policy |\n| `snmp.device_prof_cslbxStatsNoMatchPolicyHCRejects` | `{connection}/s` | per slb_entity_index | Number of connections rejected because they failed to match any configured policy (64-bit) |\n| `snmp.device_prof_cslbxStatsNoMatchPolicyRejects` | `{connection}/s` | per slb_entity_index | Number of connections rejected because they failed to match any configured policy |\n| `snmp.device_prof_cslbxStatsOutOfMemoryRejects` | `{connection}/s` | per slb_entity_index | Number of connections rejected because the SLB module could not allocate the required memory |\n| `snmp.device_prof_cslbxStatsTimedOutConnections` | `{connection}/s` | per slb_entity_index | Number of connections that were terminated because they were idle longer than the configured idle timeout value |\n| `snmp.device_prof_cslbxStatsVerMismatchHCRejects` | `{connection}/s` | per slb_entity_index | Number of connections rejected because the Layer 7 configuration was changed while Layer 7 parsing was occurring on the connection\u2026 |\n| `snmp.device_prof_cslbxStatsVerMismatchRejects` | `{connection}/s` | per slb_entity_index | Number of connections rejected because the Layer 7 configuration was changed while Layer 7 parsing was occurring on the connection |\n| `snmp.device_prof_slbStatsCreatedConnections` | `{connection}/s` | per slb_entity_index | Number of TCP and UDP connections created since SLB was configured |\n| `snmp.device_prof_slbStatsCreatedHCConnections` | `{connection}/s` | per slb_entity_index | Number of connections created by SLB since it was configured (64-bit) |\n| `snmp.device_prof_slbStatsDestroyedConnections` | `{connection}/s` | per slb_entity_index | Number of TCP and UDP connections destroyed by SLB |\n| `snmp.device_prof_slbStatsDestroyedHCConnections` | `{connection}/s` | per slb_entity_index | Number of TCP and UDP connections destroyed by SLB (64-bit) |\n| `snmp.device_prof_slbStatsEstablishedConnections` | `{connection}/s` | per slb_entity_index | Number of connections established through SLB |\n| `snmp.device_prof_slbStatsEstablishedHCConnections` | `{connection}/s` | per slb_entity_index | Number of connections established through SLB (64-bit) |\n| `snmp.device_prof_slbStatsReassignedConnections` | `{connection}/s` | per slb_entity_index | Number of TCP and UDP connections reassigned from one real server to another |\n| `snmp.device_prof_slbStatsReassignedHCConnections` | `{connection}/s` | per slb_entity_index | Number of TCP and UDP connections reassigned from one real server to another (64-bit) |\n\n### Network / RTT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rttMonCtrlOperConnectionLostOccurred` | `{status}` | per rtt_index | Indicates if a connection lost occurred for the RTT operation |\n| `snmp.device_prof_rttMonCtrlOperOverThresholdOccurred` | `{status}` | per rtt_index | Indicates if the latest RTT operation exceeded its configured threshold value |\n| `snmp.device_prof_rttMonCtrlOperState` | `{status}` | per rtt_index | Used to manage the state of the probe that is implementing conceptual RTT control row. |\n| `snmp.device_prof_rttMonCtrlOperTimeoutOccurred` | `{status}` | per rtt_index | Indicates if a timeout occurred for the RTT operation |\n| `snmp.device_prof_rttMonLatestRttOperSense` | `{status}` | per rtt_index | Sense code for the completion status of the latest RTT operation |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cslbxStatsTcpChecksumErrorPkts` | `{error}/s` | per slb_entity_index | Accumulated number of TCP packets which have checksum error |\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpmCPULoadAvg15min` | `{load_average}` | per cpu_index | CPU load average over the last 15 minutes |\n| `snmp.device_prof_cpmCPULoadAvg1min` | `{load_average}` | per cpu_index | CPU load average over the last 1 minute |\n| `snmp.device_prof_cpmCPULoadAvg5min` | `{load_average}` | per cpu_index | CPU load average over the last 5 minutes |\n| `snmp.device_prof_cpmCPUTotal1minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 1 minute period |\n| `snmp.device_prof_cpmCPUTotal5minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 5 minute period |\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cempMemPoolLowestFree` | `By` | per mem_pool_index | Lowest amount of free memory observed since last clear (watermark) |\n| `snmp.device_prof_ciscoMemoryPoolFree` | `By` | per mem_pool_index | Number of bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolLargestFree` | `By` | per mem_pool_index | Largest number of contiguous bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolUsed` | `By` | per mem_pool_index | Number of bytes from the memory pool currently in use |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / VirtualSwitch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvsChassisUpTime` | `cs` | per chassis_switch_id | Up time for the chassis since last re-initialization |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_Load_Balancer",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco Meraki (Cloud Controller)",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["cisco","meraki","(cloud","controller)","snmp","sd-wan","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco Meraki (Cloud Controller)\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco Meraki (Cloud Controller) (sd-wan) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 2 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **meraki-cloud-controller.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco Meraki (Cloud Controller) via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco Meraki (Cloud Controller) profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**11 metrics** in 4 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Client | 1 |\n| Network / Interface | 8 |\n| System / Device | 1 |\n| System / Uptime | 1 |\n\n### Network / Client\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_devClientCount` | `{client}` | per mac_address, device_name | The number of clients currently associated with the device. |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_devInterfaceRecvBytes` | `bit/s` | per mac_address, interface_index, interface | Traffic received on this interface. |\n| `snmp.device_prof_devInterfaceRecvPkts` | `{packet}/s` | per mac_address, interface_index, interface | The number of packets received on this interface. |\n| `snmp.device_prof_devInterfaceSentBytes` | `bit/s` | per mac_address, interface_index, interface | Traffic sent on this interface. |\n| `snmp.device_prof_devInterfaceSentPkts` | `{packet}/s` | per mac_address, interface_index, interface | The number of packets sent on this interface. |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Device\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_devStatus` | `{status}` | per mac_address, device_name | The status of the device's connection to the Meraki Cloud Controller |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_Meraki_(Cloud_Controller)",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco NCS",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","ncs","snmp","router","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco NCS\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco NCS (router) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-ncs.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco NCS via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco NCS profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**146 metrics** in 20 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 3 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Firewall | 1 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Redundancy | 4 |\n| Hardware / Sensor | 4 |\n| Hardware / StackWise | 4 |\n| Network / Firewall | 1 |\n| Network / IP | 28 |\n| Network / Interface | 32 |\n| Network / RTT | 5 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / CPU | 6 |\n| System / Memory | 4 |\n| System / Uptime | 1 |\n| System / VirtualSwitch | 1 |\n| Uncategorized | 21 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFRUCurrent` | `A` | per fru_index | Current supplied by the FRU or current required to operate the FRU |\n| `snmp.device_prof_cefcFRUPowerAdminStatus` | `{status}` | per fru_index | Administratively desired FRU power state |\n| `snmp.device_prof_cefcFRUPowerOperStatus` | `{status}` | per fru_index | Operational FRU power state |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonFanState` | `{status}` | per fan_status_index | Current state of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFanTrayOperStatus` | `{status}` | per fru_index, cefc_fan_tray_direction | Operational state of the fan or fan tray |\n\n### Hardware / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwHardwareStatusValue` | `{status}` | per hardware_type, hardware_desc | Current status of the resource |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonSupplyState` | `{status}` | per power_supply_index | Current state of the power supply |\n\n### Hardware / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cRFStatusDuplexMode` | `{status}` | device | Redundancy duplex mode (simplex=no redundancy, duplex=redundant pair) |\n| `snmp.device_prof_cRFStatusLastSwactReasonCode` | `{reason}` | device | Reason code for the last switchover |\n| `snmp.device_prof_cRFStatusPeerUnitState` | `{status}` | device | Current state of the peer redundancy unit |\n| `snmp.device_prof_cRFStatusUnitState` | `{status}` | device | Current state of this redundancy unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonTemperatureState` | `{status}` | per temp_index | Current state of the testpoint |\n| `snmp.device_prof_ciscoEnvMonTemperatureStatusValue` | `Cel` | per temp_index | Current measurement of the testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageState` | `{status}` | per voltage_index | Current state of the voltage testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageStatusValue` | `mV` | per voltage_index | Current measurement of the voltage testpoint |\n\n### Hardware / StackWise\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cswRingRedundant` | `{status}` | device | Whether the stack ring is in a redundant configuration |\n| `snmp.device_prof_cswStackPortOperStatus` | `{status}` | per stack_port_index | State of the stackport |\n| `snmp.device_prof_cswSwitchRole` | `{role}` | per mac_addr, entity_name | Role of a switch in the stack |\n| `snmp.device_prof_cswSwitchState` | `{status}` | per mac_addr, entity_name | Current state of a switch |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwConnectionStatCount` | `1` | per conn_stat_id | Integer that contains the value of the resource statistic. |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cieIfResetCount` | `{reset}/s` | per interface | Number of times the interface was internally reset and brought up |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / RTT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rttMonCtrlOperConnectionLostOccurred` | `{status}` | per rtt_index | Indicates if a connection lost occurred for the RTT operation |\n| `snmp.device_prof_rttMonCtrlOperOverThresholdOccurred` | `{status}` | per rtt_index | Indicates if the latest RTT operation exceeded its configured threshold value |\n| `snmp.device_prof_rttMonCtrlOperState` | `{status}` | per rtt_index | Used to manage the state of the probe that is implementing conceptual RTT control row. |\n| `snmp.device_prof_rttMonCtrlOperTimeoutOccurred` | `{status}` | per rtt_index | Indicates if a timeout occurred for the RTT operation |\n| `snmp.device_prof_rttMonLatestRttOperSense` | `{status}` | per rtt_index | Sense code for the completion status of the latest RTT operation |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpmCPULoadAvg15min` | `{load_average}` | per cpu_index | CPU load average over the last 15 minutes |\n| `snmp.device_prof_cpmCPULoadAvg1min` | `{load_average}` | per cpu_index | CPU load average over the last 1 minute |\n| `snmp.device_prof_cpmCPULoadAvg5min` | `{load_average}` | per cpu_index | CPU load average over the last 5 minutes |\n| `snmp.device_prof_cpmCPUTotal1minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 1 minute period |\n| `snmp.device_prof_cpmCPUTotal5minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 5 minute period |\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cempMemPoolLowestFree` | `By` | per mem_pool_index | Lowest amount of free memory observed since last clear (watermark) |\n| `snmp.device_prof_ciscoMemoryPoolFree` | `By` | per mem_pool_index | Number of bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolLargestFree` | `By` | per mem_pool_index | Largest number of contiguous bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolUsed` | `By` | per mem_pool_index | Number of bytes from the memory pool currently in use |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / VirtualSwitch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvsChassisUpTime` | `cs` | per chassis_switch_id | Up time for the chassis since last re-initialization |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_NCS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco Nexus",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","nexus","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco Nexus\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco Nexus (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 7 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-nexus.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco Nexus via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco Nexus profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**184 metrics** in 27 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 3 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Firewall | 1 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Redundancy | 4 |\n| Hardware / Sensor | 5 |\n| Hardware / StackWise | 4 |\n| Network / BFD | 3 |\n| Network / Firewall | 1 |\n| Network / HSRP | 2 |\n| Network / IP | 28 |\n| Network / Interface | 32 |\n| Network / OTV | 4 |\n| Network / RTT | 5 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| Network / VPC | 10 |\n| Network / VXLAN | 4 |\n| System / CPU | 6 |\n| System / Memory | 6 |\n| System / NTP | 6 |\n| System / NX-OS | 6 |\n| System / Uptime | 1 |\n| System / VirtualSwitch | 1 |\n| Uncategorized | 21 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFRUCurrent` | `A` | per fru_index | Current supplied by the FRU or current required to operate the FRU |\n| `snmp.device_prof_cefcFRUPowerAdminStatus` | `{status}` | per fru_index | Administratively desired FRU power state |\n| `snmp.device_prof_cefcFRUPowerOperStatus` | `{status}` | per fru_index | Operational FRU power state |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonFanState` | `{status}` | per fan_status_index | Current state of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFanTrayOperStatus` | `{status}` | per fru_index, cefc_fan_tray_direction | Operational state of the fan or fan tray |\n\n### Hardware / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwHardwareStatusValue` | `{status}` | per hardware_type, hardware_desc | Current status of the resource |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonSupplyState` | `{status}` | per power_supply_index | Current state of the power supply |\n\n### Hardware / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cRFStatusDuplexMode` | `{status}` | device | Redundancy duplex mode (simplex=no redundancy, duplex=redundant pair) |\n| `snmp.device_prof_cRFStatusLastSwactReasonCode` | `{reason}` | device | Reason code for the last switchover |\n| `snmp.device_prof_cRFStatusPeerUnitState` | `{status}` | device | Current state of the peer redundancy unit |\n| `snmp.device_prof_cRFStatusUnitState` | `{status}` | device | Current state of this redundancy unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonTemperatureState` | `{status}` | per temp_index | Current state of the testpoint |\n| `snmp.device_prof_ciscoEnvMonTemperatureStatusValue` | `Cel` | per temp_index | Current measurement of the testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageState` | `{status}` | per voltage_index | Current state of the voltage testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageStatusValue` | `mV` | per voltage_index | Current measurement of the voltage testpoint |\n| `snmp.device_prof_entSensorValue` | `1` | per sensor_index, rm:sensor_type, rm:sensor_scale, rm:sensor_precision | Most recent measurement obtained by the agent for this sensor |\n\n### Hardware / StackWise\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cswRingRedundant` | `{status}` | device | Whether the stack ring is in a redundant configuration |\n| `snmp.device_prof_cswStackPortOperStatus` | `{status}` | per stack_port_index | State of the stackport |\n| `snmp.device_prof_cswSwitchRole` | `{role}` | per mac_addr, entity_name | Role of a switch in the stack |\n| `snmp.device_prof_cswSwitchState` | `{status}` | per mac_addr, entity_name | Current state of a switch |\n\n### Network / BFD\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoBfdSessDetectMult` | `1` | per bfd_session_index | BFD detection multiplier (timeout = interval x multiplier) |\n| `snmp.device_prof_ciscoBfdSessDiag` | `{status}` | per bfd_session_index | BFD session diagnostic code (reason for last state change) |\n| `snmp.device_prof_ciscoBfdSessState` | `{status}` | per bfd_session_index | BFD session operational state |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwConnectionStatCount` | `1` | per conn_stat_id | Integer that contains the value of the resource statistic. |\n\n### Network / HSRP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cHsrpGrpPriority` | `{priority}` | per interface, hsrp_group | HSRP group priority (higher wins active role election) |\n| `snmp.device_prof_cHsrpGrpStandbyState` | `{status}` | per interface, hsrp_group | Current HSRP state machine state for this group |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cieIfResetCount` | `{reset}/s` | per interface | Number of times the interface was internally reset and brought up |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / OTV\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cotvAdjacentDevState` | `{status}` | per otv_overlay, otv_adjacent_dev_addr | State of the OTV adjacency with this remote device |\n| `snmp.device_prof_cotvAdjacentDevUpTime` | `s` | per otv_overlay, otv_adjacent_dev_addr | Time this OTV adjacency has been up |\n| `snmp.device_prof_cotvOverlayVpnDownReason` | `{reason}` | per otv_overlay | Reason the OTV overlay is down |\n| `snmp.device_prof_cotvOverlayVpnState` | `{status}` | per otv_overlay | Operational state of the OTV overlay VPN |\n\n### Network / RTT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rttMonCtrlOperConnectionLostOccurred` | `{status}` | per rtt_index | Indicates if a connection lost occurred for the RTT operation |\n| `snmp.device_prof_rttMonCtrlOperOverThresholdOccurred` | `{status}` | per rtt_index | Indicates if the latest RTT operation exceeded its configured threshold value |\n| `snmp.device_prof_rttMonCtrlOperState` | `{status}` | per rtt_index | Used to manage the state of the probe that is implementing conceptual RTT control row. |\n| `snmp.device_prof_rttMonCtrlOperTimeoutOccurred` | `{status}` | per rtt_index | Indicates if a timeout occurred for the RTT operation |\n| `snmp.device_prof_rttMonLatestRttOperSense` | `{status}` | per rtt_index | Sense code for the completion status of the latest RTT operation |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### Network / VPC\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cVpcDualActiveDetectionStatus` | `{status}` | per vpc_domain_id | Whether a dual-active (split-brain) condition is detected |\n| `snmp.device_prof_cVpcPeerKeepAliveMsgRcvrStatus` | `{status}` | per vpc_domain_id | Status of the most recent peer-keepalive message reception |\n| `snmp.device_prof_cVpcPeerKeepAliveMsgSendStatus` | `{status}` | per vpc_domain_id | Status of the most recent peer-keepalive message transmission |\n| `snmp.device_prof_cVpcPeerKeepAliveStatus` | `{status}` | per vpc_domain_id | VPC peer-keepalive link operational status |\n| `snmp.device_prof_cVpcRoleStatus` | `{status}` | per vpc_domain_id | VPC role status of this device in the domain |\n| `snmp.device_prof_cVpcStatsPeerKeepAliveMsgsRcved` | `{message}/s` | per vpc_domain_id | Number of peer-keepalive messages received from peer |\n| `snmp.device_prof_cVpcStatsPeerKeepAliveMsgsSent` | `{message}/s` | per vpc_domain_id | Number of peer-keepalive messages sent |\n| `snmp.device_prof_cVpcStatsPeerStatusChangeCount` | `{change}/s` | per vpc_domain_id | Number of times the peer status changed (peer flaps) |\n| `snmp.device_prof_cVpcStatusHostLinkConsistencyStatus` | `{status}` | per vpc_domain_id, vpc_id | Configuration consistency check result for this vPC member |\n| `snmp.device_prof_cVpcStatusHostLinkStatus` | `{status}` | per vpc_domain_id, vpc_id | Current status of this vPC member link |\n\n### Network / VXLAN\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cnvoNvoEncapType` | `{type}` | per nve_instance | Encapsulation type for the NVE instance |\n| `snmp.device_prof_cnvoPeerLearningSourceType` | `{type}` | per nve_instance, nve_peer_addr | How this NVE peer was learned |\n| `snmp.device_prof_cnvoVNetReplication` | `{mode}` | per nve_instance, vni | Replication mode of the VNI |\n| `snmp.device_prof_cnvoVNetVniType` | `{type}` | per nve_instance, vni | Type of the virtual network identifier |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpmCPULoadAvg15min` | `{load_average}` | per cpu_index | CPU load average over the last 15 minutes |\n| `snmp.device_prof_cpmCPULoadAvg1min` | `{load_average}` | per cpu_index | CPU load average over the last 1 minute |\n| `snmp.device_prof_cpmCPULoadAvg5min` | `{load_average}` | per cpu_index | CPU load average over the last 5 minutes |\n| `snmp.device_prof_cpmCPUTotal1minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 1 minute period |\n| `snmp.device_prof_cpmCPUTotal5minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 5 minute period |\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cempMemPoolLowestFree` | `By` | per mem_pool_index | Lowest amount of free memory observed since last clear (watermark) |\n| `snmp.device_prof_ciscoMemoryPoolFree` | `By` | per mem_pool_index | Number of bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolLargestFree` | `By` | per mem_pool_index | Largest number of contiguous bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolUsed` | `By` | per mem_pool_index | Number of bytes from the memory pool currently in use |\n| `snmp.device_prof_memory_free` | `By` | per mem_index | Number of bytes from the memory pool that are currently unused on the physical entity |\n| `snmp.device_prof_memory_used` | `By` | per mem_index | Number of bytes from the memory pool that are currently in use by applications on the physical entity |\n\n### System / NTP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cntpPeersLeap` | `{status}` | per ntp_peer_assoc_id | Leap indicator advertised by the NTP peer |\n| `snmp.device_prof_cntpPeersReach` | `1` | per ntp_peer_assoc_id | Reachability shift register (0-255, 8 bits = 8 recent polls, 255 = all recent polls succeeded) |\n| `snmp.device_prof_cntpPeersStratum` | `{stratum}` | per ntp_peer_assoc_id | Stratum level of the NTP peer |\n| `snmp.device_prof_cntpSysLeap` | `{status}` | device | NTP leap second indicator (alarm = clock not synchronized) |\n| `snmp.device_prof_cntpSysSrvStatus` | `{status}` | device | NTP service operational status |\n| `snmp.device_prof_cntpSysStratum` | `{stratum}` | device | NTP stratum level of the local clock (1=primary, 16=unsynchronized) |\n\n### System / NX-OS\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfcFeatureCtrlOpStatus2` | `{status}` | per feature_index, feature_instance, feature_name | Current operational status of the NX-OS feature |\n| `snmp.device_prof_cseSysCPUUtilization` | `%` | device | Average CPU utilization on the active supervisor |\n| `snmp.device_prof_cseSysConsolePortStatus` | `{status}` | device | Console port connection status |\n| `snmp.device_prof_cseSysFIPSModeActivation` | `{status}` | device | FIPS 140-2 cryptographic mode activation state |\n| `snmp.device_prof_cseSysMemoryUtilization` | `%` | device | Average memory utilization on the active supervisor |\n| `snmp.device_prof_cseSysUpTime` | `s` | device | Elapsed time since the system last rebooted (survives supervisor switchover) |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / VirtualSwitch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvsChassisUpTime` | `cs` | per chassis_switch_id | Up time for the chassis since last re-initialization |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_Nexus",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco SB",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","sb","snmp","smb","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco SB\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco SB (smb) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 2 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-sb.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco SB via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco SB profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**27 metrics** in 4 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Uptime | 1 |\n| Uncategorized | 21 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_SB",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco UCS",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","ucs","snmp","ucs","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco UCS\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco UCS (ucs) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 4 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-ucs.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco UCS via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco UCS profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**74 metrics** in 12 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Board | 11 |\n| Hardware / CPU | 9 |\n| Hardware / Fan | 5 |\n| Hardware / Memory | 7 |\n| Hardware / PowerSupply | 5 |\n| Network / Interface | 4 |\n| RackUnit / CPU | 3 |\n| RackUnit / Memory | 2 |\n| RackUnit / Status | 9 |\n| RackUnit / Temperature | 4 |\n| Storage / FlexFlash | 14 |\n| System / Uptime | 1 |\n\n### Hardware / Board\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cucsComputeBoardOperPower` | `{status}` | per cucs_compute_board_dn, cucs_compute_board_model, cucs_compute_board_serial, cucs_compute_board_vendor | Operational power state of the board |\n| `snmp.device_prof_cucsComputeBoardOperState` | `{status}` | per cucs_compute_board_dn, cucs_compute_board_model, cucs_compute_board_serial, cucs_compute_board_vendor | Operational state of the board |\n| `snmp.device_prof_cucsComputeBoardOperability` | `{status}` | per cucs_compute_board_dn, cucs_compute_board_model, cucs_compute_board_serial, cucs_compute_board_vendor | Operability state of the board |\n| `snmp.device_prof_cucsComputeBoardPerf` | `{status}` | per cucs_compute_board_dn, cucs_compute_board_model, cucs_compute_board_serial, cucs_compute_board_vendor | Performance state of the board |\n| `snmp.device_prof_cucsComputeBoardPower` | `{status}` | per cucs_compute_board_dn, cucs_compute_board_model, cucs_compute_board_serial, cucs_compute_board_vendor | Power state of the board |\n| `snmp.device_prof_cucsComputeBoardPresence` | `{status}` | per cucs_compute_board_dn, cucs_compute_board_model, cucs_compute_board_serial, cucs_compute_board_vendor | Presence state of the board |\n| `snmp.device_prof_cucsComputeBoardThermal` | `{status}` | per cucs_compute_board_dn, cucs_compute_board_model, cucs_compute_board_serial, cucs_compute_board_vendor | Thermal state of the board |\n| `snmp.device_prof_cucsComputeBoardVoltage` | `{status}` | per cucs_compute_board_dn, cucs_compute_board_model, cucs_compute_board_serial, cucs_compute_board_vendor | Voltage state of the board |\n| `snmp.device_prof_cucsComputeMbPowerStatsConsumedPower` | `W` | per cucs_compute_mb_power_stats_dn | Consumed power |\n| `snmp.device_prof_cucsComputeMbPowerStatsInputCurrent` | `A` | per cucs_compute_mb_power_stats_dn | Input current |\n| `snmp.device_prof_cucsComputeMbPowerStatsInputVoltage` | `V` | per cucs_compute_mb_power_stats_dn | Input voltage |\n\n### Hardware / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cucsProcessorEnvStatsTemperature` | `Cel` | per cucs_processor_env_stats_dn | Temperature |\n| `snmp.device_prof_cucsProcessorUnitCores` | `{core}` | per cucs_processor_unit_dn, cucs_processor_unit_arch, cucs_processor_unit_model, cucs_processor_unit_vendor | Number of cores |\n| `snmp.device_prof_cucsProcessorUnitCoresEnabled` | `{core}` | per cucs_processor_unit_dn, cucs_processor_unit_arch, cucs_processor_unit_model, cucs_processor_unit_vendor | Number of cores enabled |\n| `snmp.device_prof_cucsProcessorUnitOperState` | `{status}` | per cucs_processor_unit_dn, cucs_processor_unit_arch, cucs_processor_unit_model, cucs_processor_unit_vendor | Operational state of the processor unit |\n| `snmp.device_prof_cucsProcessorUnitOperability` | `{status}` | per cucs_processor_unit_dn, cucs_processor_unit_arch, cucs_processor_unit_model, cucs_processor_unit_vendor | Operability state of the processor unit |\n| `snmp.device_prof_cucsProcessorUnitPerf` | `{status}` | per cucs_processor_unit_dn, cucs_processor_unit_arch, cucs_processor_unit_model, cucs_processor_unit_vendor | Performance state of the processor unit |\n| `snmp.device_prof_cucsProcessorUnitPower` | `{status}` | per cucs_processor_unit_dn, cucs_processor_unit_arch, cucs_processor_unit_model, cucs_processor_unit_vendor | Power state of the processor unit |\n| `snmp.device_prof_cucsProcessorUnitPresence` | `{status}` | per cucs_processor_unit_dn, cucs_processor_unit_arch, cucs_processor_unit_model, cucs_processor_unit_vendor | Presence state of the processor unit |\n| `snmp.device_prof_cucsProcessorUnitThreads` | `{thread}` | per cucs_processor_unit_dn, cucs_processor_unit_arch, cucs_processor_unit_model, cucs_processor_unit_vendor | Number of threads |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cucsEquipmentFanOperState` | `{status}` | per cucs_equipment_fan_dn, cucs_equipment_fan_int_type | Operational state of the fan |\n| `snmp.device_prof_cucsEquipmentFanOperability` | `{status}` | per cucs_equipment_fan_dn, cucs_equipment_fan_int_type | Operability state of the fan |\n| `snmp.device_prof_cucsEquipmentFanPerf` | `{status}` | per cucs_equipment_fan_dn, cucs_equipment_fan_int_type | Performance state of the fan |\n| `snmp.device_prof_cucsEquipmentFanPower` | `{status}` | per cucs_equipment_fan_dn, cucs_equipment_fan_int_type | Power state of the fan |\n| `snmp.device_prof_cucsEquipmentFanPresence` | `{status}` | per cucs_equipment_fan_dn, cucs_equipment_fan_int_type | Presence state of the fan |\n\n### Hardware / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cucsMemoryUnitCapacity` | `By` | per cucs_memory_unit_dn, cucs_memory_unit_location, cucs_memory_unit_type | Capacity of the memory unit |\n| `snmp.device_prof_cucsMemoryUnitEnvStatsTemperature` | `Cel` | per cucs_memory_unit_env_stats_dn | Temperature |\n| `snmp.device_prof_cucsMemoryUnitOperState` | `{status}` | per cucs_memory_unit_dn, cucs_memory_unit_location, cucs_memory_unit_type | Operational state of the memory unit |\n| `snmp.device_prof_cucsMemoryUnitOperability` | `{status}` | per cucs_memory_unit_dn, cucs_memory_unit_location, cucs_memory_unit_type | Operability state of the memory unit |\n| `snmp.device_prof_cucsMemoryUnitPerf` | `{status}` | per cucs_memory_unit_dn, cucs_memory_unit_location, cucs_memory_unit_type | Performance state of the memory unit |\n| `snmp.device_prof_cucsMemoryUnitPower` | `{status}` | per cucs_memory_unit_dn, cucs_memory_unit_location, cucs_memory_unit_type | Power state of the memory unit |\n| `snmp.device_prof_cucsMemoryUnitPresence` | `{status}` | per cucs_memory_unit_dn, cucs_memory_unit_location, cucs_memory_unit_type | Presence state of the memory unit |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cucsEquipmentPsuOperState` | `{status}` | per cucs_equipment_psu_dn, cucs_equipment_psu_model, cucs_equipment_psu_revision, cucs_equipment_psu_serial | Operational state of the psu |\n| `snmp.device_prof_cucsEquipmentPsuOperability` | `{status}` | per cucs_equipment_psu_dn, cucs_equipment_psu_model, cucs_equipment_psu_revision, cucs_equipment_psu_serial | Operability state of the psu |\n| `snmp.device_prof_cucsEquipmentPsuPerf` | `{status}` | per cucs_equipment_psu_dn, cucs_equipment_psu_model, cucs_equipment_psu_revision, cucs_equipment_psu_serial | Performance state of the psu |\n| `snmp.device_prof_cucsEquipmentPsuPower` | `{status}` | per cucs_equipment_psu_dn, cucs_equipment_psu_model, cucs_equipment_psu_revision, cucs_equipment_psu_serial | Power state of the psu |\n| `snmp.device_prof_cucsEquipmentPsuPresence` | `{status}` | per cucs_equipment_psu_dn, cucs_equipment_psu_model, cucs_equipment_psu_revision, cucs_equipment_psu_serial | Presence state of the psu |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### RackUnit / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cucsComputeRackUnitNumOfCores` | `{core}` | per cucs_compute_rack_unit_dn, cucs_compute_rack_unit_model, cucs_compute_rack_unit_name, cucs_compute_rack_unit_serial, cucs_compute_rack_unit_uuid, cucs_compute_rack_unit_vendor | Number of cores |\n| `snmp.device_prof_cucsComputeRackUnitNumOfCpus` | `{cpu}` | per cucs_compute_rack_unit_dn, cucs_compute_rack_unit_model, cucs_compute_rack_unit_name, cucs_compute_rack_unit_serial, cucs_compute_rack_unit_uuid, cucs_compute_rack_unit_vendor | Number of cpus |\n| `snmp.device_prof_cucsComputeRackUnitNumOfThreads` | `{thread}` | per cucs_compute_rack_unit_dn, cucs_compute_rack_unit_model, cucs_compute_rack_unit_name, cucs_compute_rack_unit_serial, cucs_compute_rack_unit_uuid, cucs_compute_rack_unit_vendor | Number of threads |\n\n### RackUnit / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cucsComputeRackUnitAvailableMemory` | `By` | per cucs_compute_rack_unit_dn, cucs_compute_rack_unit_model, cucs_compute_rack_unit_name, cucs_compute_rack_unit_serial, cucs_compute_rack_unit_uuid, cucs_compute_rack_unit_vendor | Rack unit available memory |\n| `snmp.device_prof_cucsComputeRackUnitTotalMemory` | `By` | per cucs_compute_rack_unit_dn, cucs_compute_rack_unit_model, cucs_compute_rack_unit_name, cucs_compute_rack_unit_serial, cucs_compute_rack_unit_uuid, cucs_compute_rack_unit_vendor | Rack Unit total memory |\n\n### RackUnit / Status\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cucsComputeRackUnitAdminPower` | `{status}` | per cucs_compute_rack_unit_dn, cucs_compute_rack_unit_model, cucs_compute_rack_unit_name, cucs_compute_rack_unit_serial, cucs_compute_rack_unit_uuid, cucs_compute_rack_unit_vendor | Admin power state of the rack unit |\n| `snmp.device_prof_cucsComputeRackUnitAdminState` | `{status}` | per cucs_compute_rack_unit_dn, cucs_compute_rack_unit_model, cucs_compute_rack_unit_name, cucs_compute_rack_unit_serial, cucs_compute_rack_unit_uuid, cucs_compute_rack_unit_vendor | Admin state of the rack unit |\n| `snmp.device_prof_cucsComputeRackUnitAssociation` | `{status}` | per cucs_compute_rack_unit_dn, cucs_compute_rack_unit_model, cucs_compute_rack_unit_name, cucs_compute_rack_unit_serial, cucs_compute_rack_unit_uuid, cucs_compute_rack_unit_vendor | Association state of the rack unit |\n| `snmp.device_prof_cucsComputeRackUnitAvailability` | `{status}` | per cucs_compute_rack_unit_dn, cucs_compute_rack_unit_model, cucs_compute_rack_unit_name, cucs_compute_rack_unit_serial, cucs_compute_rack_unit_uuid, cucs_compute_rack_unit_vendor | Availability state of the rack unit |\n| `snmp.device_prof_cucsComputeRackUnitCheckPoint` | `{status}` | per cucs_compute_rack_unit_dn, cucs_compute_rack_unit_model, cucs_compute_rack_unit_name, cucs_compute_rack_unit_serial, cucs_compute_rack_unit_uuid, cucs_compute_rack_unit_vendor | Checkpoint state of the rack unit |\n| `snmp.device_prof_cucsComputeRackUnitOperPower` | `{status}` | per cucs_compute_rack_unit_dn, cucs_compute_rack_unit_model, cucs_compute_rack_unit_name, cucs_compute_rack_unit_serial, cucs_compute_rack_unit_uuid, cucs_compute_rack_unit_vendor | Operational power state of the rack unit |\n| `snmp.device_prof_cucsComputeRackUnitOperState` | `{status}` | per cucs_compute_rack_unit_dn, cucs_compute_rack_unit_model, cucs_compute_rack_unit_name, cucs_compute_rack_unit_serial, cucs_compute_rack_unit_uuid, cucs_compute_rack_unit_vendor | Operational state of the rack unit |\n| `snmp.device_prof_cucsComputeRackUnitOperability` | `{status}` | per cucs_compute_rack_unit_dn, cucs_compute_rack_unit_model, cucs_compute_rack_unit_name, cucs_compute_rack_unit_serial, cucs_compute_rack_unit_uuid, cucs_compute_rack_unit_vendor | Operability state of the rack unit |\n| `snmp.device_prof_cucsComputeRackUnitPresence` | `{status}` | per cucs_compute_rack_unit_dn, cucs_compute_rack_unit_model, cucs_compute_rack_unit_name, cucs_compute_rack_unit_serial, cucs_compute_rack_unit_uuid, cucs_compute_rack_unit_vendor | Presence state of the rack unit |\n\n### RackUnit / Temperature\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cucsComputeRackUnitMbTempStatsAmbientTemp` | `Cel` | per cucs_compute_rack_unit_mb_temp_stats_dn | Ambient temperature |\n| `snmp.device_prof_cucsComputeRackUnitMbTempStatsFrontTemp` | `Cel` | per cucs_compute_rack_unit_mb_temp_stats_dn | Front temperature |\n| `snmp.device_prof_cucsComputeRackUnitMbTempStatsIoh1Temp` | `Cel` | per cucs_compute_rack_unit_mb_temp_stats_dn | Ioh1 temperature |\n| `snmp.device_prof_cucsComputeRackUnitMbTempStatsRearTemp` | `Cel` | per cucs_compute_rack_unit_mb_temp_stats_dn | Rear temperature |\n\n### Storage / FlexFlash\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cucsStorageFlexFlashCardCardHealth` | `{status}` | per cucs_storage_flex_flash_card_dn, cucs_storage_flex_flash_card_card_type, cucs_storage_flex_flash_card_revision, cucs_storage_flex_flash_card_serial, cucs_storage_flex_flash_card_connection_protocol | Health state of the flex flash card |\n| `snmp.device_prof_cucsStorageFlexFlashCardCardMode` | `{status}` | per cucs_storage_flex_flash_card_dn, cucs_storage_flex_flash_card_card_type, cucs_storage_flex_flash_card_revision, cucs_storage_flex_flash_card_serial, cucs_storage_flex_flash_card_connection_protocol | Mode of the flex flash card |\n| `snmp.device_prof_cucsStorageFlexFlashCardCardState` | `{status}` | per cucs_storage_flex_flash_card_dn, cucs_storage_flex_flash_card_card_type, cucs_storage_flex_flash_card_revision, cucs_storage_flex_flash_card_serial, cucs_storage_flex_flash_card_connection_protocol | State of the flex flash card |\n| `snmp.device_prof_cucsStorageFlexFlashCardCardSync` | `{status}` | per cucs_storage_flex_flash_card_dn, cucs_storage_flex_flash_card_card_type, cucs_storage_flex_flash_card_revision, cucs_storage_flex_flash_card_serial, cucs_storage_flex_flash_card_connection_protocol | Sync state of the flex flash card |\n| `snmp.device_prof_cucsStorageFlexFlashCardDrivesEnabled` | `{drive}` | per cucs_storage_flex_flash_card_dn, cucs_storage_flex_flash_card_card_type, cucs_storage_flex_flash_card_revision, cucs_storage_flex_flash_card_serial, cucs_storage_flex_flash_card_connection_protocol | Number of drives enabled |\n| `snmp.device_prof_cucsStorageFlexFlashCardOperability` | `{status}` | per cucs_storage_flex_flash_card_dn, cucs_storage_flex_flash_card_card_type, cucs_storage_flex_flash_card_revision, cucs_storage_flex_flash_card_serial, cucs_storage_flex_flash_card_connection_protocol | Operability state of the flex flash card |\n| `snmp.device_prof_cucsStorageFlexFlashCardPresence` | `{status}` | per cucs_storage_flex_flash_card_dn, cucs_storage_flex_flash_card_card_type, cucs_storage_flex_flash_card_revision, cucs_storage_flex_flash_card_serial, cucs_storage_flex_flash_card_connection_protocol | Presence state of the flex flash card |\n| `snmp.device_prof_cucsStorageFlexFlashCardReadIOErrorCount` | `{error}/s` | per cucs_storage_flex_flash_card_dn, cucs_storage_flex_flash_card_card_type, cucs_storage_flex_flash_card_revision, cucs_storage_flex_flash_card_serial, cucs_storage_flex_flash_card_connection_protocol | Read io error count |\n| `snmp.device_prof_cucsStorageFlexFlashCardSize` | `By` | per cucs_storage_flex_flash_card_dn, cucs_storage_flex_flash_card_card_type, cucs_storage_flex_flash_card_revision, cucs_storage_flex_flash_card_serial, cucs_storage_flex_flash_card_connection_protocol | Size of the flex flash card |\n| `snmp.device_prof_cucsStorageFlexFlashCardWriteIOErrorCount` | `{error}/s` | per cucs_storage_flex_flash_card_dn, cucs_storage_flex_flash_card_card_type, cucs_storage_flex_flash_card_revision, cucs_storage_flex_flash_card_serial, cucs_storage_flex_flash_card_connection_protocol | Write io error count |\n| `snmp.device_prof_cucsStorageFlexFlashDriveOperability` | `{status}` | per cucs_storage_flex_flash_drive_dn, cucs_storage_flex_flash_drive_model, cucs_storage_flex_flash_drive_name, cucs_storage_flex_flash_drive_visible, cucs_storage_flex_flash_drive_removable, cucs_storage_flex_flash_drive_rw_type, cucs_storage_flex_flash_drive_state, cucs_storage_flex_flash_drive_connection_protocol, cucs_storage_flex_flash_drive_type | Operability state of the flex flash drive |\n| `snmp.device_prof_cucsStorageFlexFlashDriveOperationState` | `{status}` | per cucs_storage_flex_flash_drive_dn, cucs_storage_flex_flash_drive_model, cucs_storage_flex_flash_drive_name, cucs_storage_flex_flash_drive_visible, cucs_storage_flex_flash_drive_removable, cucs_storage_flex_flash_drive_rw_type, cucs_storage_flex_flash_drive_state, cucs_storage_flex_flash_drive_connection_protocol, cucs_storage_flex_flash_drive_type | Operation state of the flex flash drive |\n| `snmp.device_prof_cucsStorageFlexFlashDrivePresence` | `{status}` | per cucs_storage_flex_flash_drive_dn, cucs_storage_flex_flash_drive_model, cucs_storage_flex_flash_drive_name, cucs_storage_flex_flash_drive_visible, cucs_storage_flex_flash_drive_removable, cucs_storage_flex_flash_drive_rw_type, cucs_storage_flex_flash_drive_state, cucs_storage_flex_flash_drive_connection_protocol, cucs_storage_flex_flash_drive_type | Presence state of the flex flash drive |\n| `snmp.device_prof_cucsStorageFlexFlashDriveSize` | `By` | per cucs_storage_flex_flash_drive_dn, cucs_storage_flex_flash_drive_model, cucs_storage_flex_flash_drive_name, cucs_storage_flex_flash_drive_visible, cucs_storage_flex_flash_drive_removable, cucs_storage_flex_flash_drive_rw_type, cucs_storage_flex_flash_drive_state, cucs_storage_flex_flash_drive_connection_protocol, cucs_storage_flex_flash_drive_type | Size of the flex flash drive |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_UCS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco UC Virtual Machine",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","uc","virtual","machine","snmp","server","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco UC Virtual Machine\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco UC Virtual Machine (server) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-uc-virtual-machine.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco UC Virtual Machine via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco UC Virtual Machine profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**173 metrics** in 26 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 3 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Firewall | 1 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Redundancy | 4 |\n| Hardware / Sensor | 4 |\n| Hardware / StackWise | 4 |\n| Network / Firewall | 1 |\n| Network / IP | 28 |\n| Network / Interface | 32 |\n| Network / RTT | 5 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / CPU | 6 |\n| System / Memory | 4 |\n| System / Process | 3 |\n| System / Uptime | 1 |\n| System / VirtualSwitch | 1 |\n| Uncategorized | 21 |\n| Voice / CCA | 4 |\n| Voice / CVP | 8 |\n| Voice / DialPeer | 6 |\n| Voice / Interface | 2 |\n| Voice / UCM | 4 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFRUCurrent` | `A` | per fru_index | Current supplied by the FRU or current required to operate the FRU |\n| `snmp.device_prof_cefcFRUPowerAdminStatus` | `{status}` | per fru_index | Administratively desired FRU power state |\n| `snmp.device_prof_cefcFRUPowerOperStatus` | `{status}` | per fru_index | Operational FRU power state |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonFanState` | `{status}` | per fan_status_index | Current state of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFanTrayOperStatus` | `{status}` | per fru_index, cefc_fan_tray_direction | Operational state of the fan or fan tray |\n\n### Hardware / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwHardwareStatusValue` | `{status}` | per hardware_type, hardware_desc | Current status of the resource |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonSupplyState` | `{status}` | per power_supply_index | Current state of the power supply |\n\n### Hardware / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cRFStatusDuplexMode` | `{status}` | device | Redundancy duplex mode (simplex=no redundancy, duplex=redundant pair) |\n| `snmp.device_prof_cRFStatusLastSwactReasonCode` | `{reason}` | device | Reason code for the last switchover |\n| `snmp.device_prof_cRFStatusPeerUnitState` | `{status}` | device | Current state of the peer redundancy unit |\n| `snmp.device_prof_cRFStatusUnitState` | `{status}` | device | Current state of this redundancy unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonTemperatureState` | `{status}` | per temp_index | Current state of the testpoint |\n| `snmp.device_prof_ciscoEnvMonTemperatureStatusValue` | `Cel` | per temp_index | Current measurement of the testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageState` | `{status}` | per voltage_index | Current state of the voltage testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageStatusValue` | `mV` | per voltage_index | Current measurement of the voltage testpoint |\n\n### Hardware / StackWise\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cswRingRedundant` | `{status}` | device | Whether the stack ring is in a redundant configuration |\n| `snmp.device_prof_cswStackPortOperStatus` | `{status}` | per stack_port_index | State of the stackport |\n| `snmp.device_prof_cswSwitchRole` | `{role}` | per mac_addr, entity_name | Role of a switch in the stack |\n| `snmp.device_prof_cswSwitchState` | `{status}` | per mac_addr, entity_name | Current state of a switch |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwConnectionStatCount` | `1` | per conn_stat_id | Integer that contains the value of the resource statistic. |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cieIfResetCount` | `{reset}/s` | per interface | Number of times the interface was internally reset and brought up |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / RTT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rttMonCtrlOperConnectionLostOccurred` | `{status}` | per rtt_index | Indicates if a connection lost occurred for the RTT operation |\n| `snmp.device_prof_rttMonCtrlOperOverThresholdOccurred` | `{status}` | per rtt_index | Indicates if the latest RTT operation exceeded its configured threshold value |\n| `snmp.device_prof_rttMonCtrlOperState` | `{status}` | per rtt_index | Used to manage the state of the probe that is implementing conceptual RTT control row. |\n| `snmp.device_prof_rttMonCtrlOperTimeoutOccurred` | `{status}` | per rtt_index | Indicates if a timeout occurred for the RTT operation |\n| `snmp.device_prof_rttMonLatestRttOperSense` | `{status}` | per rtt_index | Sense code for the completion status of the latest RTT operation |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpmCPULoadAvg15min` | `{load_average}` | per cpu_index | CPU load average over the last 15 minutes |\n| `snmp.device_prof_cpmCPULoadAvg1min` | `{load_average}` | per cpu_index | CPU load average over the last 1 minute |\n| `snmp.device_prof_cpmCPULoadAvg5min` | `{load_average}` | per cpu_index | CPU load average over the last 5 minutes |\n| `snmp.device_prof_cpmCPUTotal1minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 1 minute period |\n| `snmp.device_prof_cpmCPUTotal5minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 5 minute period |\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cempMemPoolLowestFree` | `By` | per mem_pool_index | Lowest amount of free memory observed since last clear (watermark) |\n| `snmp.device_prof_ciscoMemoryPoolFree` | `By` | per mem_pool_index | Number of bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolLargestFree` | `By` | per mem_pool_index | Largest number of contiguous bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolUsed` | `By` | per mem_pool_index | Number of bytes from the memory pool currently in use |\n\n### System / Process\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSWRunPerfCPU` | `cs` | per run_index | The number of centi-seconds of the total system's CPU resources consumed by this process |\n| `snmp.device_prof_hrSWRunPerfMem` | `By` | per run_index | Total amount of real system memory allocated to this process |\n| `snmp.device_prof_hrSWRunStatus` | `{status}` | per run_index | The status of this running piece of software |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / VirtualSwitch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvsChassisUpTime` | `cs` | per chassis_switch_id | Up time for the chassis since last re-initialization |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n### Voice / CCA\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cccaPimStatus` | `{status}` | per pim_num, pim_name, pim_host | Last known status of the enterprise contact center application peripheral interface manager functional component. |\n| `snmp.device_prof_cccaRouterAgentsLoggedOn` | `{agent}` | per instance_number | Number of contact center agents currently managed by the enterprise contact center application. |\n| `snmp.device_prof_cccaRouterCallsInProgress` | `{call}` | per instance_number | Number of active (voice) calls being managed by the enterprise contact center application. |\n| `snmp.device_prof_cccaRouterCallsInQueue` | `{call}` | per instance_number | Number of calls queued in all network Voice Response Units (VRUs). |\n\n### Voice / CVP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ccvpLicAggMaxPortsInUse` | `{license}` | device | Peak number of simultaneous port licenses used since the start of the system |\n| `snmp.device_prof_ccvpLicRtPortsInUse` | `{license}` | device | Number of port licenses currently in use on the call server |\n| `snmp.device_prof_ccvpSipIntAvgLatency1` | `ms` | per service_index | Average period of time elapsed between the arrival of a CONNECT message from ICM and when the call is actually answered, on the fi\u2026 |\n| `snmp.device_prof_ccvpSipIntAvgLatency2` | `ms` | per service_index | Average period of time between the arrival of a CONNECT message from ICM and when the call is actually answered, on the second and\u2026 |\n| `snmp.device_prof_ccvpSipIntConnectsRcv` | `{connect}/s` | per service_index | Number of CONNECT messages received by the SIP service in order to perform a Customer Voice Portal transfer |\n| `snmp.device_prof_ccvpSipIntNewCalls` | `{invite}/s` | per service_index | Number of SIP INVITE messages received by CVP since system start time |\n| `snmp.device_prof_ccvpSipRtActiveCalls` | `{call}` | per service_index | Number of active calls being handled by the CVP SIP service |\n| `snmp.device_prof_ccvpSipRtTotalCallLegs` | `{call_leg}` | per service_index | Number of SIP call legs being handled by the SIP service |\n\n### Voice / DialPeer\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvCallVolPeerIncomingCalls` | `{call}` | per peer_index | Total number of active calls that has selected the dialpeer as an incoming dialpeer. |\n| `snmp.device_prof_cvCallVolPeerOutgoingCalls` | `{call}` | per peer_index | Total number of active calls that has selected the dialpeer as an outgoing dialpeer. |\n| `snmp.device_prof_dialCtlPeerStatsAcceptCalls` | `{call}/s` | per peer_index | Number of calls from this peer accepted since system startup |\n| `snmp.device_prof_dialCtlPeerStatsFailCalls` | `{call}/s` | per peer_index | Number of failed call attempts to this peer since system startup |\n| `snmp.device_prof_dialCtlPeerStatsRefuseCalls` | `{call}/s` | per peer_index | Number of calls from this peer refused since system startup |\n| `snmp.device_prof_dialCtlPeerStatsSuccessCalls` | `{call}/s` | per peer_index | Number of completed calls to this peer |\n\n### Voice / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvCallVolMediaIncomingCalls` | `{call}/s` | per interface | Total number of inbound active media calls through this IP interface. |\n| `snmp.device_prof_cvCallVolMediaOutgoingCalls` | `{call}/s` | per interface | Total number of outbound active media calls through the IP interface. |\n\n### Voice / UCM\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ccmRegisteredGateways` | `{gateway}` | device | Number of gateways that are registered and actively in communication with the local call manager |\n| `snmp.device_prof_ccmRegisteredPhones` | `{phone}` | device | Number of phones that are registered and actively in communication with the local call manager. |\n| `snmp.device_prof_ccmRejectedPhones` | `{reject}` | device | Number of phones whose registration requests were rejected by the local call manager. |\n| `snmp.device_prof_ccmUnregisteredPhones` | `{phone}` | device | Number of phone that are unregistered or have lost contact with the local call manager. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_UC_Virtual_Machine",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cisco WAN Optimizer",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"cisco.svg"},keywords:["cisco","wan","optimizer","snmp","wave","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cisco WAN Optimizer\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cisco WAN Optimizer (wave) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 10 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cisco-wan-optimizer.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cisco WAN Optimizer via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cisco WAN Optimizer profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**164 metrics** in 23 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / FRU | 3 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Firewall | 1 |\n| Hardware / PowerSupply | 1 |\n| Hardware / Redundancy | 4 |\n| Hardware / Sensor | 4 |\n| Hardware / StackWise | 4 |\n| Network / Firewall | 1 |\n| Network / IP | 28 |\n| Network / Interface | 32 |\n| Network / RTT | 5 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| Network / WAN | 11 |\n| System / Activity | 2 |\n| System / Alarm | 3 |\n| System / CPU | 6 |\n| System / Memory | 4 |\n| System / Uptime | 1 |\n| System / VirtualSwitch | 1 |\n| Uncategorized | 23 |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFRUCurrent` | `A` | per fru_index | Current supplied by the FRU or current required to operate the FRU |\n| `snmp.device_prof_cefcFRUPowerAdminStatus` | `{status}` | per fru_index | Administratively desired FRU power state |\n| `snmp.device_prof_cefcFRUPowerOperStatus` | `{status}` | per fru_index | Operational FRU power state |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonFanState` | `{status}` | per fan_status_index | Current state of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cefcFanTrayOperStatus` | `{status}` | per fru_index, cefc_fan_tray_direction | Operational state of the fan or fan tray |\n\n### Hardware / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwHardwareStatusValue` | `{status}` | per hardware_type, hardware_desc | Current status of the resource |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonSupplyState` | `{status}` | per power_supply_index | Current state of the power supply |\n\n### Hardware / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cRFStatusDuplexMode` | `{status}` | device | Redundancy duplex mode (simplex=no redundancy, duplex=redundant pair) |\n| `snmp.device_prof_cRFStatusLastSwactReasonCode` | `{reason}` | device | Reason code for the last switchover |\n| `snmp.device_prof_cRFStatusPeerUnitState` | `{status}` | device | Current state of the peer redundancy unit |\n| `snmp.device_prof_cRFStatusUnitState` | `{status}` | device | Current state of this redundancy unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ciscoEnvMonTemperatureState` | `{status}` | per temp_index | Current state of the testpoint |\n| `snmp.device_prof_ciscoEnvMonTemperatureStatusValue` | `Cel` | per temp_index | Current measurement of the testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageState` | `{status}` | per voltage_index | Current state of the voltage testpoint |\n| `snmp.device_prof_ciscoEnvMonVoltageStatusValue` | `mV` | per voltage_index | Current measurement of the voltage testpoint |\n\n### Hardware / StackWise\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cswRingRedundant` | `{status}` | device | Whether the stack ring is in a redundant configuration |\n| `snmp.device_prof_cswStackPortOperStatus` | `{status}` | per stack_port_index | State of the stackport |\n| `snmp.device_prof_cswSwitchRole` | `{role}` | per mac_addr, entity_name | Role of a switch in the stack |\n| `snmp.device_prof_cswSwitchState` | `{status}` | per mac_addr, entity_name | Current state of a switch |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cfwConnectionStatCount` | `1` | per conn_stat_id | Integer that contains the value of the resource statistic. |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cieIfResetCount` | `{reset}/s` | per interface | Number of times the interface was internally reset and brought up |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / RTT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_rttMonCtrlOperConnectionLostOccurred` | `{status}` | per rtt_index | Indicates if a connection lost occurred for the RTT operation |\n| `snmp.device_prof_rttMonCtrlOperOverThresholdOccurred` | `{status}` | per rtt_index | Indicates if the latest RTT operation exceeded its configured threshold value |\n| `snmp.device_prof_rttMonCtrlOperState` | `{status}` | per rtt_index | Used to manage the state of the probe that is implementing conceptual RTT control row. |\n| `snmp.device_prof_rttMonCtrlOperTimeoutOccurred` | `{status}` | per rtt_index | Indicates if a timeout occurred for the RTT operation |\n| `snmp.device_prof_rttMonLatestRttOperSense` | `{status}` | per rtt_index | Sense code for the completion status of the latest RTT operation |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### Network / WAN\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cwoTfoStatsActiveADConn` | `{connection}` | device | This object contains number of current active TCP connections in the auto-discovery state |\n| `snmp.device_prof_cwoTfoStatsActiveOptConn` | `{connection}` | device | This object contains number of currently active TCP connections getting optimized |\n| `snmp.device_prof_cwoTfoStatsActiveOptTCPOnlyConn` | `{connection}` | device | This object contains number of active connections going through only TCP optimization |\n| `snmp.device_prof_cwoTfoStatsActiveOptTCPPlusConn` | `{connection}` | device | This object contains number of active TCP connections going through TCP plus other optimization |\n| `snmp.device_prof_cwoTfoStatsActiveOptTCPPrepConn` | `{connection}` | device | This object contains number of current active TCP connections that were originated by an accelerator to acquire data in anticipati\u2026 |\n| `snmp.device_prof_cwoTfoStatsActivePTConn` | `{connection}` | device | This object contains number of active Pass Through TCP connections. Connections which are not selected for optimization are called\u2026 |\n| `snmp.device_prof_cwoTfoStatsPendingConn` | `{connection}` | device | This object contains number of TCP connections, which are pending in queue of connections to be optimized |\n| `snmp.device_prof_cwoTfoStatsReservedConn` | `{connection}` | device | This object contains number of TCP connections reserved for the MAPI accelerator |\n| `snmp.device_prof_cwoTfoStatsResetConn` | `{connection}/s` | device | This object contains total number of optimized TCP connections, which are reset since TFO was started or its statistics were last \u2026 |\n| `snmp.device_prof_cwoTfoStatsTotalNormalClosedConn` | `{connection}/s` | device | This object contains total number of optimized TCP connections which were closed normally since TFO was started or its statistics \u2026 |\n| `snmp.device_prof_cwoTfoStatsTotalOptConn` | `{connection}/s` | device | This object contains total number of TCP connections optimized since TFO was started or its statistics were last reset |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / Alarm\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cceAlarmCriticalCount` | `{alarm}` | device | Number of alarms currently raised with a severity of 'critical' |\n| `snmp.device_prof_cceAlarmMajorCount` | `{alarm}` | device | Number of alarms currently raised with a severity of 'major' |\n| `snmp.device_prof_cceAlarmMinorCount` | `{alarm}` | device | Number of alarms currently raised with a severity of 'minor' |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpmCPULoadAvg15min` | `{load_average}` | per cpu_index | CPU load average over the last 15 minutes |\n| `snmp.device_prof_cpmCPULoadAvg1min` | `{load_average}` | per cpu_index | CPU load average over the last 1 minute |\n| `snmp.device_prof_cpmCPULoadAvg5min` | `{load_average}` | per cpu_index | CPU load average over the last 5 minutes |\n| `snmp.device_prof_cpmCPUTotal1minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 1 minute period |\n| `snmp.device_prof_cpmCPUTotal5minRev` | `%` | per cpu_index | Overall CPU busy percentage in the last 5 minute period |\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cempMemPoolLowestFree` | `By` | per mem_pool_index | Lowest amount of free memory observed since last clear (watermark) |\n| `snmp.device_prof_ciscoMemoryPoolFree` | `By` | per mem_pool_index | Number of bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolLargestFree` | `By` | per mem_pool_index | Largest number of contiguous bytes from the memory pool currently unused |\n| `snmp.device_prof_ciscoMemoryPoolUsed` | `By` | per mem_pool_index | Number of bytes from the memory pool currently in use |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### System / VirtualSwitch\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cvsChassisUpTime` | `cs` | per chassis_switch_id | Up time for the chassis since last re-initialization |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cdpGlobalDeviceId` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalDeviceIdFormat` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalHoldTime` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalLastChange` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalMessageInterval` | \u2014 | device | |\n| `snmp.device_prof_cdpGlobalRun` | \u2014 | device | |\n| `snmp.device_prof_cdpInterfaceEnable` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceMessageInterval` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_cdpInterfaceName` | \u2014 | per cdp_if_index | |\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cisco_WAN_Optimizer",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Citrix",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["citrix","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Citrix\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Citrix (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **citrix.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Citrix via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Citrix profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**1 metrics** in 1 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| System / Uptime | 1 |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Citrix",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Citrix Netscaler",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["citrix","netscaler","snmp","loadbalancer","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Citrix Netscaler\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Citrix Netscaler (loadbalancer) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **citrix-netscaler.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Citrix Netscaler via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Citrix Netscaler profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**107 metrics** in 11 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / HTTP | 14 |\n| Network / Interface | 9 |\n| Network / LoadBalancer | 55 |\n| Network / SSL | 4 |\n| Network / TCP | 8 |\n| System / CPU | 2 |\n| System / Disk | 4 |\n| System / HA | 6 |\n| System / Memory | 1 |\n| System / Service | 3 |\n| System / Uptime | 1 |\n\n### Network / HTTP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_netscaler_httpErrIncompleteHeaders` | `{error}/s` | device | HTTP requests and responses with incomplete headers |\n| `snmp.device_prof_netscaler_httpErrIncompleteRequests` | `{error}/s` | device | HTTP requests received with incomplete headers |\n| `snmp.device_prof_netscaler_httpErrIncompleteResponses` | `{error}/s` | device | HTTP responses received with incomplete headers |\n| `snmp.device_prof_netscaler_httpErrServerBusy` | `{error}/s` | device | HTTP error responses indicating server busy |\n| `snmp.device_prof_netscaler_httpTot10Requests` | `{request}/s` | device | HTTP/1.0 requests received |\n| `snmp.device_prof_netscaler_httpTot10Responses` | `{response}/s` | device | HTTP/1.0 responses sent |\n| `snmp.device_prof_netscaler_httpTotGets` | `{request}/s` | device | HTTP requests received using the GET method |\n| `snmp.device_prof_netscaler_httpTotOthers` | `{request}/s` | device | HTTP requests received using methods other than GET and POST |\n| `snmp.device_prof_netscaler_httpTotPosts` | `{request}/s` | device | HTTP requests received using the POST method |\n| `snmp.device_prof_netscaler_httpTotResponses` | `{response}/s` | device | HTTP responses sent including HTTP/1.0 and HTTP/1.1 responses |\n| `snmp.device_prof_netscaler_httpTotRxRequestBytes` | `By/s` | device | Bytes of HTTP data received |\n| `snmp.device_prof_netscaler_httpTotRxResponseBytes` | `By/s` | device | Bytes received as response data |\n| `snmp.device_prof_netscaler_httpTotTxRequestBytes` | `By/s` | device | Bytes of HTTP data transmitted |\n| `snmp.device_prof_netscaler_httpTotTxResponseBytes` | `By/s` | device | Bytes transmitted as response data |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_netscaler_ifRxAvgBandwidthUsage` | `bit/s` | per netscaler_if_name, netscaler_if_media | Average RX bandwidth on the specified interface in bits per second |\n| `snmp.device_prof_netscaler_ifThroughput` | `bit/s` | per netscaler_if_name, netscaler_if_media | Interface throughput |\n| `snmp.device_prof_netscaler_ifTotRxBytes` | `bit/s` | per netscaler_if_name, netscaler_if_media | Total bytes received on the specified interface |\n| `snmp.device_prof_netscaler_ifTotTxBytes` | `bit/s` | per netscaler_if_name, netscaler_if_media | Number of bytes transmitted from the specified interface |\n| `snmp.device_prof_netscaler_ifTxAvgBandwidthUsage` | `bit/s` | per netscaler_if_name, netscaler_if_media | Average TX bandwidth on the specified interface in bits per second |\n\n### Network / LoadBalancer\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_netscaler_curConfigGslbVservers` | `{vserver}` | device | Number of GSLB vservers configured on the NetScaler |\n| `snmp.device_prof_netscaler_curConfigLbVservers` | `{vserver}` | device | Number of load balancing vservers configured on the NetScaler |\n| `snmp.device_prof_netscaler_curConfigVservers` | `{vserver}` | device | Total number of vservers configured on the NetScaler |\n| `snmp.device_prof_netscaler_lbvsvrActiveConn` | `{connection}` | per netscaler_lbvsvr_lb_method, netscaler_lbvsvr_persistance_type | Number of connections currently active |\n| `snmp.device_prof_netscaler_lbvsvrAvgSvrTTFB` | `ms` | per netscaler_lbvsvr_lb_method, netscaler_lbvsvr_persistance_type | Average time to first byte between NetScaler and server |\n| `snmp.device_prof_netscaler_lbvsvrPersistenceTimeOut` | `s` | per netscaler_lbvsvr_lb_method, netscaler_lbvsvr_persistance_type | Timeout set for persistence |\n| `snmp.device_prof_netscaler_serverCount` | `{server}` | device | Number of servers defined on the NetScaler appliance |\n| `snmp.device_prof_netscaler_serverState` | `{status}` | per netscaler_server_name, netscaler_server_ip_address | The state of the server |\n| `snmp.device_prof_netscaler_servicePersistentHits` | `{hit}/s` | per netscaler_vsvr_service_name, netscaler_vsvr_service_full_name, netscaler_vserver_full_name | Total number of persistent hits |\n| `snmp.device_prof_netscaler_svcActiveConn` | `{connection}` | per netscaler_svc_service_name, netscaler_svc_service_full_name, netscaler_svc_service_type | Number of connections currently active |\n| `snmp.device_prof_netscaler_svcActiveTransactions` | `{transaction}` | per netscaler_svc_service_name, netscaler_svc_service_full_name, netscaler_svc_service_type | Number of active transactions handled by this service including surge queue |\n| `snmp.device_prof_netscaler_svcAvgSvrTTFB` | `ms` | per netscaler_svc_service_name, netscaler_svc_service_full_name, netscaler_svc_service_type | Average time to first byte between NetScaler and the server |\n| `snmp.device_prof_netscaler_svcAvgTransactionTime` | `ms` | per netscaler_svc_service_name, netscaler_svc_service_full_name, netscaler_svc_service_type | Average transaction time between NetScaler and the service |\n| `snmp.device_prof_netscaler_svcCount` | `{service}` | device | Number of services defined on the NetScaler appliance |\n| `snmp.device_prof_netscaler_svcCurClntConnections` | `{connection}` | per netscaler_svc_service_name, netscaler_svc_service_full_name, netscaler_svc_service_type | Number of current client connections |\n| `snmp.device_prof_netscaler_svcEstablishedConn` | `{connection}` | per netscaler_svc_service_name, netscaler_svc_service_full_name, netscaler_svc_service_type | Total number of connections in established state |\n| `snmp.device_prof_netscaler_svcRequestRate` | `{session}/s` | per netscaler_svc_service_name, netscaler_svc_service_full_name, netscaler_svc_service_type | Request rate in requests per second for this service or virtual server |\n| `snmp.device_prof_netscaler_svcRxBytesRate` | `By/s` | per netscaler_svc_service_name, netscaler_svc_service_full_name, netscaler_svc_service_type | Request rate in bytes per second for this service or virtual server |\n| `snmp.device_prof_netscaler_svcSurgeCount` | `{request}` | per netscaler_svc_service_name, netscaler_svc_service_full_name, netscaler_svc_service_type | Number of requests in the surge queue |\n| `snmp.device_prof_netscaler_svcTotalClients` | `{connection}/s` | device | Total number of established client connections |\n| `snmp.device_prof_netscaler_svcTotalPktsRecvd` | `{packet}/s` | per netscaler_svc_service_name, netscaler_svc_service_full_name, netscaler_svc_service_type | Total number of packets received by this service or virtual server |\n| `snmp.device_prof_netscaler_svcTotalPktsSent` | `{packet}/s` | per netscaler_svc_service_name, netscaler_svc_service_full_name, netscaler_svc_service_type | Total number of packets sent by this service or virtual server |\n| `snmp.device_prof_netscaler_svcTotalRequestBytes` | `By/s` | per netscaler_svc_service_name, netscaler_svc_service_full_name, netscaler_svc_service_type | Total number of request bytes received on this service or virtual server |\n| `snmp.device_prof_netscaler_svcTotalRequests` | `{request}/s` | per netscaler_svc_service_name, netscaler_svc_service_full_name, netscaler_svc_service_type | Total number of requests received on this service or virtual server |\n| `snmp.device_prof_netscaler_svcTotalResponseBytes` | `By/s` | per netscaler_svc_service_name, netscaler_svc_service_full_name, netscaler_svc_service_type | Number of response bytes received by this service or virtual server |\n| `snmp.device_prof_netscaler_svcTotalResponses` | `{response}/s` | per netscaler_svc_service_name, netscaler_svc_service_full_name, netscaler_svc_service_type | Number of responses received on this service or virtual server |\n| `snmp.device_prof_netscaler_svcTotalServers` | `{connection}/s` | device | Total number of established server connections |\n| `snmp.device_prof_netscaler_svcTxBytesRate` | `By/s` | per netscaler_svc_service_name, netscaler_svc_service_full_name, netscaler_svc_service_type | Response rate in bytes per second for this service or virtual server |\n| `snmp.device_prof_netscaler_svcgroupCount` | `{service_group}` | device | Number of service groups defined on the NetScaler appliance |\n| `snmp.device_prof_netscaler_svcgroupmemCount` | `{service_group_member}` | device | Number of service group members defined on the NetScaler appliance |\n| `snmp.device_prof_netscaler_svcgrpSvcGroupState` | `{status}` | per netscaler_svcgrp_svc_group_name, netscaler_svcgrp_svc_group_type | The state of the service Group |\n| `snmp.device_prof_netscaler_totSpilloverCount` | `{spillover}/s` | device | Number of times spillover occurred on the NetScaler |\n| `snmp.device_prof_netscaler_vsvrActiveActiveState` | `{status}` | per netscaler_vsvr_full_name | The state of the vserver based on ActiveActive configuration |\n| `snmp.device_prof_netscaler_vsvrBindCount` | `{binding}` | device | Number of virtual server bindings on the NetScaler appliance |\n| `snmp.device_prof_netscaler_vsvrCurClntConnections` | `{connection}` | per netscaler_vsvr_name, netscaler_vsvr_ip_address, netscaler_vsvr_port, netscaler_vsvr_type | Number of current client connections |\n| `snmp.device_prof_netscaler_vsvrCurServicesDown` | `{service}` | per netscaler_vsvr_full_name | Current number of services bound to this vserver and are down |\n| `snmp.device_prof_netscaler_vsvrCurServicesUp` | `{service}` | per netscaler_vsvr_full_name | Current number of services bound to this vserver and are up |\n| `snmp.device_prof_netscaler_vsvrCurSrvrConnections` | `{connection}` | per netscaler_vsvr_full_name | Number of current connections to the actual servers behind the virtual server |\n| `snmp.device_prof_netscaler_vsvrHealth` | `%` | per netscaler_vsvr_full_name | Percentage of UP services bound to this vserver |\n| `snmp.device_prof_netscaler_vsvrRequestRate` | `{packet}/s` | per netscaler_vsvr_full_name | Request rate in requests per second for this service or virtual server |\n| `snmp.device_prof_netscaler_vsvrRxBytesRate` | `By/s` | per netscaler_vsvr_full_name | Request rate in bytes per second for this service or virtual server |\n| `snmp.device_prof_netscaler_vsvrServiceHits` | `{hit}/s` | per netscaler_vsvr_service_name, netscaler_vsvr_service_full_name, netscaler_vserver_full_name | Number of times the service has been provided |\n| `snmp.device_prof_netscaler_vsvrSoThreshold` | `{spillover}` | per netscaler_vsvr_full_name | Spillover threshold for the vserver |\n| `snmp.device_prof_netscaler_vsvrState` | `{status}` | per netscaler_vsvr_name, netscaler_vsvr_ip_address, netscaler_vsvr_port, netscaler_vsvr_type | Current state of the server |\n| `snmp.device_prof_netscaler_vsvrSvcGrpBindCount` | `{binding}` | device | Number of virtual server service group bindings on the NetScaler appliance |\n| `snmp.device_prof_netscaler_vsvrSynfloodRate` | `{packet}/s` | per netscaler_vsvr_full_name | Rate of unacknowledged SYN packets for this service or virtual server |\n| `snmp.device_prof_netscaler_vsvrTotSpillOvers` | `{spillover}/s` | per netscaler_vsvr_full_name | Number of times vserver experienced spill over |\n| `snmp.device_prof_netscaler_vsvrTotalClients` | `{connection}/s` | per netscaler_vsvr_full_name | Total number of established client connections |\n| `snmp.device_prof_netscaler_vsvrTotalRequestBytes` | `By/s` | per netscaler_vsvr_full_name | Total number of request bytes received on this service or virtual server |\n| `snmp.device_prof_netscaler_vsvrTotalRequests` | `{request}/s` | per netscaler_vsvr_full_name | Total number of requests received on this service or virtual server |\n| `snmp.device_prof_netscaler_vsvrTotalResponseBytes` | `By/s` | per netscaler_vsvr_full_name | Number of response bytes received by this service or virtual server |\n| `snmp.device_prof_netscaler_vsvrTotalResponses` | `{response}/s` | per netscaler_vsvr_full_name | Number of responses received on this service or virtual server |\n| `snmp.device_prof_netscaler_vsvrTotalServers` | `{connection}/s` | per netscaler_vsvr_full_name | Total number of established server connections |\n| `snmp.device_prof_netscaler_vsvrTotalServicesBound` | `{service}` | per netscaler_vsvr_full_name | Current number of services bound to this vserver |\n| `snmp.device_prof_netscaler_vsvrTxBytesRate` | `By/s` | per netscaler_vsvr_full_name | Response rate in bytes per second for this service or virtual server |\n\n### Network / SSL\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_netscaler_sslCurSessions` | `{session}` | device | Number of active SSL sessions on the NetScaler appliance |\n| `snmp.device_prof_netscaler_sslDaysToExpire` | `d` | per netscaler_ssl_cert_key_name | Number of days remaining for the certificate to expire |\n| `snmp.device_prof_netscaler_sslSessionsPerSec` | `{session}/s` | device | SSL sessions per second between client and NetScaler appliance |\n| `snmp.device_prof_netscaler_sslTotSessions` | `{session}/s` | device | Number of SSL sessions on the NetScaler appliance |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_netscaler_tcpCurClientConn` | `{connection}` | device | Client connections including opening, established, and closing states |\n| `snmp.device_prof_netscaler_tcpCurClientConnEstablished` | `{connection}` | device | Current client connections in the established state |\n| `snmp.device_prof_netscaler_tcpCurServerConnEstablished` | `{connection}` | device | Current server connections in the established state |\n| `snmp.device_prof_netscaler_tcpErrAnyPortFail` | `{error}/s` | device | Port allocations failed on mapped IP address |\n| `snmp.device_prof_netscaler_tcpErrIpPortFail` | `{error}/s` | device | Port allocations failed on subnet or vserver IP address |\n| `snmp.device_prof_netscaler_tcpErrRetransmit` | `{packet}/s` | device | TCP packets retransmitted |\n| `snmp.device_prof_netscaler_tcpTotRxPkts` | `{packet}/s` | device | TCP packets received |\n| `snmp.device_prof_netscaler_tcpTotTxPkts` | `{packet}/s` | device | TCP packets transmitted |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n| `snmp.device_prof_netscaler_nsCPUusage` | `%` | per netscaler_ns_cp_uname | CPU utilization percentage |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_netscaler_sysHealthDiskAvail` | `By` | per netscaler_sys_health_disk_name | Total disk space available in MBytes |\n| `snmp.device_prof_netscaler_sysHealthDiskPerusage` | `%` | per netscaler_sys_health_disk_name | Percentage of disk space used |\n| `snmp.device_prof_netscaler_sysHealthDiskSize` | `By` | per netscaler_sys_health_disk_name | Total disk space in MBytes |\n| `snmp.device_prof_netscaler_sysHealthDiskUsed` | `By` | per netscaler_sys_health_disk_name | Total disk space used in MBytes |\n\n### System / HA\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_netscaler_haCurState` | `{status}` | device | State of the HA node, based on its health |\n| `snmp.device_prof_netscaler_haCurStatus` | `{status}` | device | Whether a Citrix ADC is configured for high availability |\n| `snmp.device_prof_netscaler_haPeerState` | `{status}` | device | Represents the state of the failover peer Citrix ADC whether Primary or Secondary |\n| `snmp.device_prof_netscaler_haTimeofLastStateTransition` | `ms` | device | Time since last master state transition |\n| `snmp.device_prof_netscaler_haTotStateTransitions` | `{transition}/s` | device | Total number of master state changes of the NetScaler appliance |\n| `snmp.device_prof_netscaler_sysHighAvailabilityMode` | `{status}` | device | Shows whether Citrix ADC is in standalone mode or whether it is primary or secondary in case of failover mode |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_usage` | `%` | device | Percentage of memory utilization on NetScaler |\n\n### System / Service\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_netscaler_syssvcCount` | `{service}` | device | Number of system services |\n| `snmp.device_prof_netscaler_sysupsvcCount` | `{service}` | device | Number of system up services |\n| `snmp.device_prof_netscaler_sysupsvcitmCount` | `{service_item}` | device | Number of system up service items |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Citrix_Netscaler",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Citrix Netscaler SDX",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["citrix","netscaler","sdx","snmp","loadbalancer","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Citrix Netscaler SDX\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Citrix Netscaler SDX (loadbalancer) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **citrix-netscaler-sdx.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Citrix Netscaler SDX via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Citrix Netscaler SDX profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**20 metrics** in 8 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Resource | 1 |\n| Network / Interface | 7 |\n| Storage / Repository | 3 |\n| System / CPU | 1 |\n| System / Memory | 1 |\n| System / Software | 1 |\n| System / Uptime | 1 |\n| Virtualization / VirtualInstance | 5 |\n\n### Hardware / Resource\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_netscaler_sdx_hardwareResourceStatus` | `{status}` | per netscaler_sdx_hardware_resource_name | Health status of the resource |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_netscaler_sdx_interfaceRxBytes` | `bit/s` | per netscaler_sdx_interface_port, netscaler_sdx_interface_mapped_port | Received bytes |\n| `snmp.device_prof_netscaler_sdx_interfaceRxErrors` | `{error}/s` | per netscaler_sdx_interface_port, netscaler_sdx_interface_mapped_port | Receiving errors |\n| `snmp.device_prof_netscaler_sdx_interfaceRxPackets` | `{packet}/s` | per netscaler_sdx_interface_port, netscaler_sdx_interface_mapped_port | Received packets |\n| `snmp.device_prof_netscaler_sdx_interfaceState` | `{status}` | per netscaler_sdx_interface_port, netscaler_sdx_interface_mapped_port | State of the Interface |\n| `snmp.device_prof_netscaler_sdx_interfaceTxBytes` | `bit/s` | per netscaler_sdx_interface_port, netscaler_sdx_interface_mapped_port | Transmitted bytes |\n| `snmp.device_prof_netscaler_sdx_interfaceTxErrors` | `{error}/s` | per netscaler_sdx_interface_port, netscaler_sdx_interface_mapped_port | Transmission errors |\n| `snmp.device_prof_netscaler_sdx_interfaceTxPackets` | `{packet}/s` | per netscaler_sdx_interface_port, netscaler_sdx_interface_mapped_port | Transmitted packets |\n\n### Storage / Repository\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_netscaler_sdx_srSize` | `By` | per netscaler_sdx_sr_name, netscaler_sdx_sr_bay_number | Physical size of the storage repository |\n| `snmp.device_prof_netscaler_sdx_srStatus` | `{status}` | per netscaler_sdx_sr_name, netscaler_sdx_sr_bay_number | Status of the storage repository |\n| `snmp.device_prof_netscaler_sdx_srUtilized` | `By` | per netscaler_sdx_sr_name, netscaler_sdx_sr_bay_number | Physical utilization of the storage repository |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per netscaler_sdx_xen_ip_address_type, netscaler_sdx_xen_ip_address, netscaler_sdx_xen_uuid | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_usage` | `%` | per netscaler_sdx_xen_ip_address_type, netscaler_sdx_xen_ip_address, netscaler_sdx_xen_uuid | Memory usage percentage of host |\n\n### System / Software\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_netscaler_sdx_softwareResourceStatus` | `{status}` | per netscaler_sdx_software_resource_name | Health status of the resource |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Virtualization / VirtualInstance\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_netscaler_sdx_nsHttpReq` | `{request}/s` | per netscaler_sdx_ns_uuid, netscaler_sdx_ns_name | Http requests per second |\n| `snmp.device_prof_netscaler_sdx_nsNsCPUUsage` | `%` | per netscaler_sdx_ns_uuid, netscaler_sdx_ns_name | Cpu usage percentage of netscaler instance |\n| `snmp.device_prof_netscaler_sdx_nsNsMemoryUsage` | `%` | per netscaler_sdx_ns_uuid, netscaler_sdx_ns_name | Memory usage percentage |\n| `snmp.device_prof_netscaler_sdx_nsNsRx` | `bit/s` | per netscaler_sdx_ns_uuid, netscaler_sdx_ns_name | In throughput of netscaler instance in megabits per second |\n| `snmp.device_prof_netscaler_sdx_nsNsTx` | `bit/s` | per netscaler_sdx_ns_uuid, netscaler_sdx_ns_name | Out throughput of netscaler instance in megabits per second |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Citrix_Netscaler_SDX",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cradlepoint",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["cradlepoint","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cradlepoint\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cradlepoint (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 47 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cradlepoint.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cradlepoint via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cradlepoint profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**12 metrics** in 3 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Cellular | 7 |\n| Network / Interface | 4 |\n| System / Uptime | 1 |\n\n### Network / Cellular\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cradlepoint_mdmCINR` | `dBm` | per cradlepoint_mdm_descr, cradlepoint_mdm_port, cradlepoint_mdm_rfband, cradlepoint_mdm_homecarrier, cradlepoint_mdm_apn, cradlepoint_mdm_rfchannel, cradlepoint_mdm_roam | The cellular modems CINR ratio given in dBm's. |\n| `snmp.device_prof_cradlepoint_mdmECIO` | `dBm` | per cradlepoint_mdm_descr, cradlepoint_mdm_port, cradlepoint_mdm_rfband, cradlepoint_mdm_homecarrier, cradlepoint_mdm_apn, cradlepoint_mdm_rfchannel, cradlepoint_mdm_roam | The cellular modems Ec/Io ratio given in dBm's. |\n| `snmp.device_prof_cradlepoint_mdmRSRP` | `dBm` | per cradlepoint_mdm_descr, cradlepoint_mdm_port, cradlepoint_mdm_rfband, cradlepoint_mdm_homecarrier, cradlepoint_mdm_apn, cradlepoint_mdm_rfchannel, cradlepoint_mdm_roam | The cellular modems RSRP given in dBm's. |\n| `snmp.device_prof_cradlepoint_mdmRSRQ` | `dBm` | per cradlepoint_mdm_descr, cradlepoint_mdm_port, cradlepoint_mdm_rfband, cradlepoint_mdm_homecarrier, cradlepoint_mdm_apn, cradlepoint_mdm_rfchannel, cradlepoint_mdm_roam | The cellular modems RSRQ given in dBm's. |\n| `snmp.device_prof_cradlepoint_mdmSINR` | `dBm` | per cradlepoint_mdm_descr, cradlepoint_mdm_port, cradlepoint_mdm_rfband, cradlepoint_mdm_homecarrier, cradlepoint_mdm_apn, cradlepoint_mdm_rfchannel, cradlepoint_mdm_roam | The cellular modems SINR ratio given in dBm's. |\n| `snmp.device_prof_cradlepoint_mdmSignalStrength` | `dBm` | per cradlepoint_mdm_descr, cradlepoint_mdm_port, cradlepoint_mdm_rfband, cradlepoint_mdm_homecarrier, cradlepoint_mdm_apn, cradlepoint_mdm_rfchannel, cradlepoint_mdm_roam | The cellular modems signal strength, given in dBm's. |\n| `snmp.device_prof_cradlepoint_mdmStatus` | `{status}` | per cradlepoint_mdm_descr, cradlepoint_mdm_port, cradlepoint_mdm_rfband, cradlepoint_mdm_homecarrier, cradlepoint_mdm_apn, cradlepoint_mdm_rfchannel, cradlepoint_mdm_roam | Modem Status |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cradlepoint",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Cyberpower PDU",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["cyberpower","pdu","snmp","pdu","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Cyberpower PDU\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Cyberpower PDU (pdu) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **cyberpower-pdu.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Cyberpower PDU via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Cyberpower PDU profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**43 metrics** in 13 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Environment / Humidity | 1 |\n| Environment / Temperature | 2 |\n| Hardware / Power | 6 |\n| PowerFlow / Bank | 2 |\n| PowerFlow / Input | 2 |\n| PowerFlow / Load | 2 |\n| PowerFlow / Outlet | 5 |\n| PowerFlow / Phase | 1 |\n| PowerFlow / Power | 3 |\n| PowerFlow / Rack | 16 |\n| PowerFlow / Voltage | 1 |\n| System / Rack | 1 |\n| System / Uptime | 1 |\n\n### Environment / Humidity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cyberpower_envirHumidity` | `%` | device | Environment relative humidity expressed in percentage |\n\n### Environment / Temperature\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cyberpower_envirTemperature` | `degF` | device | Environment temperature |\n| `snmp.device_prof_cyberpower_envirTemperatureCelsius` | `Cel` | device | Environment temperature expressed in Celsius |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ePDU2DeviceStatusPowerSupply1Status` | `{status}` | per e_pdu2_device_status_index, e_pdu2_device_status_name | Rack PDU Power Supply 1 alarm |\n| `snmp.device_prof_ePDU2DeviceStatusPowerSupply2Status` | `{status}` | per e_pdu2_device_status_index, e_pdu2_device_status_name | Rack PDU Power Supply 2 alarm |\n| `snmp.device_prof_ePDU2DeviceStatusPowerSupplyAlarm` | `{status}` | per e_pdu2_device_status_index, e_pdu2_device_status_name | Rack PDU Power Supply alarm |\n| `snmp.device_prof_ePDUPowerSupply1Status` | `{status}` | device | Power Supply 1 Status |\n| `snmp.device_prof_ePDUPowerSupply2Status` | `{status}` | device | Power Supply 2 Status |\n| `snmp.device_prof_ePDUPowerSupplyAlarm` | `{status}` | device | Power Supply Alarm |\n\n### PowerFlow / Bank\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ePDULoadBankConfigAlarm` | `{status}` | per e_pdu_load_bank_config_index | Bank Alarm |\n| `snmp.device_prof_ePDUStatusBankState` | `{status}` | per e_pdu_status_bank_index, e_pdu_status_bank_number | Bank load state |\n\n### PowerFlow / Input\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cyberpower_ePDUStatusInputFrequency` | `dHz` | device | Input frequency |\n| `snmp.device_prof_cyberpower_ePDUStatusInputVoltage` | `dV` | device | Input voltage |\n\n### PowerFlow / Load\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cyberpower_ePDULoadStatusLoad` | `dA` | per e_pdu_load_status_index | Phase/bank load |\n| `snmp.device_prof_ePDULoadStatusLoadState` | `{status}` | per e_pdu_load_status_index | Load state |\n\n### PowerFlow / Outlet\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cyberpower_ePDUOutletStatusActivePower` | `W` | per e_pdu_outlet_status_index, e_pdu_outlet_status_outlet_name | Measured Outlet load for an Outlet Monitored Rack PDU |\n| `snmp.device_prof_cyberpower_ePDUOutletStatusLoad` | `dA` | per e_pdu_outlet_status_index, e_pdu_outlet_status_outlet_name | Measured Outlet load for an Outlet Monitored Rack PDU |\n| `snmp.device_prof_ePDUOutletStatusAlarm` | `{status}` | per e_pdu_outlet_status_index, e_pdu_outlet_status_outlet_name | Outlet Alarm |\n| `snmp.device_prof_ePDUOutletStatusOutletState` | `{status}` | per e_pdu_outlet_status_index, e_pdu_outlet_status_outlet_name | Outlet state |\n| `snmp.device_prof_ePDUStatusOutletState` | `{status}` | per e_pdu_status_outlet_index, e_pdu_status_outlet_number | Outlet load state |\n\n### PowerFlow / Phase\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ePDUStatusPhaseState` | `{status}` | per e_pdu_status_phase_index, e_pdu_status_phase_number | Phase load state |\n\n### PowerFlow / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cyberpower_ePDULoadStatusActivePower` | `W` | per e_pdu_load_status_index | Phase/bank active power |\n| `snmp.device_prof_cyberpower_ePDULoadStatusApparentPower` | `VA` | per e_pdu_load_status_index | Phase/bank apparent power |\n| `snmp.device_prof_cyberpower_ePDULoadStatusPowerFactor` | `%` | per e_pdu_load_status_index | Power factor of the output |\n\n### PowerFlow / Rack\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cyberpower_ePDU2BankStatusLoad` | `dA` | per e_pdu2_bank_status_index | Current draw of the load on the Rack PDU bank |\n| `snmp.device_prof_cyberpower_ePDU2BankStatusPeakLoad` | `dA/s` | per e_pdu2_bank_status_index | Peak current of the Rack PDU bank load in tenths of Amps |\n| `snmp.device_prof_cyberpower_ePDU2DeviceStatusApparentPower` | `VA` | per e_pdu2_device_status_index, e_pdu2_device_status_name | Apparent power consumption of the Rack PDU load |\n| `snmp.device_prof_cyberpower_ePDU2DeviceStatusCurrentLoad` | `dA` | per e_pdu2_device_status_index, e_pdu2_device_status_name | Power consumption of the Rack PDU load |\n| `snmp.device_prof_cyberpower_ePDU2DeviceStatusCurrentPeakLoad` | `dA/s` | per e_pdu2_device_status_index, e_pdu2_device_status_name | Peak power consumption of the Rack PDU load |\n| `snmp.device_prof_cyberpower_ePDU2DeviceStatusPowerFactor` | `%` | per e_pdu2_device_status_index, e_pdu2_device_status_name | Power factor of the Rack PDU load |\n| `snmp.device_prof_cyberpower_ePDU2PhaseStatusApparentPower` | `VA` | per e_pdu2_phase_status_index | Load apparent power consumed on the Rack PDU phase |\n| `snmp.device_prof_cyberpower_ePDU2PhaseStatusLoad` | `dA` | per e_pdu2_phase_status_index | Current draw of the load on the Rack PDU phase |\n| `snmp.device_prof_cyberpower_ePDU2PhaseStatusPeakLoad` | `dA/s` | per e_pdu2_phase_status_index | Peak current of the Rack PDU phase load in tenths of Amps |\n| `snmp.device_prof_cyberpower_ePDU2PhaseStatusPower` | `kW` | per e_pdu2_phase_status_index | Load power consumed on the Rack PDU phase |\n| `snmp.device_prof_cyberpower_ePDU2PhaseStatusPowerFactor` | `%` | per e_pdu2_phase_status_index | Load power factor of the Rack PDU phase |\n| `snmp.device_prof_cyberpower_ePDU2PhaseStatusVoltage` | `V` | per e_pdu2_phase_status_index | Voltage of the Rack PDU phase |\n| `snmp.device_prof_ePDU2BankStatusLoadState` | `{status}` | per e_pdu2_bank_status_index | Load status of the Rack PDU bank |\n| `snmp.device_prof_ePDU2DeviceStatusLoadState` | `{status}` | per e_pdu2_device_status_index, e_pdu2_device_status_name | Rack PDU load state |\n| `snmp.device_prof_ePDU2OutletSwitchedStatusState` | `{status}` | per e_pdu2_outlet_switched_status_index, e_pdu2_outlet_switched_status_name | Switch state of the Rack PDU switched outlet |\n| `snmp.device_prof_ePDU2PhaseStatusLoadState` | `{status}` | per e_pdu2_phase_status_index | Phase load state |\n\n### PowerFlow / Voltage\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cyberpower_ePDULoadStatusVoltage` | `dV` | per e_pdu_load_status_index | Phase/bank voltage measured |\n\n### System / Rack\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ePDU2DeviceStatusRoleType` | `{status}` | per e_pdu2_device_status_index, e_pdu2_device_status_name | Rack PDU role on Daisy Chain group |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Cyberpower_PDU",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Dell",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"dell.svg"},keywords:["dell","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Dell\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Dell (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **dell.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Dell via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Dell profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**74 metrics** in 5 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / IP | 28 |\n| Network / Interface | 27 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / Uptime | 1 |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Dell",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Dell BGP",link:"",categories:["network-performance-monitoring.bgp"],icon_filename:"dell.svg"},keywords:["dell","bgp","snmp","routing","peering","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Dell BGP\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor BGP peering and routing health on Dell devices over SNMP with Netdata, using Dell BGP profile coverage.\n\nNetdata polls the BGP peer tables exposed by Dell devices (vendor and standard BGP MIBs) via SNMP.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDetected automatically for Dell devices that expose BGP MIBs.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",integration_type:"device",id:"go.d.plugin-snmp-Dell_BGP",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Dell EMC Data Domain",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"dell.svg"},keywords:["dell","emc","data","domain","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Dell EMC Data Domain\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Dell EMC Data Domain (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 38 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **dell-emc-data-domain.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Dell EMC Data Domain via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Dell EMC Data Domain profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**48 metrics** in 14 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Disk | 2 |\n| Hardware / Fan | 2 |\n| Hardware / NVRAM | 2 |\n| Hardware / Power | 1 |\n| Hardware / Sensor | 1 |\n| Network / Interface | 4 |\n| Storage / CIFS | 1 |\n| Storage / FileSystem | 15 |\n| Storage / NFS | 5 |\n| Storage / Replication | 2 |\n| System / CPU | 1 |\n| System / Disk | 7 |\n| System / Memory | 4 |\n| System / Uptime | 1 |\n\n### Hardware / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_diskPerfState` | `{status}` | per datadomain_disk_perf_index | Performance state of the disk |\n| `snmp.device_prof_diskPropState` | `{status}` | per datadomain_disk_prop_enclosure_id, datadomain_disk_prop_index, datadomain_disk_model, datadomain_disk_firmware_version, datadomain_disk_serial_number, datadomain_disk_pack | State of the disk |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fanLevel` | `{status}` | per datadomain_fan_description | Speed level of the fan |\n| `snmp.device_prof_fanStatus` | `{status}` | per datadomain_fan_description | Status of the fan |\n\n### Hardware / NVRAM\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_datadomain_nvramReadKBytesPerSecond` | `By/s` | per datadomain_system_stats_index | Number of kilobytes read per second from NVRAM |\n| `snmp.device_prof_datadomain_nvramWriteKBytesPerSecond` | `By/s` | per datadomain_system_stats_index | Number of kilobytes written per second to NVRAM |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_powerModuleStatus` | `{status}` | per datadomain_power_module_description | Status of the power module |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tempSensorStatus` | `{status}` | per datadomain_temp_sensor_description | Status of the temperature sensor |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Storage / CIFS\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_datadomain_cifsOpsPerSecond` | `{operation}/s` | per datadomain_system_stats_index | Number of CIFS operations performed per second |\n\n### Storage / FileSystem\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_datadomain_fileSystemCompressionEndTime` | `s` | per data_domain_file_system_compression_index | End time of file system compression |\n| `snmp.device_prof_datadomain_fileSystemCompressionStartTime` | `s` | per data_domain_file_system_compression_index | Start time of file system compression |\n| `snmp.device_prof_datadomain_fileSystemGlobalCompressionFactor` | `1` | per data_domain_file_system_compression_index | Global compression factor of the file system |\n| `snmp.device_prof_datadomain_fileSystemLocalCompressionFactor` | `1` | per data_domain_file_system_compression_index | Local compression factor of the file system |\n| `snmp.device_prof_datadomain_fileSystemPercentUsed` | `%` | per datadomain_file_system_resource_name, datadomain_file_system_resource_tier | Percentage of used space within the file system resource |\n| `snmp.device_prof_datadomain_fileSystemPostCompressionSize` | `By` | per data_domain_file_system_compression_index | Size of file system after compression |\n| `snmp.device_prof_datadomain_fileSystemPreCompressionSize` | `By` | per data_domain_file_system_compression_index | Size of file system before compression |\n| `snmp.device_prof_datadomain_fileSystemReductionPercent1` | `%` | per data_domain_file_system_compression_index | Percentage reduction of the file system size due to compression |\n| `snmp.device_prof_datadomain_fileSystemSpaceAvail` | `By` | per datadomain_file_system_resource_name, datadomain_file_system_resource_tier | Amount of available space within the file system resource in gigabytes |\n| `snmp.device_prof_datadomain_fileSystemSpaceCleanable` | `By` | per datadomain_file_system_resource_name, datadomain_file_system_resource_tier | Amount of file system space that can be cleaned |\n| `snmp.device_prof_datadomain_fileSystemSpaceSize` | `By` | per datadomain_file_system_resource_name, datadomain_file_system_resource_tier | Size of the file system resource in gigabytes |\n| `snmp.device_prof_datadomain_fileSystemSpaceUsed` | `By` | per datadomain_file_system_resource_name, datadomain_file_system_resource_tier | Amount of used space within the file system resource in gigabytes |\n| `snmp.device_prof_datadomain_fileSystemTotalCompressionFactor` | `1` | per data_domain_file_system_compression_index | Total compression factor of the file system |\n| `snmp.device_prof_datadomain_fileSystemVirtualSpace` | `By` | device | Amount of uncompressed data that has been backed up by the system |\n| `snmp.device_prof_fileSystemStatus` | `{status}` | device | Status of the file system |\n\n### Storage / NFS\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_datadomain_nfsIdlePercentage` | `%` | per datadomain_system_stats_index | Percentage of time NFS was idle |\n| `snmp.device_prof_datadomain_nfsOpsPerSecond` | `{operation}/s` | per datadomain_system_stats_index | Number of NFS operations performed per second |\n| `snmp.device_prof_datadomain_nfsProcPercentage` | `%` | per datadomain_system_stats_index | Percentage of time NFS was processing |\n| `snmp.device_prof_datadomain_nfsReceivePercentage` | `%` | per datadomain_system_stats_index | Percentage of time NFS was receiving requests |\n| `snmp.device_prof_datadomain_nfsSendPercentage` | `%` | per datadomain_system_stats_index | Percentage of time NFS was sending requests |\n\n### Storage / Replication\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_datadomain_replInKBytesPerSecond` | `By/s` | per datadomain_system_stats_index | Number of kilobytes per second received for replication |\n| `snmp.device_prof_datadomain_replOutKBytesPerSecond` | `By/s` | per datadomain_system_stats_index | Number of kilobytes per second sent for replication |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per datadomain_system_stats_index | The current CPU utilization |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_datadomain_diskBusy` | `%` | per datadomain_disk_perf_index | Percentage of time disk is busy |\n| `snmp.device_prof_datadomain_diskBusyPercentage` | `%` | per datadomain_system_stats_index | Percentage of time disks were busy |\n| `snmp.device_prof_datadomain_diskReadKBytesPerSecond` | `By/s` | per datadomain_system_stats_index | Number of kilobytes per second read from disk |\n| `snmp.device_prof_datadomain_diskSectorsRead` | `{sector}/s` | per datadomain_disk_perf_index | Number of disk sectors read per second |\n| `snmp.device_prof_datadomain_diskSectorsWritten` | `{sector}/s` | per datadomain_disk_perf_index | Number of disk sectors written per second |\n| `snmp.device_prof_datadomain_diskTotalKBytes` | `By/s` | per datadomain_disk_perf_index | Total number of kilobytes read or written per second |\n| `snmp.device_prof_datadomain_diskWriteKBytesPerSecond` | `By/s` | per datadomain_system_stats_index | Number of kilobytes per second written to disk |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrCachedMemory` | `By` | device | Amount of the storage represented by this entry that is allocated in units of hrStorageAllocationUnits |\n| `snmp.device_prof_hrMemoryBuffers` | `By` | device | Amount of the storage represented by this entry that is allocated in units of hrStorageAllocationUnits |\n| `snmp.device_prof_memory_total` | `By` | device | Size of the storage represented by this entry in units of hrStorageAllocationUnits |\n| `snmp.device_prof_memory_used` | `By` | device | Amount of the storage represented by this entry that is allocated in units of hrStorageAllocationUnits |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Dell_EMC_Data_Domain",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Dell Force10",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"dell.svg"},keywords:["dell","force10","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Dell Force10\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Dell Force10 (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **dell-force10.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Dell Force10 via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Dell Force10 profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**7 metrics** in 4 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Memory | 1 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_usage` | `%` | device | Total memory usage in percentage. |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Dell_Force10",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Dell OS10",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"dell.svg"},keywords:["dell","os10","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Dell OS10\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Dell OS10 (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 5 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **dell-os10.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Dell OS10 via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Dell OS10 profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**40 metrics** in 11 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Card | 2 |\n| Hardware / Chassis | 1 |\n| Hardware / Fan | 1 |\n| Hardware / FanTray | 1 |\n| Hardware / Power | 1 |\n| System / Activity | 2 |\n| System / CPU | 3 |\n| System / Disk | 15 |\n| System / Memory | 11 |\n| System / Uptime | 1 |\n| Uncategorized | 2 |\n\n### Hardware / Card\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dell_os10CardStatus` | `{status}` | per dell_os10_card_description, dell_os10_card_service_tag | Status of the card |\n| `snmp.device_prof_dell_os10CardTemp` | `Cel` | per dell_os10_card_description, dell_os10_card_service_tag | Temperature of the card |\n\n### Hardware / Chassis\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dell_os10ChassisTemp` | `Cel` | device | Temperature of the chassis |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dell_os10FanOperStatus` | `{status}` | per dell_os10_fan_index | Operational status of the fan |\n\n### Hardware / FanTray\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dell_os10FanTrayOperStatus` | `{status}` | per dell_os10_fan_tray_index | Operational status of the fan tray |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dell_os10PowerSupplyOperStatus` | `{status}` | per dell_os10_power_supply_index | Operational status of the power supply |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n| `snmp.device_prof_ucd_ssRawContexts` | `{switch}/s` | device | Number of context switches |\n| `snmp.device_prof_ucd_ssRawInterrupts` | `{interrupt}/s` | device | Number of interrupts processed |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_diskIOLA1` | `%` | per ucd_disk_io_device | The 1 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA15` | `%` | per ucd_disk_io_device | The 15 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA5` | `%` | per ucd_disk_io_device | The 5 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIONReadX` | `By/s` | per ucd_disk_io_device | The number of bytes read from this device since boot |\n| `snmp.device_prof_ucd_diskIONWrittenX` | `By/s` | per ucd_disk_io_device | The number of bytes written to this device since boot |\n| `snmp.device_prof_ucd_diskIOReads` | `{read}/s` | per ucd_disk_io_device | The number of read accesses from this device since boot |\n| `snmp.device_prof_ucd_diskIOWrites` | `{write}/s` | per ucd_disk_io_device | The number of write accesses to this device since boot |\n| `snmp.device_prof_ucd_dskAvail` | `By` | per ucd_dsk_path, ucd_dsk_device | Available space on the disk |\n| `snmp.device_prof_ucd_dskErrorFlag` | `{status}` | per ucd_dsk_path, ucd_dsk_device | Flag signaling that the disk or partition is under the minimum required space configured for it |\n| `snmp.device_prof_ucd_dskPercent` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of space used on disk |\n| `snmp.device_prof_ucd_dskPercentNode` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of inodes used on disk |\n| `snmp.device_prof_ucd_dskTotal` | `By` | per ucd_dsk_path, ucd_dsk_device | Total size of the disk/partition |\n| `snmp.device_prof_ucd_dskUsed` | `By` | per ucd_dsk_path, ucd_dsk_device | Used space on the disk |\n| `snmp.device_prof_ucd_ssIORawReceived` | `By/s` | device | Amount of data read from disk or other block device |\n| `snmp.device_prof_ucd_ssIORawSent` | `By/s` | device | Amount of data written to disk or other block device |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | device | The amount of real/physical memory currently unused or available |\n| `snmp.device_prof_ucd_memAvailSwap` | `By` | device | The amount of swap space currently unused or available |\n| `snmp.device_prof_ucd_memBuffer` | `By` | device | The total amount of real or virtual memory currently allocated for use as memory buffers |\n| `snmp.device_prof_ucd_memCached` | `By` | device | The total amount of real or virtual memory currently allocated for use as cached memory |\n| `snmp.device_prof_ucd_memMinimumSwap` | `By` | device | The minimum amount of swap space expected to be kept free or available during normal operation of this host |\n| `snmp.device_prof_ucd_memShared` | `By` | device | The total amount of real or virtual memory currently allocated for use as shared memory |\n| `snmp.device_prof_ucd_memTotalFree` | `By` | device | The total amount of memory free or available for use on this host |\n| `snmp.device_prof_ucd_memTotalSwap` | `By` | device | The total amount of swap space configured for this host |\n| `snmp.device_prof_ucd_memoryTotal` | `By` | device | The total amount of real/physical memory installed on this host |\n| `snmp.device_prof_ucd_ssRawSwapIn` | `By/s` | device | Amount of memory swapped in from disk |\n| `snmp.device_prof_ucd_ssRawSwapOut` | `By/s` | device | Amount of memory swapped out to disk |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Dell_OS10",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Dell Powerconnect",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"dell.svg"},keywords:["dell","powerconnect","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Dell Powerconnect\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Dell Powerconnect (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 78 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **dell-powerconnect.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Dell Powerconnect via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Dell Powerconnect profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**14 metrics** in 7 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Fan | 2 |\n| Hardware / Power | 3 |\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Memory | 2 |\n| System / Status | 1 |\n| System / Uptime | 1 |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dell_envMonFanSpeed` | `{revolution}/min` | per fan_index, dell_env_mon_fan_status_descr | Fan speed in revolutions per minute |\n| `snmp.device_prof_dell_envMonFanState` | `{status}` | per fan_index, dell_env_mon_fan_status_descr | Fan operational state |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dell_envMonSupplyAveragePower` | `W` | per dell_env_mon_supply_status_descr, dell_env_mon_supply_source | Average power consumption |\n| `snmp.device_prof_dell_envMonSupplyCurrentPower` | `W` | per dell_env_mon_supply_status_descr, dell_env_mon_supply_source | Current power consumption |\n| `snmp.device_prof_dell_envMonSupplyState` | `{status}` | per dell_env_mon_supply_status_descr, dell_env_mon_supply_source | Power supply operational state |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | device | Amount of free memory |\n| `snmp.device_prof_memory_total` | `By` | device | Total amount of memory |\n\n### System / Status\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_productStatusGlobalStatus` | `{status}` | device | Global status |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Dell_Powerconnect",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Dell Poweredge",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"dell.svg"},keywords:["dell","poweredge","snmp","server","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Dell Poweredge\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Dell Poweredge (server) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 3 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **dell-poweredge.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Dell Poweredge via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Dell Poweredge profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**135 metrics** in 21 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Battery | 2 |\n| Hardware / Cache | 4 |\n| Hardware / Chassis | 2 |\n| Hardware / Cooling | 6 |\n| Hardware / Intrusion | 2 |\n| Hardware / Memory | 3 |\n| Hardware / PCIDevice | 1 |\n| Hardware / Power | 3 |\n| Hardware / PowerSupply | 6 |\n| Hardware / Processor | 5 |\n| Hardware / Sensor | 7 |\n| Hardware / Slot | 1 |\n| Network / Device | 2 |\n| Network / IP | 28 |\n| Network / Interface | 37 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / BIOS | 1 |\n| System / Memory | 5 |\n| System / Power | 1 |\n| System / Uptime | 1 |\n\n### Hardware / Battery\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_batteryStatus` | `{status}` | per chassis_index, battery_index, battery_location_name | Status of the battery |\n| `snmp.device_prof_systemStateBatteryStatusCombined` | `{status}` | per chassis_index | Combined status of all batteries of this chassis |\n\n### Hardware / Cache\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cacheDeviceCurrentSize` | `By` | per chassis_index, cache_device_index | Current size of the cache device |\n| `snmp.device_prof_cacheDeviceMaximumSize` | `By` | per chassis_index, cache_device_index | Maximum size of the cache device |\n| `snmp.device_prof_cacheDeviceStatus` | `{status}` | per chassis_index, cache_device_index | Status of the cache device |\n| `snmp.device_prof_cacheDeviceStatusState` | `{status}` | per chassis_index, cache_device_index | Status state of the cache device |\n\n### Hardware / Chassis\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemStateChassisIntrusionStatusCombined` | `{status}` | per chassis_index | Combined status of all intrusion detection devices of this chassis |\n| `snmp.device_prof_systemStateChassisStatus` | `{status}` | per chassis_index | Status of this chassis |\n\n### Hardware / Cooling\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_coolingDeviceStatus` | `{status}` | per chassis_index, cooling_device_name, cooling_device_name, cooling_device_location_name | Status of the cooling device |\n| `snmp.device_prof_coolingUnitRedundancyStatus` | `{status}` | per chassis_index, cooling_unit_index, cooling_unit_name | Redundancy status of the cooling unit |\n| `snmp.device_prof_coolingUnitStatus` | `{status}` | per chassis_index, cooling_unit_index, cooling_unit_name | Status of the cooling unit |\n| `snmp.device_prof_systemStateCoolingDeviceStatusCombined` | `{status}` | per chassis_index | Combined status of all cooling devices of this chassis |\n| `snmp.device_prof_systemStateCoolingUnitStatusCombined` | `{status}` | per chassis_index | Combined status of all cooling units of this chassis |\n| `snmp.device_prof_systemStateCoolingUnitStatusRedundancy` | `{status}` | per chassis_index | Combined redundancy status of all cooling units of this chassis |\n\n### Hardware / Intrusion\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_intrusionReading` | `{status}` | per chassis_index, intrusion_index, intrusion_location_name | Reading of the intrusion sensor. |\n| `snmp.device_prof_intrusionStatus` | `{status}` | per chassis_index, intrusion_index, intrusion_location_name | Status of the intrusion sensor |\n\n### Hardware / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memoryDeviceFailureModes` | `{failure_mode}` | per chassis_index, device_index | Failure modes of the memory device |\n| `snmp.device_prof_memoryDeviceStatus` | `{status}` | per chassis_index, device_index | Status of the memory device |\n| `snmp.device_prof_systemStateMemoryDeviceStatusCombined` | `{status}` | per chassis_index | Combined status of all memory devices of this chassis |\n\n### Hardware / PCIDevice\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_pCIDeviceStatus` | `{status}` | per chassis_index, device_index, device_manufacturer_name | Status of the PCI device |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemStatePowerSupplyStatusCombined` | `{status}` | per chassis_index | Combined status of all power supplies of this chassis |\n| `snmp.device_prof_systemStatePowerUnitStatusCombined` | `{status}` | per chassis_index | Combined status of all power units of this chassis |\n| `snmp.device_prof_systemStatePowerUnitStatusRedundancy` | `{status}` | per chassis_index | Combined redundancy status of all power units of this chassis |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_powerSupplyConfigurationErrorType` | `{status}` | per chassis_index, power_supply_index, power_supply_type | Type of configuration error reported by the power supply sensor. |\n| `snmp.device_prof_powerSupplyCurrentInputVoltage` | `V` | per chassis_index, power_supply_index, power_supply_type | Current input voltage of the power supply |\n| `snmp.device_prof_powerSupplyMaximumInputVoltage` | `V` | per chassis_index, power_supply_index, power_supply_type | Maximum input voltage of the power supply |\n| `snmp.device_prof_powerSupplyOutputWatts` | `W` | per chassis_index, power_supply_index, power_supply_type | Output power in watts of the power supply |\n| `snmp.device_prof_powerSupplySensorState` | `{status}` | per chassis_index, power_supply_index, power_supply_type | Status reported by the power supply sensor |\n| `snmp.device_prof_powerSupplyStatus` | `{status}` | per chassis_index, power_supply_index, power_supply_type | Status of the power supply |\n\n### Hardware / Processor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_processorDeviceStatus` | `{status}` | per chassis_index, processor_device_index | Status of the processor device |\n| `snmp.device_prof_processorDeviceStatusReading` | `{reading}` | per chassis_index, processor_device_status_index, processor_device_status_location_name | Reading value of the processor device status probe |\n| `snmp.device_prof_processorDeviceStatusStatus` | `{status}` | per chassis_index, processor_device_status_index, processor_device_status_location_name | Status of the processor device status probe |\n| `snmp.device_prof_processorDeviceThreadCount` | `{thread}` | per chassis_index, processor_device_index | Number of threads in the processor device |\n| `snmp.device_prof_systemStateProcessorDeviceStatusCombined` | `{status}` | per chassis_index | Combined status of all processor devices of this chassis |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_amperageProbeStatus` | `{status}` | per probe_type, chassis_index, amperage_probe_index | Status of the amperage probe |\n| `snmp.device_prof_systemStateAmperageStatusCombined` | `{status}` | per chassis_index | Combined status of all amperage probes of this chassis |\n| `snmp.device_prof_systemStateTemperatureStatusCombined` | `{status}` | per chassis_index | Combined status of all temperature probes of this chassis |\n| `snmp.device_prof_temperatureProbeReading` | `Cel` | per chassis_index, temperature_probe_index, temperature_probe_type, temperature_probe_location_name | Reading value of the temperature probe |\n| `snmp.device_prof_temperatureProbeStatus` | `{status}` | per chassis_index, temperature_probe_index, temperature_probe_type, temperature_probe_location_name | Status of the temperature probe |\n| `snmp.device_prof_voltageProbeReading` | `mV` | per chassis_index, voltage_probe_index, probe_type | Reading value of the voltage probe |\n| `snmp.device_prof_voltageProbeStatus` | `{status}` | per chassis_index, voltage_probe_index, probe_type | Status of the voltage probe |\n\n### Hardware / Slot\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemSlotStatus` | `{status}` | per chassis_index, slot_index, slot_name | Status of the system slot |\n\n### Network / Device\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_networkDeviceConnectionStatus` | `{status}` | per chassis_index, network_device_index | Connection status of the network device |\n| `snmp.device_prof_networkDeviceStatus` | `{status}` | per chassis_index, network_device_index | Status of the network device |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_adapterCollisions` | `{collision}/s` | per adapter | Total number of single collisions |\n| `snmp.device_prof_adapterRxBytes` | `By/s` | per adapter | Total number of bytes received |\n| `snmp.device_prof_adapterRxDropped` | `{drop}/s` | per adapter | Total number of receive packets dropped due to overrun |\n| `snmp.device_prof_adapterRxErrors` | `{error}/s` | per adapter | Total number of packets received with errors (packets that failed to reach the protocol) |\n| `snmp.device_prof_adapterRxMulticast` | `{packet}/s` | per adapter | Total number of Multicast packets received |\n| `snmp.device_prof_adapterRxPackets` | `{packet}/s` | per adapter | Total number of packets received |\n| `snmp.device_prof_adapterTxBytes` | `By/s` | per adapter | Total number of bytes transmitted |\n| `snmp.device_prof_adapterTxDropped` | `{drop}/s` | per adapter | Total number of transmit packets dropped due to successive collisions |\n| `snmp.device_prof_adapterTxErrors` | `{error}/s` | per adapter | Total number of packets that failed to transmit |\n| `snmp.device_prof_adapterTxPackets` | `{packet}/s` | per adapter | Total number of packets transmitted |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / BIOS\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemBIOSStatus` | `{status}` | per chassis_index, system_bios_index | Status of the system BIOS |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_operatingSystemMemoryAvailablePageFileSize` | `By` | per chassis_index | Available page file size of operating system memory |\n| `snmp.device_prof_operatingSystemMemoryAvailablePhysicalSize` | `By` | per chassis_index | Available physical memory size |\n| `snmp.device_prof_operatingSystemMemoryAvailableVirtualSize` | `By` | per chassis_index | Available virtual memory size |\n| `snmp.device_prof_operatingSystemMemoryTotalPageFileSize` | `By` | per chassis_index | Total page file size of operating system memory |\n| `snmp.device_prof_operatingSystemMemoryTotalVirtualSize` | `By` | per chassis_index | Total virtual memory size |\n\n### System / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_powerUsageStatus` | `{status}` | per chassis_index, power_usage_index, power_usage_entity_name | Status of the power usage information |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Dell_Poweredge",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Dell Sonicwall",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"dell.svg"},keywords:["dell","sonicwall","snmp","firewall","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Dell Sonicwall\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Dell Sonicwall (firewall) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **dell-sonicwall.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Dell Sonicwall via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Dell Sonicwall profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**19 metrics** in 9 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / IPSec | 1 |\n| Network / Interface | 4 |\n| Network / NAT | 1 |\n| Network / VPN | 5 |\n| Security / DPI | 3 |\n| Security / Firewall | 2 |\n| System / CPU | 1 |\n| System / Memory | 1 |\n| System / Uptime | 1 |\n\n### Network / IPSec\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_sonicSAStatOutFragPktCount` | `{packet}/s` | per sonic_sa_stat_user_name | Outgoing Fragmented packet count for this phase2 SA |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / NAT\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_sonicNatTranslationCount` | `{translation}` | device | Current number of dynamic NAT translations being performed |\n\n### Network / VPN\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_sonicSAStatDecryptByteCount` | `By/s` | per sonic_sa_stat_user_name | Total decrypted byte count for this phase2 SA |\n| `snmp.device_prof_sonicSAStatDecryptPktCount` | `{packet}/s` | per sonic_sa_stat_user_name | Total decrypted packet count for this phase2 SA |\n| `snmp.device_prof_sonicSAStatEncryptByteCount` | `By/s` | per sonic_sa_stat_user_name | Total encrypted byte count for this phase2 SA |\n| `snmp.device_prof_sonicSAStatEncryptPktCount` | `{packet}/s` | per sonic_sa_stat_user_name | Total encrypted packet count for this phase2 SA |\n| `snmp.device_prof_sonicSAStatInFragPktCount` | `{packet}/s` | per sonic_sa_stat_user_name | Incoming Fragmented packet count for this phase2 SA |\n\n### Security / DPI\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_sonicDpiSslConnCountCur` | `{connection}` | device | Current SSL-inspected connections through the firewall |\n| `snmp.device_prof_sonicDpiSslConnCountHighWater` | `{connection}` | device | Highwater SSL-inspected connections through the firewall |\n| `snmp.device_prof_sonicDpiSslConnCountMax` | `{connection}` | device | Maximum SSL-inspected connections through the firewall |\n\n### Security / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_sonicCurrentConnCacheEntries` | `{entry}` | device | Number of active connection cache entries through the firewall |\n| `snmp.device_prof_sonicMaxConnCacheEntries` | `{entry}` | device | Maximum number of connection cache entries allowed through the firewall |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_usage` | `%` | device | Instantaneous RAM Utilization in percent |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Dell_Sonicwall",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Dialogic Media Gateway",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["dialogic","media","gateway","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Dialogic Media Gateway\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Dialogic Media Gateway (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **dialogic-media-gateway.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Dialogic Media Gateway via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Dialogic Media Gateway profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**5 metrics** in 2 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Dialogic_Media_Gateway",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Dlink",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["dlink","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Dlink\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Dlink (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **dlink.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Dlink via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Dlink profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**5 metrics** in 2 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Dlink",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Dlink DGS Switch",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["dlink","dgs","switch","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Dlink DGS Switch\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Dlink DGS Switch (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 2 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **dlink-dgs-switch.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Dlink DGS Switch via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Dlink DGS Switch profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**28 metrics** in 9 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Fan | 1 |\n| Hardware / Power | 3 |\n| Hardware / Sensor | 3 |\n| Hardware / Unit | 1 |\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Memory | 2 |\n| System / Uptime | 1 |\n| Uncategorized | 12 |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dEntityExtEnvFanStatus` | `{status}` | per d_entity_ext_env_fan_unit_id, d_entity_ext_env_fan_index, d_entity_ext_env_fan_descr | Current status of the fan |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dEntityExtEnvPowerStatus` | `{status}` | per d_entity_ext_env_power_unit_id, d_entity_ext_env_power_index, d_entity_ext_env_power_descr | Current status of the power |\n| `snmp.device_prof_dlink_dEntityExtEnvPowerMaxPower` | `W` | per d_entity_ext_env_power_unit_id, d_entity_ext_env_power_index, d_entity_ext_env_power_descr | Maximum power which the power module can supply |\n| `snmp.device_prof_dlink_dEntityExtEnvPowerUsedPower` | `W` | per d_entity_ext_env_power_unit_id, d_entity_ext_env_power_index, d_entity_ext_env_power_descr | Amount of the power that has been allocated |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dEntityExtEnvAirFlowStatus` | `{status}` | per d_entity_ext_env_air_flow_unit_id | Current status of the air flow |\n| `snmp.device_prof_dEntityExtEnvTempStatus` | `{status}` | per d_entity_ext_env_temp_unit_id, d_entity_ext_env_temp_index, d_entity_ext_env_temp_descr | Current status of the testpoint |\n| `snmp.device_prof_dlink_dEntityExtEnvTempCurrent` | `Cel` | per d_entity_ext_env_temp_unit_id, d_entity_ext_env_temp_index, d_entity_ext_env_temp_descr | Current measurement of the testpoint |\n\n### Hardware / Unit\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_dEntityExtUnitStatus` | `{status}` | per d_entity_ext_unit_index | Current status of the unit |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per dlink_entity_ext_cpu_util_unit_id, dlink_entity_ext_cpu_util_cpu_id | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_total` | `By` | per mem, d_entity_ext_mem_util_type | Total memory size of the entry |\n| `snmp.device_prof_memory_used` | `By` | per mem, d_entity_ext_mem_util_type | Used memory size of the entry |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Dlink_DGS_Switch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Eaton Epdu",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["eaton","epdu","snmp","pdu","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Eaton Epdu\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Eaton Epdu (pdu) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **eaton-epdu.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Eaton Epdu via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Eaton Epdu profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**37 metrics** in 8 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Breaker | 1 |\n| Hardware / Group | 1 |\n| Hardware / PDU | 3 |\n| Hardware / Sensor | 8 |\n| PowerFlow / Group | 7 |\n| PowerFlow / Input | 9 |\n| PowerFlow / Outlet | 7 |\n| System / Uptime | 1 |\n\n### Hardware / Breaker\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_eaton_epdu_groupBreakerStatus` | `{status}` | per eaton_epdu_group_index, eaton_epdu_group_name, eaton_epdu_group_type | Indicates whether a breaker is turned off or on |\n\n### Hardware / Group\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_eaton_epdu_groupControlStatus` | `{status}` | per eaton_epdu_group_index, eaton_epdu_group_name, eaton_epdu_group_type | Current state of a controlled group |\n\n### Hardware / PDU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_eaton_epdu_communicationStatus` | `{status}` | device | Status of the internal communication with the PDU |\n| `snmp.device_prof_eaton_epdu_internalStatus` | `{status}` | device | Status of the internal failure inside the PDU |\n| `snmp.device_prof_eaton_epdu_strappingStatus` | `{status}` | device | Status of the external communication with a strapping unit |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_eaton_epdu_contactProbeStatus` | `{status}` | per eaton_epdu_contact_index, eaton_epdu_contact_name | Indicates whether a probe is connected or not |\n| `snmp.device_prof_eaton_epdu_contactState` | `{status}` | per eaton_epdu_contact_index, eaton_epdu_contact_name | The state of the contact sensor |\n| `snmp.device_prof_eaton_epdu_humidityProbeStatus` | `{status}` | per eaton_epdu_humidity_index, eaton_epdu_humidity_name | Indicates whether a probe is connected or not |\n| `snmp.device_prof_eaton_epdu_humidityThStatus` | `{status}` | per eaton_epdu_humidity_index, eaton_epdu_humidity_name | Status of the measured humidity relative to the configured thresholds |\n| `snmp.device_prof_eaton_epdu_humidityValue` | `%` | per eaton_epdu_humidity_index, eaton_epdu_humidity_name | Units are tenths of a percent relative humidity Divide the value by 10 to get %RH |\n| `snmp.device_prof_eaton_epdu_temperatureProbeStatus` | `{status}` | per eaton_epdu_temperature_index, eaton_epdu_temperature_name | Indicates whether a probe is connected or not |\n| `snmp.device_prof_eaton_epdu_temperatureThStatus` | `{status}` | per eaton_epdu_temperature_index, eaton_epdu_temperature_name | Status of the measured temperature relative to the configured thresholds |\n| `snmp.device_prof_eaton_epdu_temperatureValue` | `Cel` | per eaton_epdu_temperature_index, eaton_epdu_temperature_name | Temperature value |\n\n### PowerFlow / Group\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_eaton_epdu_groupCurrent` | `mA` | per eaton_epdu_group_index, eaton_epdu_group_name, eaton_epdu_group_type | A group current measurement value |\n| `snmp.device_prof_eaton_epdu_groupCurrentPercentLoad` | `%` | per eaton_epdu_group_index, eaton_epdu_group_name, eaton_epdu_group_type | Current percent load based on the rated current capacity |\n| `snmp.device_prof_eaton_epdu_groupCurrentThStatus` | `{status}` | per eaton_epdu_group_index, eaton_epdu_group_name, eaton_epdu_group_type | Status of the measured group current relative to the configured thresholds |\n| `snmp.device_prof_eaton_epdu_groupVA` | `VA` | per eaton_epdu_group_index, eaton_epdu_group_name, eaton_epdu_group_type | A group VA value |\n| `snmp.device_prof_eaton_epdu_groupVoltage` | `mV` | per eaton_epdu_group_index, eaton_epdu_group_name, eaton_epdu_group_type | Units are millivolts |\n| `snmp.device_prof_eaton_epdu_groupVoltageThStatus` | `{status}` | per eaton_epdu_group_index, eaton_epdu_group_name, eaton_epdu_group_type | Status of the measured group voltage relative to the configured thresholds |\n| `snmp.device_prof_eaton_epdu_groupWatts` | `W` | per eaton_epdu_group_index, eaton_epdu_group_name, eaton_epdu_group_type | A group Watts value |\n\n### PowerFlow / Input\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_eaton_epdu_inputCurrent` | `mA` | per eaton_epdu_input_index, eaton_epdu_input_description | An input current measurement value |\n| `snmp.device_prof_eaton_epdu_inputCurrentPercentLoad` | `%` | per eaton_epdu_input_index, eaton_epdu_input_description | Current percent load based on the rated current capacity |\n| `snmp.device_prof_eaton_epdu_inputCurrentThStatus` | `{status}` | per eaton_epdu_input_index, eaton_epdu_input_description | Status of the measured input current relative to the configured thresholds |\n| `snmp.device_prof_eaton_epdu_inputFrequency` | `Hz` | per eaton_epdu_input_index, eaton_epdu_input_feed_name | Units are 0.1 Hz; divide by ten to get Hz |\n| `snmp.device_prof_eaton_epdu_inputFrequencyStatus` | `{status}` | per eaton_epdu_input_index, eaton_epdu_input_feed_name | Status of the measured input frequency relative to the nominal frequency and the admitted tolerance |\n| `snmp.device_prof_eaton_epdu_inputVA` | `VA` | per eaton_epdu_input_index, eaton_epdu_input_description | An input VA value |\n| `snmp.device_prof_eaton_epdu_inputVoltage` | `mV` | per eaton_epdu_input_index, eaton_epdu_input_description | An input voltage measurement value |\n| `snmp.device_prof_eaton_epdu_inputVoltageThStatus` | `{status}` | per eaton_epdu_input_index, eaton_epdu_input_description | Status of the measured input voltage relative to the configured thresholds |\n| `snmp.device_prof_eaton_epdu_inputWatts` | `W` | per eaton_epdu_input_index, eaton_epdu_input_description | An input Watts value |\n\n### PowerFlow / Outlet\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_eaton_epdu_outletCurrent` | `mA` | per eaton_epdu_outlet_index, eaton_epdu_outlet_name | An outlet current measurement value |\n| `snmp.device_prof_eaton_epdu_outletCurrentPercentLoad` | `%` | per eaton_epdu_outlet_index, eaton_epdu_outlet_name | Current percent load based on the rated current capacity |\n| `snmp.device_prof_eaton_epdu_outletCurrentThStatus` | `{status}` | per eaton_epdu_outlet_index, eaton_epdu_outlet_name | Status of the measured outlet current relative to the configured thresholds |\n| `snmp.device_prof_eaton_epdu_outletVA` | `VA` | per eaton_epdu_outlet_index, eaton_epdu_outlet_name | An outlet VA value |\n| `snmp.device_prof_eaton_epdu_outletVoltage` | `mV` | per eaton_epdu_outlet_index, eaton_epdu_outlet_name | Units are millivolts |\n| `snmp.device_prof_eaton_epdu_outletVoltageThStatus` | `{status}` | per eaton_epdu_outlet_index, eaton_epdu_outlet_name | Status of the measured outlet voltage relative to the configured thresholds |\n| `snmp.device_prof_eaton_epdu_outletWatts` | `W` | per eaton_epdu_outlet_index, eaton_epdu_outlet_name | An outlet Watts value |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Eaton_Epdu",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Eaton UPS",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["eaton","ups","snmp","ups","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Eaton UPS\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Eaton UPS (ups) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **eaton-ups.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Eaton UPS via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Eaton UPS profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**68 metrics** in 14 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Environment / Humidity | 1 |\n| Environment / Temperature | 1 |\n| Hardware / Battery | 7 |\n| PowerFlow / Bypass | 9 |\n| PowerFlow / Input | 14 |\n| PowerFlow / Output | 17 |\n| PowerFlow / Receptacle | 4 |\n| System / Alarm | 2 |\n| System / Battery | 2 |\n| System / Config | 4 |\n| System / Control | 1 |\n| System / Test | 2 |\n| System / Topology | 3 |\n| System / Uptime | 1 |\n\n### Environment / Humidity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_xupsEnvAmbientHumidity` | `%` | device | Ambient humidity near UPS |\n\n### Environment / Temperature\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_xupsEnvAmbientTemp` | `Cel` | device | Ambient temperature near UPS |\n\n### Hardware / Battery\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_xupsBatCurrent` | `A` | device | Battery current (positive=discharging, negative=charging) |\n| `snmp.device_prof_xupsBatVoltage` | `V` | device | Battery voltage |\n| `snmp.device_prof_xupsBatteryAbmStatus` | `{status}` | device | Advanced Battery Management status |\n| `snmp.device_prof_xupsBatteryAged` | `{status}` | device | Battery age indicator |\n| `snmp.device_prof_xupsBatteryFailure` | `{status}` | device | Battery fault or test failure indicator |\n| `snmp.device_prof_xupsBatteryLowCapacity` | `{status}` | device | Battery low capacity indicator |\n| `snmp.device_prof_xupsBatteryNotPresent` | `{status}` | device | Battery presence indicator |\n\n### PowerFlow / Bypass\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_xupsBypassAveragePowerFactor` | \u2014 | device | Average bypass power factor |\n| `snmp.device_prof_xupsBypassAverageVoltage` | `V` | device | Average bypass voltage |\n| `snmp.device_prof_xupsBypassCurrentHighPrecision` | `A` | per phase, phase_name | Bypass current per phase (high precision) |\n| `snmp.device_prof_xupsBypassFrequency` | `Hz` | device | Bypass frequency |\n| `snmp.device_prof_xupsBypassTotalCurrent` | `A` | device | Total bypass current |\n| `snmp.device_prof_xupsBypassTotalVA` | `VA` | device | Total bypass apparent power |\n| `snmp.device_prof_xupsBypassTotalWatts` | `W` | device | Total bypass active power |\n| `snmp.device_prof_xupsBypassVoltage` | `V` | per phase, phase_name | Bypass voltage per phase |\n| `snmp.device_prof_xupsBypassWatts` | `W` | per phase, phase_name | Bypass real power per phase |\n\n### PowerFlow / Input\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_xupsDualInputStatus` | `{status}` | device | Dual input source status |\n| `snmp.device_prof_xupsInputAveragePowerFactor` | \u2014 | device | Average input power factor |\n| `snmp.device_prof_xupsInputAverageVoltage` | `V` | device | Average input voltage (single phase) or average across phases |\n| `snmp.device_prof_xupsInputCurrent` | `A` | per phase, phase_name | Input current per phase |\n| `snmp.device_prof_xupsInputCurrentHighPrecision` | `A` | per phase, phase_name | Input current per phase (high precision) |\n| `snmp.device_prof_xupsInputFrequency` | `Hz` | device | Input line frequency |\n| `snmp.device_prof_xupsInputLineBads` | `{event}` | device | Count of input out-of-tolerance events |\n| `snmp.device_prof_xupsInputSource` | `{source}` | device | Current input power source |\n| `snmp.device_prof_xupsInputStatus` | `{status}` | device | Primary AC input status |\n| `snmp.device_prof_xupsInputTotalCurrent` | `A` | device | Total input current |\n| `snmp.device_prof_xupsInputTotalVA` | `VA` | device | Total input apparent power |\n| `snmp.device_prof_xupsInputTotalWatts` | `W` | device | Total input active power |\n| `snmp.device_prof_xupsInputVoltage` | `V` | per phase, phase_name | Input voltage per phase |\n| `snmp.device_prof_xupsInputWatts` | `W` | per phase, phase_name | Input real power per phase |\n\n### PowerFlow / Output\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_xupsOutputAveragePowerFactor` | \u2014 | device | Average output power factor |\n| `snmp.device_prof_xupsOutputAverageVoltage` | `V` | device | Average output voltage |\n| `snmp.device_prof_xupsOutputCumulativePowerUsage` | `Wh` | device | Cumulative energy consumed since last reset |\n| `snmp.device_prof_xupsOutputCurrent` | `A` | per phase, phase_name | Output current per phase |\n| `snmp.device_prof_xupsOutputCurrentHighPrecision` | `A` | per phase, phase_name | Output current per phase (high precision) |\n| `snmp.device_prof_xupsOutputFrequency` | `Hz` | device | Output frequency |\n| `snmp.device_prof_xupsOutputHourlyPowerUsage` | `Wh` | device | Energy consumed during the last hour |\n| `snmp.device_prof_xupsOutputLoad` | `%` | device | UPS output load percentage |\n| `snmp.device_prof_xupsOutputPercentLoad` | `%` | per phase, phase_name | Output load percentage per phase |\n| `snmp.device_prof_xupsOutputSource` | `{source}` | device | Current output power source |\n| `snmp.device_prof_xupsOutputStatus` | `{status}` | device | AC output protection status |\n| `snmp.device_prof_xupsOutputTotalCurrent` | `A` | device | Total output current |\n| `snmp.device_prof_xupsOutputTotalVA` | `VA` | device | Total output apparent power |\n| `snmp.device_prof_xupsOutputTotalWatts` | `W` | device | Total output active power |\n| `snmp.device_prof_xupsOutputVA` | `VA` | per phase, phase_name | Output apparent power per phase |\n| `snmp.device_prof_xupsOutputVoltage` | `V` | per phase, phase_name | Output voltage per phase |\n| `snmp.device_prof_xupsOutputWatts` | `W` | per phase, phase_name | Output real power per phase |\n\n### PowerFlow / Receptacle\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_xupsNumReceptacles` | `{receptacle}` | device | Number of controllable receptacles |\n| `snmp.device_prof_xupsRecepCumulativePowerUsage` | `Wh` | per receptacle | Receptacle cumulative energy consumption |\n| `snmp.device_prof_xupsRecepHourlyPowerUsage` | `Wh` | per receptacle | Receptacle hourly energy consumption |\n| `snmp.device_prof_xupsRecepStatus` | `{status}` | per receptacle | Receptacle power status |\n\n### System / Alarm\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_xupsAlarmNumEvents` | `{event}` | device | Number of entries in UPS event history |\n| `snmp.device_prof_xupsAlarms` | `{alarm}` | device | Current number of active alarm conditions |\n\n### System / Battery\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_xupsBatCapacity` | `%` | device | Battery charge level |\n| `snmp.device_prof_xupsBatTimeRemaining` | `s` | device | Battery runtime remaining before UPS shutdown |\n\n### System / Config\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_xupsConfigInputVoltage` | `V` | device | Nominal input voltage |\n| `snmp.device_prof_xupsConfigOutputFreq` | `Hz` | device | Nominal output frequency |\n| `snmp.device_prof_xupsConfigOutputVoltage` | `V` | device | Nominal output voltage |\n| `snmp.device_prof_xupsConfigOutputWatts` | `W` | device | Nominal output power capacity |\n\n### System / Control\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_xupsSwitchable` | `{status}` | device | Whether UPS accepts remote control commands |\n\n### System / Test\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_xupsLastGeneralTestResult` | `{status}` | device | Last general test result |\n| `snmp.device_prof_xupsTestBatteryStatus` | `{status}` | device | Last battery test status |\n\n### System / Topology\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_xupsTopoPowerStrategy` | `{strategy}` | device | Current power strategy setting |\n| `snmp.device_prof_xupsTopoUnitNumber` | `{unit}` | device | Unit number in parallel system (0=standalone or system view) |\n| `snmp.device_prof_xupsTopologyType` | `{type}` | device | UPS power topology type |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Eaton_UPS",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Exagrid",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["exagrid","snmp","storage","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Exagrid\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Exagrid (storage) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **exagrid.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Exagrid via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Exagrid profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**26 metrics** in 10 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| Storage / BackupData | 4 |\n| Storage / Deduplication | 3 |\n| Storage / LandingSpace | 4 |\n| Storage / RetentionSpace | 4 |\n| System / Activity | 2 |\n| System / Alarm | 1 |\n| System / CPU | 1 |\n| System / Uptime | 1 |\n| Uncategorized | 2 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Storage / BackupData\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_egBackupDataAvailableFractionalGigabytes` | `By` | device | The amount of data available for restore by a backup application below 1 Gigabyte in bytes |\n| `snmp.device_prof_egBackupDataAvailableWholeGigabytes` | `By` | device | The amount of data available for restore by a backup application scaled to GigaBytes (10^9) bytes |\n| `snmp.device_prof_egBackupDataSpaceConsumedFractionalGigabytes` | `By` | device | The amount of consumed retention space below 1 Gigabyte in bytes |\n| `snmp.device_prof_egBackupDataSpaceConsumedWholeGigabytes` | `By` | device | The amount of consumed retention space scaled to GigaBytes (10^9) bytes |\n\n### Storage / Deduplication\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_egPendingDeduplicationAge` | `ms` | device | The amount of time that data has been available for deduplication, but has not yet been deduplicated |\n| `snmp.device_prof_egPendingDeduplicationFractionalGigabytes` | `By` | device | The amount of data not yet deduplicated below 1 Gigabyte in bytes |\n| `snmp.device_prof_egPendingDeduplicationWholeGigabytes` | `By` | device | The amount of data not yet deduplicated scaled to GigaBytes (10^9) bytes |\n\n### Storage / LandingSpace\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_egLandingSpaceAvailableFractionalGigabytes` | `By` | device | The amount of available landing space below 1 Gigabyte in bytes |\n| `snmp.device_prof_egLandingSpaceAvailableWholeGigabytes` | `By` | device | The amount of available landing space scaled to GigaBytes (10^9) bytes |\n| `snmp.device_prof_egLandingSpaceConfiguredFractionalGigabytes` | `By` | device | The amount of configured landing space below 1 Gigabyte in bytes |\n| `snmp.device_prof_egLandingSpaceConfiguredWholeGigabytes` | `By` | device | The amount of configured landing space scaled to GigaBytes (10^9) bytes |\n\n### Storage / RetentionSpace\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_egRetentionSpaceAvailableFractionalGigabytes` | `By` | device | The amount of available retention space below 1 Gigabyte in bytes |\n| `snmp.device_prof_egRetentionSpaceAvailableWholeGigabytes` | `By` | device | The amount of available retention space scaled to GigaBytes (10^9) bytes |\n| `snmp.device_prof_egRetentionSpaceConfiguredFractionalGigabytes` | `By` | device | The amount of configured retention space below 1 Gigabyte in bytes |\n| `snmp.device_prof_egRetentionSpaceConfiguredWholeGigabytes` | `By` | device | The amount of configured retention space scaled to GigaBytes (10^9) bytes |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / Alarm\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_egServerAlarmState` | `{status}` | device | Current alarm state of the server |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Exagrid",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Extreme Switching",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["extreme","switching","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Extreme Switching\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Extreme Switching (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **extreme-switching.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Extreme Switching via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Extreme Switching profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**20 metrics** in 7 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Fan | 1 |\n| Hardware / Power | 7 |\n| Hardware / Sensor | 4 |\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Memory | 2 |\n| System / Uptime | 1 |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_extremeFanOperational` | `{status}` | per fan_index | Operational status of a cooling fan |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_extremeInputPowerVoltage` | `V` | device | The input power voltage at which the system is currently operating. |\n| `snmp.device_prof_extremePowerAlarm` | `{status}` | device | Power alarm status |\n| `snmp.device_prof_extremePowerStatus` | `{status}` | device | Power supply status |\n| `snmp.device_prof_extremePrimaryPowerOperational` | `{status}` | device | Primary power operational status |\n| `snmp.device_prof_extremeRedundantPowerAlarm` | `{status}` | device | Redundant power alarm status |\n| `snmp.device_prof_extremeRedundantPowerStatus` | `{status}` | device | Redundant power supply status |\n| `snmp.device_prof_extremeSystemPowerState` | `{status}` | device | Overall system power state |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_entPhySensorOperStatus` | `{status}` | per sensor_index, rm:sensor_type, rm:sensor_scale, rm:sensor_precision | Operational status of the sensor |\n| `snmp.device_prof_entPhySensorValue` | `1` | per sensor_index, rm:sensor_type, rm:sensor_scale, rm:sensor_precision | Most recent measurement obtained by the agent for this sensor |\n| `snmp.device_prof_extremeCurrentTemperature` | `Cel` | device | Current temperature measured inside device enclosure. |\n| `snmp.device_prof_extremeOverTemperatureAlarm` | `{status}` | device | Over temperature alarm status |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | per mem_index | Total amount of free memory in Kbytes in the system. |\n| `snmp.device_prof_memory_total` | `By` | per mem_index | Total amount of DRAM in Kbytes in the system. |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Extreme_Switching",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"F5 BGP",link:"",categories:["network-performance-monitoring.bgp"],icon_filename:"SNMP.png"},keywords:["f5","bgp","snmp","routing","peering","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# F5 BGP\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor BGP peering and routing health on F5 devices over SNMP with Netdata, using F5 BGP profile coverage.\n\nNetdata polls the BGP peer tables exposed by F5 devices (vendor and standard BGP MIBs) via SNMP.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDetected automatically for F5 devices that expose BGP MIBs.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",integration_type:"device",id:"go.d.plugin-snmp-F5_BGP",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"F5 BIG IP",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["f5","big","ip","snmp","loadbalancer","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# F5 BIG IP\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor F5 BIG IP (loadbalancer) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **f5-big-ip.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as F5 BIG IP via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this F5 BIG IP profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**190 metrics** in 13 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| LoadBalancer / Node | 17 |\n| LoadBalancer / Pool | 15 |\n| LoadBalancer / PoolMember | 14 |\n| LoadBalancer / VirtualServer | 19 |\n| Network / IP | 28 |\n| Network / Interface | 31 |\n| Network / Routing | 10 |\n| Network / SSL | 6 |\n| Network / TCP | 20 |\n| Network / UDP | 11 |\n| System / CPU | 8 |\n| System / Memory | 10 |\n| System / Uptime | 1 |\n\n### LoadBalancer / Node\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ltmNodeAddrConnLimit` | `{connection}` | per node_name | The maximum number of connections the specified node address is allowed to have open at one time |\n| `snmp.device_prof_ltmNodeAddrDynamicRatio` | `{ratio}` | per node_name | The dynamic ratio of the specified node address used in load balance algorithm |\n| `snmp.device_prof_ltmNodeAddrMonitorState` | `{status}` | per node_name | The internal tmm monitor state for the specified node address |\n| `snmp.device_prof_ltmNodeAddrMonitorStatus` | `{status}` | per node_name | The hierarchical load balance state for the specified node address including parent status |\n| `snmp.device_prof_ltmNodeAddrNumber` | `{node}` | device | The number of ltmNodeAddr entries in the table |\n| `snmp.device_prof_ltmNodeAddrRatio` | `{ratio}` | per node_name | The ratio of the specified node address used in load balance algorithm |\n| `snmp.device_prof_ltmNodeAddrSessionStatus` | `{status}` | per node_name | The hierarchical status of the session including parent status for the specified node address |\n| `snmp.device_prof_ltmNodeAddrStatCurSessions` | `{session}` | per node_name | The number of current sessions going through the specified node address |\n| `snmp.device_prof_ltmNodeAddrStatCurrentConnsPerSec` | `{connection}/s` | per node_name | The number of current connections per second to the specified node address |\n| `snmp.device_prof_ltmNodeAddrStatDurationRateExceeded` | `s` | per node_name | Duration of time in seconds the specified node address has exceeded the configured connection rate limit |\n| `snmp.device_prof_ltmNodeAddrStatServerBytesIn` | `By/s` | per node_name | The number of bytes received by the specified node address from server-side |\n| `snmp.device_prof_ltmNodeAddrStatServerBytesOut` | `By/s` | per node_name | The number of bytes sent to server-side from the specified node address |\n| `snmp.device_prof_ltmNodeAddrStatServerCurConns` | `{connection}` | per node_name | The current connections from server-side to the specified node address |\n| `snmp.device_prof_ltmNodeAddrStatServerPktsIn` | `{packet}/s` | per node_name | The number of packets received by the specified node address from server-side |\n| `snmp.device_prof_ltmNodeAddrStatServerPktsOut` | `{packet}/s` | per node_name | The number of packets sent to server-side from the specified node address |\n| `snmp.device_prof_ltmNodeAddrStatServerTotConns` | `{connection}/s` | per node_name | The total connections from server-side to the specified node address |\n| `snmp.device_prof_ltmNodeAddrStatTotRequests` | `{request}/s` | per node_name | The total number of requests going through the specified node address |\n\n### LoadBalancer / Pool\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ltmPoolActiveMemberCnt` | `{member}` | per pool_name | The number of the current active members in the specified pool |\n| `snmp.device_prof_ltmPoolDynamicRatioSum` | `{ratio}` | per pool_name | The sum of the dynamic ratio from all the members of the specified pool |\n| `snmp.device_prof_ltmPoolMemberCnt` | `{member}` | per pool_name | The total number of members in the specified pool |\n| `snmp.device_prof_ltmPoolNumber` | `{pool}` | device | The number of ltmPool entries in the table |\n| `snmp.device_prof_ltmPoolStatConnqAgeHead` | `ms` | per pool_name | Age in milliseconds of the oldest queue entry, max |\n| `snmp.device_prof_ltmPoolStatConnqDepth` | `{connection}` | per pool_name | Number of connections currently in queue, sum |\n| `snmp.device_prof_ltmPoolStatConnqServiced` | `{connection}/s` | per pool_name | Number of entries that have been removed from the queue, sum |\n| `snmp.device_prof_ltmPoolStatCurSessions` | `{session}` | per pool_name | The current number of sessions to the specified pool |\n| `snmp.device_prof_ltmPoolStatServerBytesIn` | `By/s` | per pool_name | The number of bytes received by the specified pool from server-side |\n| `snmp.device_prof_ltmPoolStatServerBytesOut` | `By/s` | per pool_name | The number of bytes sent to server-side from the specified pool |\n| `snmp.device_prof_ltmPoolStatServerCurConns` | `{connection}` | per pool_name | The current connections from server-side to the specified pool |\n| `snmp.device_prof_ltmPoolStatServerPktsIn` | `{packet}/s` | per pool_name | The number of packets received by the specified pool from server-side |\n| `snmp.device_prof_ltmPoolStatServerPktsOut` | `{packet}/s` | per pool_name | The number of packets sent to server-side from the specified pool |\n| `snmp.device_prof_ltmPoolStatServerTotConns` | `{connection}/s` | per pool_name | The total connections from server-side to the specified pool |\n| `snmp.device_prof_ltmPoolStatTotRequests` | `{request}/s` | per pool_name | The total number of requests to the specified pool |\n\n### LoadBalancer / PoolMember\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ltmPoolMemberConnLimit` | `{connection}` | per pool_name, node_name | The maximum connections allowed to the specified pool member |\n| `snmp.device_prof_ltmPoolMemberDynamicRatio` | `{ratio}` | per pool_name, node_name | The dynamic ratio for the specified pool member used in load balance algorithm |\n| `snmp.device_prof_ltmPoolMemberMonitorState` | `{status}` | per pool_name, node_name | The internal tmm monitor state for the specified node address |\n| `snmp.device_prof_ltmPoolMemberMonitorStatus` | `{status}` | per pool_name, node_name | The hierarchical load balance state for the specified node address including parent status |\n| `snmp.device_prof_ltmPoolMemberNumber` | `{member}` | device | The number of ltmPoolMember entries in the table |\n| `snmp.device_prof_ltmPoolMemberRatio` | `{ratio}` | per pool_name, node_name | The load balancing ratio of the specified pool member used in pool member ratio load balancing mode |\n| `snmp.device_prof_ltmPoolMemberSessionStatus` | `{status}` | per pool_name, node_name | The hierarchical status of the session including parent status for the specified pool member |\n| `snmp.device_prof_ltmPoolMemberStatConnqServiced` | `{connection}/s` | per pool_name, node_name | Number of entries that have been removed from the queue, sum |\n| `snmp.device_prof_ltmPoolMemberStatServerBytesIn` | `By/s` | per pool_name, node_name | The number of bytes received by the specified pool member from server-side |\n| `snmp.device_prof_ltmPoolMemberStatServerBytesOut` | `By/s` | per pool_name, node_name | The number of bytes sent to server-side from the specified pool member |\n| `snmp.device_prof_ltmPoolMemberStatServerPktsIn` | `{packet}/s` | per pool_name, node_name | The number of packets received by the specified pool member from server-side |\n| `snmp.device_prof_ltmPoolMemberStatServerPktsOut` | `{packet}/s` | per pool_name, node_name | The number of packets sent to server-side from the specified pool member |\n| `snmp.device_prof_ltmPoolMemberStatServerTotConns` | `{connection}/s` | per pool_name, node_name | The total connections from server-side to the specified pool member |\n| `snmp.device_prof_ltmPoolMemberStatTotRequests` | `{request}/s` | per pool_name, node_name | The total number of requests going through the specified pool member |\n\n### LoadBalancer / VirtualServer\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ltmVirtualServConnLimit` | `{connection}` | per virtual_server_name | The maximum number of connections the specified virtual server is allowed to have open at one time |\n| `snmp.device_prof_ltmVirtualServEnabled` | `{virtual_server}` | per virtual_server_name | The state indicating whether the specified virtual server is enabled or not |\n| `snmp.device_prof_ltmVirtualServNumber` | `{virtual_server}` | device | The number of ltmVirtualServ entries in the table |\n| `snmp.device_prof_ltmVirtualServStatClientBytesIn` | `By/s` | per virtual_server_name | The number of bytes received by the specified virtual server from client-side |\n| `snmp.device_prof_ltmVirtualServStatClientBytesOut` | `By/s` | per virtual_server_name | The number of bytes sent to client-side from the specified virtual server |\n| `snmp.device_prof_ltmVirtualServStatClientCurConns` | `{connection}` | per virtual_server_name | The current connections from client-side to the specified virtual server |\n| `snmp.device_prof_ltmVirtualServStatClientEvictedConns` | `{connection}/s` | per virtual_server_name | The number of client-side connections that have been evicted on the specified virtual server |\n| `snmp.device_prof_ltmVirtualServStatClientPktsIn` | `{packet}/s` | per virtual_server_name | The number of packets received by the specified virtual server from client-side |\n| `snmp.device_prof_ltmVirtualServStatClientPktsOut` | `{packet}/s` | per virtual_server_name | The number of packets sent to client-side from the specified virtual server |\n| `snmp.device_prof_ltmVirtualServStatClientSlowKilled` | `{connection}/s` | per virtual_server_name | The number of slow client-side connections that have been killed on the specified virtual server |\n| `snmp.device_prof_ltmVirtualServStatClientTotConns` | `{connection}/s` | per virtual_server_name | The total connections from client-side to the specified virtual server |\n| `snmp.device_prof_ltmVirtualServStatCurrentConnsPerSec` | `{connection}/s` | per virtual_server_name | The number of current connections per second to the specified virtual server |\n| `snmp.device_prof_ltmVirtualServStatDurationRateExceeded` | `s` | per virtual_server_name | Duration of time in seconds the specified virtual server has exceeded the configured connection rate limit |\n| `snmp.device_prof_ltmVirtualServStatNoNodesErrors` | `{error}/s` | per virtual_server_name | The number of no-node errors |\n| `snmp.device_prof_ltmVirtualServStatTotRequests` | `{request}/s` | per virtual_server_name | The total number of requests going through the specified virtual server |\n| `snmp.device_prof_ltmVirtualServStatVsUsageRatio1m` | `%` | per virtual_server_name | The percentage of time Virtual Server was busy over the last 1 minute |\n| `snmp.device_prof_ltmVirtualServStatVsUsageRatio5m` | `%` | per virtual_server_name | The percentage of time Virtual Server was busy over the last 5 minutes |\n| `snmp.device_prof_ltmVirtualServStatVsUsageRatio5s` | `%` | per virtual_server_name | The percentage of time Virtual Server was busy over the last 5 seconds |\n| `snmp.device_prof_ltmVsStatusEnabledState` | `{status}` | per ltm_vs_status_avail_state, ltm_vs_status_name | The activity status of the specified virtual server, as specified by the user. |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / SSL\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_sysClientsslStatCurConns` | `{connection}` | device | The current number of concurrent connections with established SSL sessions being maintained by the filter |\n| `snmp.device_prof_sysClientsslStatDecryptedBytesIn` | `By/s` | device | The total decrypted bytes received |\n| `snmp.device_prof_sysClientsslStatDecryptedBytesOut` | `By/s` | device | The total decrypted bytes sent |\n| `snmp.device_prof_sysClientsslStatEncryptedBytesIn` | `By/s` | device | The total encrypted bytes received |\n| `snmp.device_prof_sysClientsslStatEncryptedBytesOut` | `By/s` | device | The total encrypted bytes sent |\n| `snmp.device_prof_sysClientsslStatHandshakeFailures` | `{connection}/s` | device | The total number of handshake failures |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_sysTcpStatAcceptfails` | `{connection}/s` | device | The number of connections not accepted |\n| `snmp.device_prof_sysTcpStatAccepts` | `{connection}/s` | device | The number of connections accepted |\n| `snmp.device_prof_sysTcpStatCloseWait` | `{connection}` | device | The number of current connections in CLOSE-WAIT/LAST-ACK |\n| `snmp.device_prof_sysTcpStatConnects` | `{connection}/s` | device | The number of connections established |\n| `snmp.device_prof_sysTcpStatConnfails` | `{connection}/s` | device | The number of connections failures |\n| `snmp.device_prof_sysTcpStatFinWait` | `{connection}` | device | The number of current connections in FIN-WAIT/CLOSING |\n| `snmp.device_prof_sysTcpStatOpen` | `{connection}` | device | The number of current open connections |\n| `snmp.device_prof_sysTcpStatTimeWait` | `{connection}` | device | The number of current connections in TIME-WAIT |\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_sysUdpStatAcceptfails` | `{connection}/s` | device | The number of connections not accepted |\n| `snmp.device_prof_sysUdpStatAccepts` | `{connection}/s` | device | The number of connections accepted |\n| `snmp.device_prof_sysUdpStatConnects` | `{connection}/s` | device | The number of connections established |\n| `snmp.device_prof_sysUdpStatConnfails` | `{connection}/s` | device | The number of connections failures |\n| `snmp.device_prof_sysUdpStatOpen` | `{connection}` | device | The number of current open connections |\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu | The current CPU utilization |\n| `snmp.device_prof_sysMultiHostCpuIdle` | `%` | per cpu_id | The average time spent by the specified processor doing nothing for the associated host |\n| `snmp.device_prof_sysMultiHostCpuIowait` | `%` | per cpu_id | The average time spent by the specified processor waiting for external I/O to complete for the associated host |\n| `snmp.device_prof_sysMultiHostCpuIrq` | `%` | per cpu_id | The average time spent by the specified processor servicing hardware interrupts for the associated host |\n| `snmp.device_prof_sysMultiHostCpuNice` | `%` | per cpu_id | The average time spent by the specified processor running niced processes for the associated host |\n| `snmp.device_prof_sysMultiHostCpuSoftirq` | `%` | per cpu_id | The average time spent by the specified processor servicing soft interrupts for the associated host |\n| `snmp.device_prof_sysMultiHostCpuSystem` | `%` | per cpu_id | The average time spent by the specified processor servicing system calls for the associated host |\n| `snmp.device_prof_sysMultiHostCpuUser` | `%` | per cpu_id | The average time spent by the specified processor in user context for the associated host |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_total` | `By` | device | The total memory available in bytes for TMM (Traffic Management Module) |\n| `snmp.device_prof_memory_used` | `By` | device | The memory in use in bytes for TMM (Traffic Management Module) |\n| `snmp.device_prof_sysGlobalHostOtherMemoryTotal` | `By` | device | The total other non-TMM memory in bytes for the system |\n| `snmp.device_prof_sysGlobalHostOtherMemoryUsed` | `By` | device | The other non-TMM memory in bytes currently in use for the system |\n| `snmp.device_prof_sysGlobalHostSwapTotal` | `By` | device | The total swap in bytes for the system |\n| `snmp.device_prof_sysGlobalHostSwapUsed` | `By` | device | The swap in bytes currently in use for the system |\n| `snmp.device_prof_sysGlobalTmmStatMemoryTotal` | `By` | device | The total memory available in bytes for TMM (Traffic Management Module) |\n| `snmp.device_prof_sysGlobalTmmStatMemoryUsed` | `By` | device | The memory in use in bytes for TMM (Traffic Management Module) |\n| `snmp.device_prof_sysStatMemoryTotal` | `By` | device | The total memory available in bytes for TMM (Traffic Management Module) |\n| `snmp.device_prof_sysStatMemoryUsed` | `By` | device | The memory in use in bytes for TMM (Traffic Management Module) |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-F5_BIG_IP",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Fireeye",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["fireeye","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Fireeye\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Fireeye (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **fireeye.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Fireeye via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Fireeye profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**30 metrics** in 16 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Disk | 1 |\n| Hardware / Fan | 1 |\n| Hardware / Power | 1 |\n| Hardware / RAID | 1 |\n| Hardware / Temperature | 1 |\n| Network / Interface | 4 |\n| Security / Attachment | 3 |\n| Security / Email | 5 |\n| Security / Object | 2 |\n| Security / Quarantine | 1 |\n| Security / URL | 3 |\n| System / Activity | 2 |\n| System / CPU | 1 |\n| System / License | 1 |\n| System / Uptime | 1 |\n| Uncategorized | 2 |\n\n### Hardware / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fePhysicalDiskIsHealthy` | `{status}` | per fe_physical_disk_name | Whether a physical disk is healthy |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_feFanOverallIsHealthy` | `{status}` | device | Whether or not fan is healthy overall |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fePowerSupplyOverallIsHealthy` | `{status}` | device | Whether or not power supply is healthy overall |\n\n### Hardware / RAID\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_feRaidIsHealthy` | `{status}` | device | Whether or not RAID is healthy overall |\n\n### Hardware / Temperature\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_feIsTemperatureNormal` | `{status}` | device | Whether or not the temperature is normal |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Security / Attachment\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_feAnalyzedAttachmentCount` | `{attachment}/s` | device | Cumulative count of all attachments analyzed for maliciousness |\n| `snmp.device_prof_feInfectedAttachmentCount` | `{attachment}/s` | device | Count of all attachments determined to be malicious |\n| `snmp.device_prof_feTotalAttachmentCount` | `{attachment}/s` | device | Count of all attachments received whether processed or not |\n\n### Security / Email\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_feAnalyzedEmailCount` | `{email}/s` | device | Cumulative count of all emails analyzed |\n| `snmp.device_prof_feDeferredEmailCount` | `{email}` | device | Count of deferred emails representing current snapshot value |\n| `snmp.device_prof_feHoldQueueEmailCount` | `{email}` | device | Count of emails in the hold queue representing current snapshot value |\n| `snmp.device_prof_feInfectedEmailCount` | `{email}/s` | device | Count of all emails determined to be malicious |\n| `snmp.device_prof_feTotalEmailCount` | `{email}/s` | device | Count of all emails coming into postfix including those without URL or attachment |\n\n### Security / Object\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_feTotalMaliciousObjectCount` | `{object}/s` | device | Count of all malicious samples detected |\n| `snmp.device_prof_feTotalObjectAnalyzedCount` | `{object}/s` | device | Count of all objects analyzed including all children of any samples |\n\n### Security / Quarantine\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_feeQuarantineUsage` | `%` | device | Consumed capacity as percentage of max capacity |\n\n### Security / URL\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_feAnalyzedUrlCount` | `{url}/s` | device | Cumulative count of all URLs analyzed |\n| `snmp.device_prof_feInfectedUrlCount` | `{url}/s` | device | Count of all URLs determined to be malicious |\n| `snmp.device_prof_feTotalUrlCount` | `{url}/s` | device | Count of all URLs received whether processed or not |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / License\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_feProductLicenseActive` | `{status}` | device | Whether the product license is active |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Fireeye",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Fortinet",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"fortinet.svg"},keywords:["fortinet","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Fortinet\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Fortinet (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 2 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **fortinet.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Fortinet via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Fortinet profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**5 metrics** in 2 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Fortinet",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Fortinet Appliance",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"fortinet.svg"},keywords:["fortinet","appliance","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Fortinet Appliance\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Fortinet Appliance (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 64 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **fortinet-appliance.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Fortinet Appliance via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Fortinet Appliance profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**31 metrics** in 10 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Sensor | 1 |\n| Network / Interface | 4 |\n| Security / Device | 7 |\n| Security / Log | 1 |\n| Storage / RAID | 6 |\n| System / CPU | 2 |\n| System / Disk | 2 |\n| System / HA | 5 |\n| System / Memory | 2 |\n| System / Uptime | 1 |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fmSensorEntState` | `{status}` | per fm_sensor_ent_name, fm_sensor_ent_type | Sensor status |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Security / Device\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fmDeviceEntConfigState` | `{status}` | per fm_device_ent_index | Device config status |\n| `snmp.device_prof_fmDeviceEntConnectState` | `{status}` | per fm_device_ent_index | Device connection status |\n| `snmp.device_prof_fmDeviceEntDbState` | `{status}` | per fm_device_ent_index | Device database status |\n| `snmp.device_prof_fmDeviceEntHaMode` | `{status}` | per fm_device_ent_index | Device high availability mode |\n| `snmp.device_prof_fmDeviceEntMode` | `{status}` | per fm_device_ent_index | Device management mode |\n| `snmp.device_prof_fmDeviceEntState` | `{status}` | per fm_device_ent_index | Device status |\n| `snmp.device_prof_fmDeviceEntSupportState` | `{status}` | per fm_device_ent_index | The support status of the device |\n\n### Security / Log\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fmLogRate` | `{log}/s` | device | Log receiving rate in number of logs per second |\n\n### Storage / RAID\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fmRaidDiskEntSize` | `By` | per fm_raid_disk_ent_index | Raid disk size in GB |\n| `snmp.device_prof_fmRaidDiskEntState` | `{status}` | per fm_raid_disk_ent_index | Raid disk status |\n| `snmp.device_prof_fmRaidDiskNumber` | `{disk}` | device | Disk numbers in the Raid |\n| `snmp.device_prof_fmRaidLevel` | `{status}` | device | RAID Level |\n| `snmp.device_prof_fmRaidSize` | `By` | device | Raid size in GB |\n| `snmp.device_prof_fmRaidState` | `{status}` | device | RAID Status |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n| `snmp.device_prof_fmSysCpuUsageExcludedNice` | `%` | device | Current CPU usage excluded nice processes usage (percentage) |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fmSysDiskCapacity` | `By` | device | Total hard disk capacity |\n| `snmp.device_prof_fmSysDiskUsage` | `By` | device | Current hard disk usage |\n\n### System / HA\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fmHaClusterId` | `1` | device | Ha cluster ID |\n| `snmp.device_prof_fmHaMode` | `{status}` | device | High availability mode |\n| `snmp.device_prof_fmHaPeerEntEnabled` | `{status}` | per fm_ha_peer_ent_index | Whether peer is enabled |\n| `snmp.device_prof_fmHaPeerEntState` | `{status}` | per fm_ha_peer_ent_index | Peer status |\n| `snmp.device_prof_fmHaPeerNumber` | `{peer}` | device | Peer numbers in the Ha |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_total` | `By` | device | Total physical and swap memory installed |\n| `snmp.device_prof_memory_used` | `By` | device | Current memory used |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Fortinet_Appliance",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Fortinet Fortigate",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"fortinet.svg"},keywords:["fortinet","fortigate","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Fortinet Fortigate\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Fortinet Fortigate (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **fortinet-fortigate.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Fortinet Fortigate via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Fortinet Fortigate profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**93 metrics** in 16 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Sensor | 2 |\n| Network / Interface | 4 |\n| Network / LinkMonitor | 6 |\n| Network / SD-WAN | 6 |\n| Network / VPN | 13 |\n| Network / Wireless | 13 |\n| Security / Firewall | 4 |\n| Security / Proxy | 2 |\n| Security / Session | 10 |\n| Security / VirtualDomain | 8 |\n| System / CPU | 1 |\n| System / Disk | 2 |\n| System / HA | 10 |\n| System / Memory | 4 |\n| System / Processor | 7 |\n| System / Uptime | 1 |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fgHwSensorEntAlarmStatus` | `{status}` | per sensor_index, rm:sensor_name | Hardware sensor alarm status |\n| `snmp.device_prof_fgHwSensorEntValue` | `1` | per sensor_index, rm:sensor_name | Hardware sensor reading |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / LinkMonitor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fgLinkMonitorJitter` | `ms` | per link_monitor | Average jitter of link monitor probe |\n| `snmp.device_prof_fgLinkMonitorLatency` | `ms` | per link_monitor | Average latency of link monitor probe |\n| `snmp.device_prof_fgLinkMonitorPacketLoss` | `%` | per link_monitor | Packet loss percentage of link monitor probe |\n| `snmp.device_prof_fgLinkMonitorPacketRecv` | `{packet}/s` | per link_monitor | Packets received by link monitor probe |\n| `snmp.device_prof_fgLinkMonitorPacketSend` | `{packet}/s` | per link_monitor | Packets sent by link monitor probe |\n| `snmp.device_prof_fgLinkMonitorState` | `{status}` | per link_monitor | Link monitor gateway probe state |\n\n### Network / SD-WAN\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fgVWLHealthCheckLinkJitter` | `ms` | per sdwan_healthcheck | Average jitter of SD-WAN health-check link within last 30 probes |\n| `snmp.device_prof_fgVWLHealthCheckLinkLatency` | `ms` | per sdwan_healthcheck | Average latency of SD-WAN health-check link within last 30 probes |\n| `snmp.device_prof_fgVWLHealthCheckLinkPacketLoss` | `%` | per sdwan_healthcheck | Packet loss percentage of SD-WAN health-check link within last 30 probes |\n| `snmp.device_prof_fgVWLHealthCheckLinkPacketRecv` | `{packet}/s` | per sdwan_healthcheck | Packets received per second by SD-WAN health-check on this link |\n| `snmp.device_prof_fgVWLHealthCheckLinkPacketSend` | `{packet}/s` | per sdwan_healthcheck | Packets sent per second by SD-WAN health-check on this link |\n| `snmp.device_prof_fgVWLHealthCheckLinkState` | `{status}` | per sdwan_healthcheck | SD-WAN health-check link state |\n\n### Network / VPN\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fgVpnSslState` | `{status}` | per vdom_index | Whether SSL VPN is enabled on this VDOM |\n| `snmp.device_prof_fgVpnSslStatsActiveTunnels` | `{tunnel}` | per vdom_index | Number of active SSL VPN tunnels |\n| `snmp.device_prof_fgVpnSslStatsActiveWebSessions` | `{session}` | per vdom_index | Number of active SSL VPN web sessions |\n| `snmp.device_prof_fgVpnSslStatsLoginUsers` | `{user}` | per vdom_index | Number of current logged-in SSL VPN users |\n| `snmp.device_prof_fgVpnSslStatsMaxTunnels` | `{tunnel}` | per vdom_index | Maximum number of SSL VPN tunnels allowed |\n| `snmp.device_prof_fgVpnSslStatsMaxUsers` | `{user}` | per vdom_index | Maximum number of SSL VPN users allowed |\n| `snmp.device_prof_fgVpnSslStatsMaxWebSessions` | `{session}` | per vdom_index | Maximum number of SSL VPN web sessions allowed |\n| `snmp.device_prof_fgVpnTunEntInOctets` | `bit/s` | per vpn_tunnel_name, phase_2_name, vdom | Number of bytes received on tunnel |\n| `snmp.device_prof_fgVpnTunEntLifeBytes` | `By` | per vpn_tunnel_name, phase_2_name, vdom | Remaining lifetime of this tunnel in bytes |\n| `snmp.device_prof_fgVpnTunEntLifeSecs` | `s` | per vpn_tunnel_name, phase_2_name, vdom | Remaining lifetime of this tunnel in seconds |\n| `snmp.device_prof_fgVpnTunEntOutOctets` | `bit/s` | per vpn_tunnel_name, phase_2_name, vdom | Number of bytes sent out on tunnel |\n| `snmp.device_prof_fgVpnTunEntStatus` | `{status}` | per vpn_tunnel_name, phase_2_name, vdom | Current status of tunnel (up or down) |\n| `snmp.device_prof_fgVpnTunnelUpCount` | `{tunnel}` | device | Total number of active IPSec VPN tunnels |\n\n### Network / Wireless\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fgWcInfoStationCapacity` | `{station}` | device | Maximum number of wireless client stations supported |\n| `snmp.device_prof_fgWcInfoStationCount` | `{station}` | device | Number of wireless client stations currently connected |\n| `snmp.device_prof_fgWcInfoWtpCapacity` | `{ap}` | device | Maximum number of wireless access points this controller can manage |\n| `snmp.device_prof_fgWcInfoWtpManaged` | `{ap}` | device | Number of wireless access points managed by this controller |\n| `snmp.device_prof_fgWcInfoWtpSessions` | `{ap}` | device | Number of wireless access points currently connecting to this controller |\n| `snmp.device_prof_fgWcWtpSessionConnectionState` | `{status}` | per wtp_id | Wireless access point connection state to controller |\n| `snmp.device_prof_fgWcWtpSessionWtpByteRxCount` | `bit/s` | per wtp_id | Traffic received by this wireless access point |\n| `snmp.device_prof_fgWcWtpSessionWtpByteTxCount` | `bit/s` | per wtp_id | Traffic transmitted by this wireless access point |\n| `snmp.device_prof_fgWcWtpSessionWtpCpuUsage` | `%` | per wtp_id | Current CPU usage of the wireless access point |\n| `snmp.device_prof_fgWcWtpSessionWtpMemoryCapacity` | `By` | per wtp_id | Total physical memory installed on the wireless access point |\n| `snmp.device_prof_fgWcWtpSessionWtpMemoryUsage` | `%` | per wtp_id | Current memory usage of the wireless access point |\n| `snmp.device_prof_fgWcWtpSessionWtpStationCount` | `{station}` | per wtp_id | Number of client stations currently connected to this access point |\n| `snmp.device_prof_fgWcWtpSessionWtpUpTime` | `s` | per wtp_id | Time since the wireless access point last booted |\n\n### Security / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fgFwPol6ByteCount` | `By/s` | per virtualdomain_index, policy6_index | Number of bytes in packets matching firewall policy6 |\n| `snmp.device_prof_fgFwPol6PktCount` | `{packet}/s` | per virtualdomain_index, policy6_index | Number of packets matched to firewall policy6 |\n| `snmp.device_prof_fgFwPolByteCount` | `By/s` | per virtualdomain_index, policy_index | Number of bytes in packets matching firewall policy |\n| `snmp.device_prof_fgFwPolPktCount` | `{packet}/s` | per virtualdomain_index, policy_index | Number of packets matched to firewall policy |\n\n### Security / Proxy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fgApHTTPConnections` | `{connection}` | device | Current number of HTTP proxy connections |\n| `snmp.device_prof_fgApHTTPMaxConnections` | `{connection}` | device | Maximum number of connections supported by HTTP proxy |\n\n### Security / Session\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fgSysSes6Count` | `{session}` | device | Number of active IPv6 sessions on the device |\n| `snmp.device_prof_fgSysSes6Rate1` | `{session}/s` | device | Average IPv6 session setup rate over the past minute |\n| `snmp.device_prof_fgSysSes6Rate10` | `{session}/s` | device | Average IPv6 session setup rate over the past 10 minutes |\n| `snmp.device_prof_fgSysSes6Rate30` | `{session}/s` | device | Average IPv6 session setup rate over the past 30 minutes |\n| `snmp.device_prof_fgSysSes6Rate60` | `{session}/s` | device | Average IPv6 session setup rate over the past 60 minutes |\n| `snmp.device_prof_fgSysSesCount` | `{session}` | device | Number of active sessions on the device |\n| `snmp.device_prof_fgSysSesRate1` | `{session}/s` | device | Average session setup rate over the past minute |\n| `snmp.device_prof_fgSysSesRate10` | `{session}/s` | device | Average session setup rate over the past 10 minutes |\n| `snmp.device_prof_fgSysSesRate30` | `{session}/s` | device | Average session setup rate over the past 30 minutes |\n| `snmp.device_prof_fgSysSesRate60` | `{session}/s` | device | Average session setup rate over the past 60 minutes |\n\n### Security / VirtualDomain\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fgVdEntCpuUsage` | `%` | per virtualdomain_index, virtualdomain_name | CPU usage of the virtual domain |\n| `snmp.device_prof_fgVdEntHaState` | `{status}` | per virtualdomain_index, virtualdomain_name | HA cluster member state of the virtual domain |\n| `snmp.device_prof_fgVdEntMemUsage` | `%` | per virtualdomain_index, virtualdomain_name | Memory usage of the virtual domain |\n| `snmp.device_prof_fgVdEntOpMode` | `{status}` | per virtualdomain_index, virtualdomain_name | Operation mode of the virtual domain |\n| `snmp.device_prof_fgVdEntSesCount` | `{session}` | per virtualdomain_index, virtualdomain_name | Number of active sessions on the virtual domain |\n| `snmp.device_prof_fgVdEntSesRate` | `{session}/s` | per virtualdomain_index, virtualdomain_name | Session setup rate on the virtual domain |\n| `snmp.device_prof_fgVdMaxVdoms` | `{domain}` | device | Maximum number of virtual domains allowed on the device |\n| `snmp.device_prof_fgVdNumber` | `{domain}` | device | Number of virtual domains in vdTable |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fgSysDiskCapacity` | `By` | device | Total hard disk capacity |\n| `snmp.device_prof_fgSysDiskUsage` | `By` | device | Current hard disk usage |\n\n### System / HA\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fgHaStatsAvCount` | `{event}/s` | per ha_node_index | Antivirus events detected by the HA cluster member |\n| `snmp.device_prof_fgHaStatsByteCount` | `bit/s` | per ha_node_index | Network bandwidth processed by the HA cluster member |\n| `snmp.device_prof_fgHaStatsCpuUsage` | `%` | per ha_node_index | CPU usage of the HA cluster member |\n| `snmp.device_prof_fgHaStatsIdsCount` | `{event}/s` | per ha_node_index | IPS events detected by the HA cluster member |\n| `snmp.device_prof_fgHaStatsMemUsage` | `%` | per ha_node_index | Memory usage of the HA cluster member |\n| `snmp.device_prof_fgHaStatsNetUsage` | `bit/s` | per ha_node_index | Network bandwidth usage of the HA cluster member |\n| `snmp.device_prof_fgHaStatsPktCount` | `{packet}/s` | per ha_node_index | Packets processed by the HA cluster member |\n| `snmp.device_prof_fgHaStatsSesCount` | `{session}` | per ha_node_index | Active session count on the HA cluster member |\n| `snmp.device_prof_fgHaStatsSyncStatus` | `{status}` | per ha_node_index | Configuration sync status of the HA cluster member |\n| `snmp.device_prof_fgHaSystemMode` | `{status}` | device | HA system operating mode |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fgSysLowMemCapacity` | `By` | device | Total low memory capacity |\n| `snmp.device_prof_fgSysLowMemUsage` | `%` | device | Current low memory utilization |\n| `snmp.device_prof_fgSysMemCapacity` | `By` | device | Total physical memory installed |\n| `snmp.device_prof_fgSysMemUsage` | `%` | device | Current memory utilization |\n\n### System / Processor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fgProcessorPktDroppedCount` | `{drop}/s` | per processor_index | Number of packets dropped by this processor |\n| `snmp.device_prof_fgProcessorPktRxCount` | `{packet}/s` | per processor_index | Number of packets received by this processor |\n| `snmp.device_prof_fgProcessorPktTxCount` | `{packet}/s` | per processor_index | Number of packets transmitted by this processor |\n| `snmp.device_prof_fgProcessorSysUsage` | `%` | per processor_index | Processor CPU system space usage averaged over last minute |\n| `snmp.device_prof_fgProcessorUsage` | `%` | per processor_index | Processor CPU usage averaged over last minute |\n| `snmp.device_prof_fgProcessorUsage5sec` | `%` | per processor_index | Processor CPU usage 5-second average |\n| `snmp.device_prof_fgProcessorUserUsage` | `%` | per processor_index | Processor CPU user space usage averaged over last minute |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Fortinet_Fortigate",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Fortinet Fortiswitch",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"fortinet.svg"},keywords:["fortinet","fortiswitch","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Fortinet Fortiswitch\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Fortinet Fortiswitch (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 4 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **fortinet-fortiswitch.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Fortinet Fortiswitch via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Fortinet Fortiswitch profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**10 metrics** in 5 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Disk | 2 |\n| System / Memory | 2 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fsSysDiskCapacity` | `By` | device | Total hard disk capacity |\n| `snmp.device_prof_fsSysDiskUsage` | `By` | device | Current hard disk usage |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_total` | `By` | device | Total physical memory installed |\n| `snmp.device_prof_memory_used` | `By` | device | Current system memory usage |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Fortinet_Fortiswitch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Fortinet Licensing",link:"",categories:["network-performance-monitoring.licensing"],icon_filename:"fortinet.svg"},keywords:["fortinet","license","licensing","entitlement","expiry","snmp","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Fortinet Licensing\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nTrack license state, entitlements, and expiry on Fortinet devices over SNMP with Netdata.\n\nNetdata reads Fortinet licensing telemetry (state, usage, and expiry timers) exposed over SNMP and normalizes it into per-device licensing charts and the `snmp:licenses` function.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDetected automatically for Fortinet devices that expose licensing telemetry.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",integration_type:"device",id:"go.d.plugin-snmp-Fortinet_Licensing",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Generic BGP (BGP4-MIB)",link:"",categories:["network-performance-monitoring.bgp"],icon_filename:"SNMP.png"},keywords:["bgp","bgp4-mib","snmp","routing","peering","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Generic BGP (BGP4-MIB)\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor BGP peering and routing health on any device that implements the standard BGP4-MIB, over SNMP with Netdata.\n\nNetdata polls the standard BGP4-MIB peer table via SNMP and exposes per-peer state and counters.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAvailable on any SNMP device that exposes the standard BGP4-MIB.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",integration_type:"device",id:"go.d.plugin-snmp-Generic_BGP_(BGP4-MIB)",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Generic SNMP Device",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["generic","snmp","device","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Generic SNMP Device\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Generic SNMP Device (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **generic-device.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Generic SNMP Device via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Generic SNMP Device profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**93 metrics** in 9 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / IP | 28 |\n| Network / Interface | 31 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / Activity | 2 |\n| System / CPU | 1 |\n| System / Uptime | 1 |\n| Uncategorized | 2 |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Generic_SNMP_Device",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Generic UPS (UPS-MIB)",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["generic","ups","(ups-mib)","snmp","ups","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Generic UPS (UPS-MIB)\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Generic UPS (UPS-MIB) (ups) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **generic-ups.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Generic UPS (UPS-MIB) via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Generic UPS (UPS-MIB) profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**30 metrics** in 8 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Battery | 4 |\n| PowerFlow / Bypass | 5 |\n| PowerFlow / Input | 6 |\n| PowerFlow / Output | 7 |\n| System / Alarm | 2 |\n| System / Battery | 3 |\n| System / Test | 2 |\n| System / Uptime | 1 |\n\n### Hardware / Battery\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_upsBatteryCurrent` | `A` | device | The present battery current |\n| `snmp.device_prof_upsBatteryStatus` | `{status}` | device | The indication of the capacity remaining in the UPS system's batteries |\n| `snmp.device_prof_upsBatteryTemperature` | `Cel` | device | The ambient temperature at or near the UPS Battery casing |\n| `snmp.device_prof_upsBatteryVoltage` | `V` | device | The magnitude of the present battery voltage |\n\n### PowerFlow / Bypass\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_upsBypassCurrent` | `A` | per ups_bypass_line_index | The present bypass current |\n| `snmp.device_prof_upsBypassFrequency` | `Hz` | device | The present bypass frequency |\n| `snmp.device_prof_upsBypassNumLines` | `{line}` | device | The number of bypass lines utilized in this device. This entry indicates the number of rows in the bypass table |\n| `snmp.device_prof_upsBypassPower` | `W` | per ups_bypass_line_index | The present true power conveyed by the bypass |\n| `snmp.device_prof_upsBypassVoltage` | `V` | per ups_bypass_line_index | The present bypass voltage |\n\n### PowerFlow / Input\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_upsInputCurrent` | `A` | per ups_input_line_index | The magnitude of the present input current |\n| `snmp.device_prof_upsInputFrequency` | `Hz` | per ups_input_line_index | The present input frequency |\n| `snmp.device_prof_upsInputLineBads` | `{transition}` | device | A count of the number of times the input entered an out-of-tolerance condition as defined by the manufacturer. This count is incre\u2026 |\n| `snmp.device_prof_upsInputNumLines` | `{line}` | device | The number of input lines utilized in this device. This variable indicates the number of rows in the input table |\n| `snmp.device_prof_upsInputTruePower` | `W` | per ups_input_line_index | The magnitude of the present input true power |\n| `snmp.device_prof_upsInputVoltage` | `V` | per ups_input_line_index | The magnitude of the present input voltage |\n\n### PowerFlow / Output\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_upsOutputCurrent` | `A` | per ups_output_line_index | The present output current |\n| `snmp.device_prof_upsOutputFrequency` | `Hz` | device | The present output frequency |\n| `snmp.device_prof_upsOutputNumLines` | `{line}` | device | The number of output lines utilized in this device. This variable indicates the number of rows in the output table |\n| `snmp.device_prof_upsOutputPercentLoad` | `%` | per ups_output_line_index | The percentage of the UPS power capacity presently being used on this output line |\n| `snmp.device_prof_upsOutputPower` | `W` | per ups_output_line_index | The present output true power |\n| `snmp.device_prof_upsOutputSource` | `{status}` | device | The present source of output power |\n| `snmp.device_prof_upsOutputVoltage` | `V` | per ups_output_line_index | The present output voltage |\n\n### System / Alarm\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_upsAlarmTime` | `s` | per ups_alarm_descr | The value of sysUpTime when the alarm condition was detected. If the alarm condition was detected at the time of agent startup and\u2026 |\n| `snmp.device_prof_upsAlarmsPresent` | `{alarm}` | device | The present number of active alarm conditions |\n\n### System / Battery\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_upsEstimatedChargeRemaining` | `%` | device | An estimate of the battery charge remaining expressed as a percent of full charge |\n| `snmp.device_prof_upsEstimatedMinutesRemaining` | `min` | device | An estimate of the time to battery charge depletion under the present load conditions if the utility power is off and remains off,\u2026 |\n| `snmp.device_prof_upsSecondsOnBattery` | `s` | device | If the unit is on battery power, the elapsed time since the UPS last switched to battery power, or the time since the network mana\u2026 |\n\n### System / Test\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_upsTestResultsSummary` | `{status}` | device | The results of the current or last UPS diagnostics test performed |\n| `snmp.device_prof_upsTestStartTime` | `s` | device | The value of sysUpTime at the time the test in progress was initiated, or, if no test is in progress, the time the previous test w\u2026 |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Generic_UPS_(UPS-MIB)",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Gigamon",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["gigamon","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Gigamon\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Gigamon (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **gigamon.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Gigamon via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Gigamon profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**6 metrics** in 3 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpuUtilization` | `%` | device | Cpu usage |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Gigamon",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"HPE Bladesystem Enclosure",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"hp.svg"},keywords:["hpe","bladesystem","enclosure","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# HPE Bladesystem Enclosure\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor HPE Bladesystem Enclosure (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **hpe-bladesystem-enclosure.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as HPE Bladesystem Enclosure via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this HPE Bladesystem Enclosure profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**65 metrics** in 12 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / EnclosureManager | 4 |\n| Hardware / Fan | 3 |\n| Hardware / Fuse | 2 |\n| Hardware / Power | 7 |\n| Hardware / PowerEnclosure | 4 |\n| Hardware / Sensor | 2 |\n| Hardware / ServerBlade | 10 |\n| Network / Interface | 4 |\n| System / CPU | 2 |\n| System / Disk | 15 |\n| System / Memory | 11 |\n| System / Uptime | 1 |\n\n### Hardware / EnclosureManager\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqRackCommonEnclosureManagerCondition` | `{status}` | per cpq_rack_common_enclosure_manager_enclosure_rack, cpq_rack_common_enclosure_manager_enclosure_chassis, cpq_rack_common_enclosure_manager_enclosure_index | The condition of the manager |\n| `snmp.device_prof_cpqRackCommonEnclosureManagerPresent` | `{status}` | per cpq_rack_common_enclosure_manager_enclosure_rack, cpq_rack_common_enclosure_manager_enclosure_chassis, cpq_rack_common_enclosure_manager_enclosure_index | This specifies if the manager described is present in the system |\n| `snmp.device_prof_cpqRackCommonEnclosureManagerRedundant` | `{status}` | per cpq_rack_common_enclosure_manager_enclosure_rack, cpq_rack_common_enclosure_manager_enclosure_chassis, cpq_rack_common_enclosure_manager_enclosure_index | This specifies if the manager is in a redundant configuration |\n| `snmp.device_prof_cpqRackCommonEnclosureManagerRole` | `{status}` | per cpq_rack_common_enclosure_manager_enclosure_rack, cpq_rack_common_enclosure_manager_enclosure_chassis, cpq_rack_common_enclosure_manager_enclosure_index | This specifies the current role of the manager |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqRackCommonEnclosureFanCondition` | `{status}` | per cpq_rack_common_enclosure_fan_rack, cpq_rack_common_enclosure_fan_chassis, cpq_rack_common_enclosure_fan_index | The condition of the fan |\n| `snmp.device_prof_cpqRackCommonEnclosureFanPresent` | `{status}` | per cpq_rack_common_enclosure_fan_rack, cpq_rack_common_enclosure_fan_chassis, cpq_rack_common_enclosure_fan_index | This specifies if the fan described is present in the system |\n| `snmp.device_prof_cpqRackCommonEnclosureFanRedundant` | `{status}` | per cpq_rack_common_enclosure_fan_rack, cpq_rack_common_enclosure_fan_chassis, cpq_rack_common_enclosure_fan_index | This specifies if the fan is in a redundant configuration |\n\n### Hardware / Fuse\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqRackCommonEnclosureFuseCondition` | `{status}` | per cpq_rack_common_enclosure_fuse_rack, cpq_rack_common_enclosure_fuse_chassis, cpq_rack_common_enclosure_fuse_index, cpq_rack_common_enclosure_fuse_enclosure_name, cpq_rack_common_enclosure_fuse_location | The condition of the fuse |\n| `snmp.device_prof_cpqRackCommonEnclosureFusePresent` | `{status}` | per cpq_rack_common_enclosure_fuse_rack, cpq_rack_common_enclosure_fuse_chassis, cpq_rack_common_enclosure_fuse_index, cpq_rack_common_enclosure_fuse_enclosure_name, cpq_rack_common_enclosure_fuse_location | This specifies if the fuse described is present in the system |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqRackPowerSupplyCondition` | `{status}` | per cpq_rack_power_supply_enclosure_rack, cpq_rack_power_supply_enclosure_chassis, cpq_rack_power_supply_enclosure_index | The condition of the power supply |\n| `snmp.device_prof_cpqRackPowerSupplyCurPwrOutput` | `W` | per cpq_rack_power_supply_enclosure_rack, cpq_rack_power_supply_enclosure_chassis, cpq_rack_power_supply_enclosure_index | The current power output of the power supply in watts |\n| `snmp.device_prof_cpqRackPowerSupplyExhaustTemp` | `Cel` | per cpq_rack_power_supply_enclosure_rack, cpq_rack_power_supply_enclosure_chassis, cpq_rack_power_supply_enclosure_index | The current air temperature at the exhaust of the power supply in degrees celsius |\n| `snmp.device_prof_cpqRackPowerSupplyInputLineStatus` | `{status}` | per cpq_rack_power_supply_enclosure_rack, cpq_rack_power_supply_enclosure_chassis, cpq_rack_power_supply_enclosure_index | The status of line input power |\n| `snmp.device_prof_cpqRackPowerSupplyIntakeTemp` | `Cel` | per cpq_rack_power_supply_enclosure_rack, cpq_rack_power_supply_enclosure_chassis, cpq_rack_power_supply_enclosure_index | The current air temperature at the intake of the power supply in degrees celsius |\n| `snmp.device_prof_cpqRackPowerSupplyPresent` | `{status}` | per cpq_rack_power_supply_enclosure_rack, cpq_rack_power_supply_enclosure_chassis, cpq_rack_power_supply_enclosure_index | This specifies if the power supply described is present in the enclosure |\n| `snmp.device_prof_cpqRackPowerSupplyStatus` | `{status}` | per cpq_rack_power_supply_enclosure_rack, cpq_rack_power_supply_enclosure_chassis, cpq_rack_power_supply_enclosure_index | The status of the power supply |\n\n### Hardware / PowerEnclosure\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqRackPowerEnclosureBladeAutopoweron` | `{status}` | per cpq_rack_power_enclosure_rack, cpq_rack_power_enclosure_index, cpq_rack_power_enclosure_input_pwr_type | This indicates current condition of the power enclosure |\n| `snmp.device_prof_cpqRackPowerEnclosureCondition` | `{status}` | per cpq_rack_power_enclosure_rack, cpq_rack_power_enclosure_index, cpq_rack_power_enclosure_input_pwr_type | This indicates current condition of the power enclosure |\n| `snmp.device_prof_cpqRackPowerEnclosureLoadBalanced` | `{status}` | per cpq_rack_power_enclosure_rack, cpq_rack_power_enclosure_index, cpq_rack_power_enclosure_input_pwr_type | This indicates if the power supply enclosure is in a load balanced state |\n| `snmp.device_prof_cpqRackPowerEnclosureRedundant` | `{status}` | per cpq_rack_power_enclosure_rack, cpq_rack_power_enclosure_index, cpq_rack_power_enclosure_input_pwr_type | This indicates if the power supply enclosure is in a redundant state |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqRackCommonEnclosureTempCondition` | `{status}` | per cpq_rack_common_enclosure_temp_rack, cpq_rack_common_enclosure_temp_chassis, cpq_rack_common_enclosure_temp_sensor_index, cpq_rack_common_enclosure_temp_sensor_enclosure_name, cpq_rack_common_enclosure_temp_location, cpq_rack_common_enclosure_temp_type | The Temperature sensor condition |\n| `snmp.device_prof_cpqRackCommonEnclosureTempCurrent` | `Cel` | per cpq_rack_common_enclosure_temp_rack, cpq_rack_common_enclosure_temp_chassis, cpq_rack_common_enclosure_temp_sensor_index, cpq_rack_common_enclosure_temp_sensor_enclosure_name, cpq_rack_common_enclosure_temp_location, cpq_rack_common_enclosure_temp_type | This is the current temperature sensor reading in degrees celsius |\n\n### Hardware / ServerBlade\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqRackServerBladeFaultMajor` | `{fault_code}` | per cpq_rack_server_blade_rack, cpq_rack_server_blade_chassis, cpq_rack_server_blade_index | The major fault code of the blade fault reported by the enclosure manager |\n| `snmp.device_prof_cpqRackServerBladeFaultMinor` | `{fault_code}` | per cpq_rack_server_blade_rack, cpq_rack_server_blade_chassis, cpq_rack_server_blade_index | The minor fault code of the blade fault reported by the enclosure manager |\n| `snmp.device_prof_cpqRackServerBladeHasFuses` | `{status}` | per cpq_rack_server_blade_rack, cpq_rack_server_blade_chassis, cpq_rack_server_blade_index | This specifies if the server blade contains fuses |\n| `snmp.device_prof_cpqRackServerBladePOSTStatus` | `{status}` | per cpq_rack_server_blade_rack, cpq_rack_server_blade_chassis, cpq_rack_server_blade_index | Blade server power-on self test (POST) status |\n| `snmp.device_prof_cpqRackServerBladePowered` | `{status}` | per cpq_rack_server_blade_rack, cpq_rack_server_blade_chassis, cpq_rack_server_blade_index | The power state of the blade |\n| `snmp.device_prof_cpqRackServerBladePresent` | `{status}` | per cpq_rack_server_blade_rack, cpq_rack_server_blade_chassis, cpq_rack_server_blade_index | This specifies if the server blade described is present in the enclosure |\n| `snmp.device_prof_cpqRackServerBladeStatus` | `{status}` | per cpq_rack_server_blade_rack, cpq_rack_server_blade_chassis, cpq_rack_server_blade_index | The health status of the blade |\n| `snmp.device_prof_cpqRackServerBladeUIDState` | `{status}` | per cpq_rack_server_blade_rack, cpq_rack_server_blade_chassis, cpq_rack_server_blade_index | The Unit Identifier LED status |\n| `snmp.device_prof_cpqRackServerTempSensorCondition` | `{status}` | per cpq_rack_server_temp_sensor_rack, cpq_rack_server_temp_sensor_chassis, cpq_rack_server_temp_sensor_index, cpq_rack_server_temp_sensor_type | The Temperature sensor condition |\n| `snmp.device_prof_cpqRackServerTempSensorCurrent` | `Cel` | per cpq_rack_server_temp_sensor_rack, cpq_rack_server_temp_sensor_chassis, cpq_rack_server_temp_sensor_index, cpq_rack_server_temp_sensor_type | This is the current temperature sensor reading in degrees celsius |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_ssRawContexts` | `{switch}/s` | device | Number of context switches |\n| `snmp.device_prof_ucd_ssRawInterrupts` | `{interrupt}/s` | device | Number of interrupts processed |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_diskIOLA1` | `%` | per ucd_disk_io_device | The 1 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA15` | `%` | per ucd_disk_io_device | The 15 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA5` | `%` | per ucd_disk_io_device | The 5 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIONReadX` | `By/s` | per ucd_disk_io_device | The number of bytes read from this device since boot |\n| `snmp.device_prof_ucd_diskIONWrittenX` | `By/s` | per ucd_disk_io_device | The number of bytes written to this device since boot |\n| `snmp.device_prof_ucd_diskIOReads` | `{read}/s` | per ucd_disk_io_device | The number of read accesses from this device since boot |\n| `snmp.device_prof_ucd_diskIOWrites` | `{write}/s` | per ucd_disk_io_device | The number of write accesses to this device since boot |\n| `snmp.device_prof_ucd_dskAvail` | `By` | per ucd_dsk_path, ucd_dsk_device | Available space on the disk |\n| `snmp.device_prof_ucd_dskErrorFlag` | `{status}` | per ucd_dsk_path, ucd_dsk_device | Flag signaling that the disk or partition is under the minimum required space configured for it |\n| `snmp.device_prof_ucd_dskPercent` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of space used on disk |\n| `snmp.device_prof_ucd_dskPercentNode` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of inodes used on disk |\n| `snmp.device_prof_ucd_dskTotal` | `By` | per ucd_dsk_path, ucd_dsk_device | Total size of the disk/partition |\n| `snmp.device_prof_ucd_dskUsed` | `By` | per ucd_dsk_path, ucd_dsk_device | Used space on the disk |\n| `snmp.device_prof_ucd_ssIORawReceived` | `By/s` | device | Amount of data read from disk or other block device |\n| `snmp.device_prof_ucd_ssIORawSent` | `By/s` | device | Amount of data written to disk or other block device |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | device | The amount of real/physical memory currently unused or available |\n| `snmp.device_prof_ucd_memAvailSwap` | `By` | device | The amount of swap space currently unused or available |\n| `snmp.device_prof_ucd_memBuffer` | `By` | device | The total amount of real or virtual memory currently allocated for use as memory buffers |\n| `snmp.device_prof_ucd_memCached` | `By` | device | The total amount of real or virtual memory currently allocated for use as cached memory |\n| `snmp.device_prof_ucd_memMinimumSwap` | `By` | device | The minimum amount of swap space expected to be kept free or available during normal operation of this host |\n| `snmp.device_prof_ucd_memShared` | `By` | device | The total amount of real or virtual memory currently allocated for use as shared memory |\n| `snmp.device_prof_ucd_memTotalFree` | `By` | device | The total amount of memory free or available for use on this host |\n| `snmp.device_prof_ucd_memTotalSwap` | `By` | device | The total amount of swap space configured for this host |\n| `snmp.device_prof_ucd_memoryTotal` | `By` | device | The total amount of real/physical memory installed on this host |\n| `snmp.device_prof_ucd_ssRawSwapIn` | `By/s` | device | Amount of memory swapped in from disk |\n| `snmp.device_prof_ucd_ssRawSwapOut` | `By/s` | device | Amount of memory swapped out to disk |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-HPE_Bladesystem_Enclosure",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"HPE MSA",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"hp.svg"},keywords:["hpe","msa","snmp","storage","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# HPE MSA\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor HPE MSA (storage) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **hpe-msa.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as HPE MSA via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this HPE MSA profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**8 metrics** in 4 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Sensor | 1 |\n| Network / FibreChannel | 2 |\n| Network / Interface | 4 |\n| System / Uptime | 1 |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_connUnitSensorStatus` | `{status}` | per hpe_fibrechannel_conn_unit_sensor_unit_id, hpe_fibrechannel_conn_unit_sensor_index, hpe_fibrechannel_conn_unit_sensor_name, hpe_fibrechannel_conn_unit_sensor_characteristic | The status indicated by the sensor |\n\n### Network / FibreChannel\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_connUnitPortState` | `{status}` | per hpe_fibrechannel_conn_unit_port_unit_id, hpe_fibrechannel_conn_unit_port_index, hpe_fibrechannel_conn_unit_port_type, hpe_fibrechannel_conn_unit_port_transmitter_type, hpe_fibrechannel_conn_unit_port_module_type | The user selected state of the port hardware |\n| `snmp.device_prof_connUnitPortStatus` | `{status}` | per hpe_fibrechannel_conn_unit_port_unit_id, hpe_fibrechannel_conn_unit_port_index, hpe_fibrechannel_conn_unit_port_type, hpe_fibrechannel_conn_unit_port_transmitter_type, hpe_fibrechannel_conn_unit_port_module_type | An overall protocol status for the port |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-HPE_MSA",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"HPE Nimble",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"hp.svg"},keywords:["hpe","nimble","snmp","storage","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# HPE Nimble\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor HPE Nimble (storage) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **hpe-nimble.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as HPE Nimble via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this HPE Nimble profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**27 metrics** in 6 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| Storage / Cache | 1 |\n| Storage / Disk | 4 |\n| Storage / IO | 8 |\n| Storage / Volume | 9 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Storage / Cache\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nimble_ioNonseqReadHits` | `{hit}/s` | device | Total cumulative number of cache hits for Non-Sequential Read I/Os. |\n\n### Storage / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nimble_diskSnapBytesUsedHigh` | `By` | device | Total number of bytes used on disk for snapshots - high order bytes. |\n| `snmp.device_prof_nimble_diskSnapBytesUsedLow` | `By` | device | Total number of bytes used on disk for snapshots - low order bytes. |\n| `snmp.device_prof_nimble_diskVolBytesUsedHigh` | `By` | device | Total number of bytes used on disk for volumes - high order bytes. |\n| `snmp.device_prof_nimble_diskVolBytesUsedLow` | `By` | device | Total number of bytes used on disk for volumes - low order bytes. |\n\n### Storage / IO\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nimble_ioReadBytes` | `By/s` | device | Total cumulative number of Read I/O bytes (sequential and random). |\n| `snmp.device_prof_nimble_ioReadTimeMicrosec` | `us` | device | Total cumulative microseconds the system has spent processing Read I/Os. This includes system and disk latency, but not any networ\u2026 |\n| `snmp.device_prof_nimble_ioReads` | `{read}/s` | device | Total cumulative number of Read I/Os (sequential and random). |\n| `snmp.device_prof_nimble_ioSeqReadBytes` | `By/s` | device | Total cumulative number of Sequential Read I/O bytes. |\n| `snmp.device_prof_nimble_ioSeqWriteBytes` | `By/s` | device | Total cumulative number of Sequential Write I/O bytes. |\n| `snmp.device_prof_nimble_ioWriteBytes` | `By/s` | device | Total cumulative number of Write I/O bytes (sequential and random). |\n| `snmp.device_prof_nimble_ioWriteTimeMicrosec` | `us` | device | Total cumulative microseconds the system has spent processing Write I/Os. This includes system and disk latency, but not any netwo\u2026 |\n| `snmp.device_prof_nimble_ioWrites` | `{write}/s` | device | Total cumulative number of Write I/Os. |\n\n### Storage / Volume\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nimble_volIoReads` | `{read}/s` | per nimble_vol_name | Total cumulative number of Read I/Os (sequential and random). |\n| `snmp.device_prof_nimble_volIoWrites` | `{write}/s` | per nimble_vol_name | Total cumulative number of Write I/Os. |\n| `snmp.device_prof_nimble_volOnline` | `{status}` | per nimble_vol_name | Indicated whether the volume is online |\n| `snmp.device_prof_nimble_volReserveHigh` | `By` | per nimble_vol_name | Number of bytes reserved for a volume - high order bytes. |\n| `snmp.device_prof_nimble_volReserveLow` | `By` | per nimble_vol_name | Number of bytes reserved for a volume - low order bytes. |\n| `snmp.device_prof_nimble_volSizeHigh` | `By` | per nimble_vol_name | Maximum defined size of a volume in bytes - high order bytes. |\n| `snmp.device_prof_nimble_volSizeLow` | `By` | per nimble_vol_name | Maximum defined size of a volume in bytes - low order bytes. |\n| `snmp.device_prof_nimble_volUsageHigh` | `By` | per nimble_vol_name | Current number of bytes a volume is using - high order bytes. |\n| `snmp.device_prof_nimble_volUsageLow` | `By` | per nimble_vol_name | Current number of bytes a volume is using - low order bytes. |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-HPE_Nimble",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"HPE Proliant",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"hp.svg"},keywords:["hpe","proliant","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# HPE Proliant\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor HPE Proliant (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **hpe-proliant.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as HPE Proliant via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this HPE Proliant profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**155 metrics** in 21 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / ASR | 5 |\n| Hardware / Battery | 2 |\n| Hardware / Bus | 1 |\n| Hardware / CPU | 3 |\n| Hardware / Disk | 1 |\n| Hardware / Fan | 2 |\n| Hardware / Memory | 9 |\n| Hardware / Power | 2 |\n| Hardware / PowerSupply | 4 |\n| Hardware / Sensor | 2 |\n| Hardware / StorageController | 1 |\n| Hardware / Temperature | 2 |\n| Network / IP | 28 |\n| Network / Interface | 52 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / CPU | 1 |\n| System / Disk | 13 |\n| System / ErrorLog | 1 |\n| System / FileSystem | 6 |\n| System / Uptime | 2 |\n\n### Hardware / ASR\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeAsrCondition` | `{status}` | device | Overall condition of the ASR feature |\n| `snmp.device_prof_cpqHeAsrNetworkAccessStatus` | `{status}` | device | Status of the ASR network access feature |\n| `snmp.device_prof_cpqHeAsrPost` | `{status}` | device | Whether the ASR timer passed the server Power-On Self-Test |\n| `snmp.device_prof_cpqHeAsrRebootCount` | `{reboot}` | device | Number of ASR reboots that have occurred on the server since last manual reboot |\n| `snmp.device_prof_cpqHeAsrStatus` | `{status}` | device | Overall status of the ASR feature |\n\n### Hardware / Battery\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeSysBatteryCondition` | `{status}` | per battery_index | Overall condition of the battery |\n| `snmp.device_prof_cpqHeSysBatteryStatus` | `{status}` | per battery_index | Status of the battery |\n\n### Hardware / Bus\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeSysUtilEisaBusMin` | `%` | device | EISA bus utilization as a percentage of the theoretical maximum during the last minute |\n\n### Hardware / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqSeCpuExtSpeed` | `MHz` | per cpu_index, cpu_max_threads, cpu_cores, cpu_primary | External frequency of the processor bus in megahertz |\n| `snmp.device_prof_cpqSeCpuSpeed` | `MHz` | per cpu_index, cpu_max_threads, cpu_cores, cpu_primary | Current internal speed of the processor in megahertz |\n| `snmp.device_prof_cpqSeCpuStatus` | `{status}` | per cpu_index, cpu_max_threads, cpu_cores, cpu_primary | Status of the processor |\n\n### Hardware / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqDaPhyDrvCurrentTemperature` | `Cel` | per drive_cntrl_idx, drive_index | Temperature of the physical drive in degrees Celsius |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeThermalCpuFanStatus` | `{status}` | device | Status of the processor fan(s) in the system |\n| `snmp.device_prof_cpqHeThermalSystemFanStatus` | `{status}` | device | Status of the fan(s) in the system |\n\n### Hardware / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeCorrMemLogCondition` | `{status}` | device | Overall condition of the correctable memory error log feature |\n| `snmp.device_prof_cpqHeCorrMemLogStatus` | `{status}` | device | Overall status of the correctable memory error log feature |\n| `snmp.device_prof_cpqHeCorrMemTotalErrs` | `{error}` | device | Number of correctable memory errors that have occurred |\n| `snmp.device_prof_cpqHeResMem2ModuleCondition` | `{status}` | per mem_board_index | Current status of the correctable memory errors for this memory module |\n| `snmp.device_prof_cpqSiMemModuleCellStatus` | `{status}` | per mem_board_index, mem_module_index, mem_module_technology, mem_module_type | Current status for this memory module |\n| `snmp.device_prof_cpqSiMemModuleECCStatus` | `{status}` | per mem_board_index, mem_module_index, mem_module_technology, mem_module_type | Current status of correctable memory errors for this memory module |\n| `snmp.device_prof_cpqSiMemModuleFrequency` | `MHz` | per mem_board_index, mem_module_index, mem_module_technology, mem_module_type | Memory module frequency in megahertz |\n| `snmp.device_prof_cpqSiMemModuleSize` | `By` | per mem_board_index, mem_module_index, mem_module_technology, mem_module_type | Module memory size in kilobytes |\n| `snmp.device_prof_cpqSiMemModuleSpeed` | `ns` | per mem_board_index, mem_module_index, mem_module_technology, mem_module_type | Module memory speed in nanoseconds |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeFltTolPwrSupplyStatus` | `{status}` | device | Status of the fault tolerant power supply |\n| `snmp.device_prof_cpqHePowerMeterCurrReading` | `W` | device | Current power meter reading in watts |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeFltTolPowerSupply` | `{present}` | per power_supply_index, chassis_num | Indicates the presence of a power supply |\n| `snmp.device_prof_cpqHeFltTolPowerSupplyCapacityMaximum` | `W` | per power_supply_index, chassis_num | Maximum capacity of the power supply in watts |\n| `snmp.device_prof_cpqHeFltTolPowerSupplyCapacityUsed` | `W` | per power_supply_index, chassis_num | Currently used capacity of the power supply in watts |\n| `snmp.device_prof_cpqHeFltTolPowerSupplyStatus` | `{status}` | per power_supply_index, chassis_num | Current status of the power supply |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeTemperatureCelsius` | `Cel` | per temperature_index | Current temperature sensor reading in degrees celsius |\n| `snmp.device_prof_cpqHeTemperatureCondition` | `{status}` | per temperature_index | Temperature sensor condition |\n\n### Hardware / StorageController\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqDaCntlrCondition` | `{status}` | per controller_index | Condition of the device controller |\n\n### Hardware / Temperature\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeThermalCondition` | `{status}` | device | Overall condition of the system's thermal environment |\n| `snmp.device_prof_cpqHeThermalTempStatus` | `{status}` | device | Status of the system's temperature sensors |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqNicIfPhysAdapterAlignmentErrors` | `{frame}/s` | per adapter_name | Frames received on a particular interface that are not an integral number of octets in length and do not pass the FCS check |\n| `snmp.device_prof_cpqNicIfPhysAdapterBadReceives` | `{frame}/s` | per adapter_name | Frames that were received by the adapter but which had an error |\n| `snmp.device_prof_cpqNicIfPhysAdapterBadTransmits` | `{frame}/s` | per adapter_name | Frames that were not transmitted by the adapter because of an error |\n| `snmp.device_prof_cpqNicIfPhysAdapterCarrierSenseErrors` | `{frame}/s` | per adapter_name | The number of times that the carrier sense signal from the physical layer interface was not asserted or was de-asserted during tra\u2026 |\n| `snmp.device_prof_cpqNicIfPhysAdapterCondition` | `{status}` | per adapter_name | The condition of this physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterDeferredTransmissions` | `{frame}/s` | per adapter_name | Packets whose transmission was delayed on its first attempt because the medium was busy |\n| `snmp.device_prof_cpqNicIfPhysAdapterExcessiveCollisions` | `{frame}/s` | per adapter_name | Packets that, due to excessive collisions, are not transmitted successfully |\n| `snmp.device_prof_cpqNicIfPhysAdapterFCSErrors` | `{frame}/s` | per adapter_name | Frames received on a particular interface that are an integral number of octets in length but do not pass the FCS check |\n| `snmp.device_prof_cpqNicIfPhysAdapterFrameTooLongs` | `{frame}/s` | per adapter_name | A count of frames received on a particular interface that exceed the maximum permitted frame size |\n| `snmp.device_prof_cpqNicIfPhysAdapterGoodReceives` | `{frame}/s` | per adapter_name | Successfully received frames by the physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterGoodTransmits` | `{frame}/s` | per adapter_name | Successfully transmitted frames by the physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterInOctets` | `bit/s` | per adapter_name | Traffic received on the physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterInternalMacReceiveErrors` | `{frame}/s` | per adapter_name | A count of frames for which reception on a particular interface fails due to an internal MAC sublayer receive error |\n| `snmp.device_prof_cpqNicIfPhysAdapterInternalMacTransmitErrors` | `{frame}/s` | per adapter_name | Frames for which transmission on a particular interface fails due to an internal MAC sublayer transmit error |\n| `snmp.device_prof_cpqNicIfPhysAdapterLateCollisions` | `{frame}/s` | per adapter_name | A late collision is one that occurred 64 bytes or more into the packet |\n| `snmp.device_prof_cpqNicIfPhysAdapterMultipleCollisionFrames` | `{frame}/s` | per adapter_name | Packets that are involved in multiple collisions and are subsequently transmitted successfully |\n| `snmp.device_prof_cpqNicIfPhysAdapterOutOctets` | `bit/s` | per adapter_name | Traffic sent on the physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterSingleCollisionFrames` | `{frame}/s` | per adapter_name | Packets that are involved in a single collision and are subsequently transmitted successfully |\n| `snmp.device_prof_cpqNicIfPhysAdapterSpeed` | `bit/s` | per adapter_name | An estimate of the interface current bandwidth |\n| `snmp.device_prof_cpqNicIfPhysAdapterState` | `{status}` | per adapter_name | The fault tolerant state of this adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterStatus` | `{status}` | per adapter_name | The physical adapter status |\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_unit_index | The current CPU utilization |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqDaPhyDrvFactReallocs` | `{sector}` | per drive_cntrl_idx, drive_index | Number of spare sectors available for remapping at the time the physical drive was shipped |\n| `snmp.device_prof_cpqDaPhyDrvHSeekErrs` | `{error}` | per drive_cntrl_idx, drive_index | Total number of times the physical disk drive detected a seek error (high) |\n| `snmp.device_prof_cpqDaPhyDrvHardReadErrs` | `{error}` | per drive_cntrl_idx, drive_index | Number of read errors that could not be recovered by a physical drive's ECC algorithm or retries |\n| `snmp.device_prof_cpqDaPhyDrvHardWriteErrs` | `{error}` | per drive_cntrl_idx, drive_index | Number of write errors that could not be recovered by a physical drive |\n| `snmp.device_prof_cpqDaPhyDrvRecvReadErrs` | `{error}` | per drive_cntrl_idx, drive_index | Number of read errors corrected through physical drive retries |\n| `snmp.device_prof_cpqDaPhyDrvRecvWriteErrs` | `{error}` | per drive_cntrl_idx, drive_index | Number of write errors corrected through physical drive retries or recovered by a physical drive |\n| `snmp.device_prof_cpqDaPhyDrvRefHours` | `h` | per drive_cntrl_idx, drive_index | Total number of hours that a physical drive has been in operation since it was stamped |\n| `snmp.device_prof_cpqDaPhyDrvSeekErrs` | `{error}` | per drive_cntrl_idx, drive_index | Total number of times the physical disk drive detected a seek error (low) |\n| `snmp.device_prof_cpqDaPhyDrvSize` | `By` | per drive_cntrl_idx, drive_index | Size of the physical drive in megabytes |\n| `snmp.device_prof_cpqDaPhyDrvSmartStatus` | `{status}` | per drive_cntrl_idx, drive_index | S.M.A.R.T status of the physical drive |\n| `snmp.device_prof_cpqDaPhyDrvSpinupTime` | `ds` | per drive_cntrl_idx, drive_index | Time it takes for a physical drive to spin up to full speed in tenths of seconds |\n| `snmp.device_prof_cpqDaPhyDrvStatus` | `{status}` | per drive_cntrl_idx, drive_index | The status of the physical drive |\n| `snmp.device_prof_cpqDaPhyDrvUsedReallocs` | `{sector}` | per drive_cntrl_idx, drive_index | Number of sectors of the reallocation area that have been used by the physical drive |\n\n### System / ErrorLog\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeCritLogCondition` | `{status}` | device | Overall condition of the critical error log feature |\n\n### System / FileSystem\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHoFileSysAllocUnitsTotal` | `{file}` | per file_sys_index, file_sys_descr | Total number of files that can be stored on the file system if a limit exists |\n| `snmp.device_prof_cpqHoFileSysAllocUnitsUsed` | `{file}` | per file_sys_index, file_sys_descr | Number of files on the file system |\n| `snmp.device_prof_cpqHoFileSysPercentSpaceUsed` | `%` | per file_sys_index, file_sys_descr | Percent of file system space currently in use |\n| `snmp.device_prof_cpqHoFileSysSpaceTotal` | `By` | per file_sys_index, file_sys_descr | File system size |\n| `snmp.device_prof_cpqHoFileSysSpaceUsed` | `By` | per file_sys_index, file_sys_descr | Megabytes of file system space currently in use |\n| `snmp.device_prof_cpqHoFileSysStatus` | `{status}` | per file_sys_index, file_sys_descr | Threshold status of the file system |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeSysUtilLifeTime` | `s` | device | Total time the system has been in full operation in minutes |\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-HPE_Proliant",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"HP H3C Switch",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"hp.svg"},keywords:["hp","h3c","switch","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# HP H3C Switch\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor HP H3C Switch (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **hp-h3c-switch.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as HP H3C Switch via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this HP H3C Switch profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**8 metrics** in 5 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Memory | 1 |\n| System / Process | 1 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index, hh3c_entity_ext_physical_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_usage` | `%` | per mem_index, hh3c_entity_ext_physical_index | Memory usage for the entity |\n\n### System / Process\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hh3cProcessUtil5Min` | `%` | per hh3c_process_name | General idea of how busy a process caused the processor to be over a 5 minute period |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-HP_H3C_Switch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"HP ICF Switch",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"hp.svg"},keywords:["hp","icf","switch","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# HP ICF Switch\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor HP ICF Switch (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **hp-icf-switch.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as HP ICF Switch via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this HP ICF Switch profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**8 metrics** in 4 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Memory | 2 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | per mem_index, hp_local_mem_slot_index | The number of available (unallocated) bytes. |\n| `snmp.device_prof_memory_total` | `By` | per mem_index, hp_local_mem_slot_index | The number of currently installed bytes. |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-HP_ICF_Switch",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"HP ILO",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"hp.svg"},keywords:["hp","ilo","snmp","server","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# HP ILO\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor HP ILO (server) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **hp-ilo.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as HP ILO via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this HP ILO profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**65 metrics** in 20 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / ASR | 5 |\n| Hardware / Battery | 4 |\n| Hardware / Bus | 1 |\n| Hardware / Disk | 1 |\n| Hardware / Fan | 2 |\n| Hardware / Memory | 4 |\n| Hardware / Power | 2 |\n| Hardware / PowerSupply | 4 |\n| Hardware / Sensor | 2 |\n| Hardware / Server | 1 |\n| Hardware / Temperature | 2 |\n| Network / Adapter | 7 |\n| Network / Interface | 10 |\n| System / Disk | 13 |\n| System / ErrorLog | 1 |\n| System / EventLog | 1 |\n| System / RemoteInterface | 1 |\n| System / RemoteSession | 1 |\n| System / Security | 1 |\n| System / Uptime | 2 |\n\n### Hardware / ASR\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeAsrCondition` | `{status}` | device | Overall condition of the ASR feature |\n| `snmp.device_prof_cpqHeAsrNetworkAccessStatus` | `{status}` | device | Status of the ASR network access feature |\n| `snmp.device_prof_cpqHeAsrPost` | `{status}` | device | Whether the ASR timer passed the server Power-On Self-Test |\n| `snmp.device_prof_cpqHeAsrRebootCount` | `{reboot}` | device | Number of ASR reboots that have occurred on the server since last manual reboot |\n| `snmp.device_prof_cpqHeAsrStatus` | `{status}` | device | Overall status of the ASR feature |\n\n### Hardware / Battery\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeSysBatteryCondition` | `{status}` | per battery_index | Overall condition of the battery |\n| `snmp.device_prof_cpqHeSysBatteryStatus` | `{status}` | per battery_index | Status of the battery |\n| `snmp.device_prof_cpqSm2CntlrBatteryPercentCharged` | `%` | device | Charge level of the battery |\n| `snmp.device_prof_cpqSm2CntlrBatteryStatus` | `{status}` | device | Status of the battery |\n\n### Hardware / Bus\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeSysUtilEisaBusMin` | `%` | device | EISA bus utilization as a percentage of the theoretical maximum during the last minute |\n\n### Hardware / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqDaPhyDrvCurrentTemperature` | `Cel` | per drive_cntrl_idx, drive_index | Temperature of the physical drive in degrees Celsius |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeThermalCpuFanStatus` | `{status}` | device | Status of the processor fan(s) in the system |\n| `snmp.device_prof_cpqHeThermalSystemFanStatus` | `{status}` | device | Status of the fan(s) in the system |\n\n### Hardware / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeCorrMemLogCondition` | `{status}` | device | Overall condition of the correctable memory error log feature |\n| `snmp.device_prof_cpqHeCorrMemLogStatus` | `{status}` | device | Overall status of the correctable memory error log feature |\n| `snmp.device_prof_cpqHeCorrMemTotalErrs` | `{error}` | device | Number of correctable memory errors that have occurred |\n| `snmp.device_prof_cpqHeResMem2ModuleCondition` | `{status}` | per mem_board_index | Current status of the correctable memory errors for this memory module |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeFltTolPwrSupplyStatus` | `{status}` | device | Status of the fault tolerant power supply |\n| `snmp.device_prof_cpqHePowerMeterCurrReading` | `W` | device | Current power meter reading in watts |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeFltTolPowerSupply` | `{present}` | per power_supply_index, chassis_num | Indicates the presence of a power supply |\n| `snmp.device_prof_cpqHeFltTolPowerSupplyCapacityMaximum` | `W` | per power_supply_index, chassis_num | Maximum capacity of the power supply in watts |\n| `snmp.device_prof_cpqHeFltTolPowerSupplyCapacityUsed` | `W` | per power_supply_index, chassis_num | Currently used capacity of the power supply in watts |\n| `snmp.device_prof_cpqHeFltTolPowerSupplyStatus` | `{status}` | per power_supply_index, chassis_num | Current status of the power supply |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeTemperatureCelsius` | `Cel` | per temperature_index | Current temperature sensor reading in degrees celsius |\n| `snmp.device_prof_cpqHeTemperatureCondition` | `{status}` | per temperature_index | Temperature sensor condition |\n\n### Hardware / Server\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqSm2CntlrServerPowerState` | `{status}` | device | Power state of the server |\n\n### Hardware / Temperature\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeThermalCondition` | `{status}` | device | Overall condition of the system's thermal environment |\n| `snmp.device_prof_cpqHeThermalTempStatus` | `{status}` | device | Status of the system's temperature sensors |\n\n### Network / Adapter\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqNicIfPhysAdapterBadReceives` | `{frame}/s` | per adapter_index, adapter | Count of frames not received due to errors by the physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterBadTransmits` | `{frame}/s` | per adapter_index, adapter | Count of frames not transmitted due to errors by the physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterGoodReceives` | `{frame}/s` | per adapter_index, adapter | Count of frames successfully received by the physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterGoodTransmits` | `{frame}/s` | per adapter_index, adapter | Count of frames successfully transmitted by the physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterInOctets` | `bit/s` | per adapter_index, adapter | Count of octets received on the physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterOutOctets` | `bit/s` | per adapter_index, adapter | Count of octets sent on the physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterSpeed` | `bit/s` | per adapter_index, adapter | Estimate of the interface's current bandwidth in bits per second |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqSm2NicRecvBytes` | `bit/s` | per nic_index, nic_stats_location | Number of bytes received by the network interface controller |\n| `snmp.device_prof_cpqSm2NicRecvDiscardPackets` | `{packet}/s` | per nic_index, nic_stats_location | Total number of discarded packets received by the network interface controller |\n| `snmp.device_prof_cpqSm2NicRecvErrorPackets` | `{packet}/s` | per nic_index, nic_stats_location | Total number of error packets received by the network interface controller |\n| `snmp.device_prof_cpqSm2NicRecvTotalPackets` | `{packet}/s` | per nic_index, nic_stats_location | Total number of packets received by the network interface controller |\n| `snmp.device_prof_cpqSm2NicRecvUnknownPackets` | `{packet}/s` | per nic_index, nic_stats_location | Number of unknown protocol packets received by the network interface controller |\n| `snmp.device_prof_cpqSm2NicXmitBytes` | `bit/s` | per nic_index, nic_stats_location | Number of bytes transmitted by the network interface controller |\n| `snmp.device_prof_cpqSm2NicXmitDiscardPackets` | `{packet}/s` | per nic_index, nic_stats_location | Total number of discarded packets transmitted by the network interface controller |\n| `snmp.device_prof_cpqSm2NicXmitErrorPackets` | `{packet}/s` | per nic_index, nic_stats_location | Total number of error packets transmitted by the network interface controller |\n| `snmp.device_prof_cpqSm2NicXmitQueueLength` | `{packet}` | per nic_index, nic_stats_location | Number of outstanding packets in the transmit queue |\n| `snmp.device_prof_cpqSm2NicXmitTotalPackets` | `{packet}/s` | per nic_index, nic_stats_location | Total number of packets transmitted by the network interface controller |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqDaPhyDrvFactReallocs` | `{sector}` | per drive_cntrl_idx, drive_index | Number of spare sectors available for remapping at the time the physical drive was shipped |\n| `snmp.device_prof_cpqDaPhyDrvHSeekErrs` | `{error}` | per drive_cntrl_idx, drive_index | Total number of times the physical disk drive detected a seek error (high) |\n| `snmp.device_prof_cpqDaPhyDrvHardReadErrs` | `{error}` | per drive_cntrl_idx, drive_index | Number of read errors that could not be recovered by a physical drive's ECC algorithm or retries |\n| `snmp.device_prof_cpqDaPhyDrvHardWriteErrs` | `{error}` | per drive_cntrl_idx, drive_index | Number of write errors that could not be recovered by a physical drive |\n| `snmp.device_prof_cpqDaPhyDrvRecvReadErrs` | `{error}` | per drive_cntrl_idx, drive_index | Number of read errors corrected through physical drive retries |\n| `snmp.device_prof_cpqDaPhyDrvRecvWriteErrs` | `{error}` | per drive_cntrl_idx, drive_index | Number of write errors corrected through physical drive retries or recovered by a physical drive |\n| `snmp.device_prof_cpqDaPhyDrvRefHours` | `h` | per drive_cntrl_idx, drive_index | Total number of hours that a physical drive has been in operation since it was stamped |\n| `snmp.device_prof_cpqDaPhyDrvSeekErrs` | `{error}` | per drive_cntrl_idx, drive_index | Total number of times the physical disk drive detected a seek error (low) |\n| `snmp.device_prof_cpqDaPhyDrvSize` | `By` | per drive_cntrl_idx, drive_index | Size of the physical drive in megabytes |\n| `snmp.device_prof_cpqDaPhyDrvSmartStatus` | `{status}` | per drive_cntrl_idx, drive_index | S.M.A.R.T status of the physical drive |\n| `snmp.device_prof_cpqDaPhyDrvSpinupTime` | `ds` | per drive_cntrl_idx, drive_index | Time it takes for a physical drive to spin up to full speed in tenths of seconds |\n| `snmp.device_prof_cpqDaPhyDrvStatus` | `{status}` | per drive_cntrl_idx, drive_index | The status of the physical drive |\n| `snmp.device_prof_cpqDaPhyDrvUsedReallocs` | `{sector}` | per drive_cntrl_idx, drive_index | Number of sectors of the reallocation area that have been used by the physical drive |\n\n### System / ErrorLog\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeCritLogCondition` | `{status}` | device | Overall condition of the critical error log feature |\n\n### System / EventLog\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqSm2EventTotalEntries` | `{entry}` | device | Number of entries in the event log |\n\n### System / RemoteInterface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqSm2CntlrInterfaceStatus` | `{status}` | device | Status of the remote interface |\n\n### System / RemoteSession\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqSm2CntlrRemoteSessionStatus` | `{status}` | device | Status of remote session activity |\n\n### System / Security\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqNicVtVirusActivity` | `{status}` | device | Virus activity detection status |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeSysUtilLifeTime` | `s` | device | Total time the system has been in full operation in minutes |\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-HP_ILO",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"HP Ilo4",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"hp.svg"},keywords:["hp","ilo4","snmp","server","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# HP Ilo4\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor HP Ilo4 (server) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **hp-ilo4.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as HP Ilo4 via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this HP Ilo4 profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**65 metrics** in 20 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / ASR | 5 |\n| Hardware / Battery | 4 |\n| Hardware / Bus | 1 |\n| Hardware / Disk | 1 |\n| Hardware / Fan | 2 |\n| Hardware / Memory | 4 |\n| Hardware / Power | 2 |\n| Hardware / PowerSupply | 4 |\n| Hardware / Sensor | 2 |\n| Hardware / Server | 1 |\n| Hardware / Temperature | 2 |\n| Network / Adapter | 7 |\n| Network / Interface | 10 |\n| System / Disk | 13 |\n| System / ErrorLog | 1 |\n| System / EventLog | 1 |\n| System / RemoteInterface | 1 |\n| System / RemoteSession | 1 |\n| System / Security | 1 |\n| System / Uptime | 2 |\n\n### Hardware / ASR\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeAsrCondition` | `{status}` | device | Overall condition of the ASR feature |\n| `snmp.device_prof_cpqHeAsrNetworkAccessStatus` | `{status}` | device | Status of the ASR network access feature |\n| `snmp.device_prof_cpqHeAsrPost` | `{status}` | device | Whether the ASR timer passed the server Power-On Self-Test |\n| `snmp.device_prof_cpqHeAsrRebootCount` | `{reboot}` | device | Number of ASR reboots that have occurred on the server since last manual reboot |\n| `snmp.device_prof_cpqHeAsrStatus` | `{status}` | device | Overall status of the ASR feature |\n\n### Hardware / Battery\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeSysBatteryCondition` | `{status}` | per battery_index | Overall condition of the battery |\n| `snmp.device_prof_cpqHeSysBatteryStatus` | `{status}` | per battery_index | Status of the battery |\n| `snmp.device_prof_cpqSm2CntlrBatteryPercentCharged` | `%` | device | Charge level of the battery |\n| `snmp.device_prof_cpqSm2CntlrBatteryStatus` | `{status}` | device | Status of the battery |\n\n### Hardware / Bus\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeSysUtilEisaBusMin` | `%` | device | EISA bus utilization as a percentage of the theoretical maximum during the last minute |\n\n### Hardware / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqDaPhyDrvCurrentTemperature` | `Cel` | per drive_cntrl_idx, drive_index | Temperature of the physical drive in degrees Celsius |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeThermalCpuFanStatus` | `{status}` | device | Status of the processor fan(s) in the system |\n| `snmp.device_prof_cpqHeThermalSystemFanStatus` | `{status}` | device | Status of the fan(s) in the system |\n\n### Hardware / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeCorrMemLogCondition` | `{status}` | device | Overall condition of the correctable memory error log feature |\n| `snmp.device_prof_cpqHeCorrMemLogStatus` | `{status}` | device | Overall status of the correctable memory error log feature |\n| `snmp.device_prof_cpqHeCorrMemTotalErrs` | `{error}` | device | Number of correctable memory errors that have occurred |\n| `snmp.device_prof_cpqHeResMem2ModuleCondition` | `{status}` | per mem_board_index | Current status of the correctable memory errors for this memory module |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeFltTolPwrSupplyStatus` | `{status}` | device | Status of the fault tolerant power supply |\n| `snmp.device_prof_cpqHePowerMeterCurrReading` | `W` | device | Current power meter reading in watts |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeFltTolPowerSupply` | `{present}` | per power_supply_index, chassis_num | Indicates the presence of a power supply |\n| `snmp.device_prof_cpqHeFltTolPowerSupplyCapacityMaximum` | `W` | per power_supply_index, chassis_num | Maximum capacity of the power supply in watts |\n| `snmp.device_prof_cpqHeFltTolPowerSupplyCapacityUsed` | `W` | per power_supply_index, chassis_num | Currently used capacity of the power supply in watts |\n| `snmp.device_prof_cpqHeFltTolPowerSupplyStatus` | `{status}` | per power_supply_index, chassis_num | Current status of the power supply |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeTemperatureCelsius` | `Cel` | per temperature_index | Current temperature sensor reading in degrees celsius |\n| `snmp.device_prof_cpqHeTemperatureCondition` | `{status}` | per temperature_index | Temperature sensor condition |\n\n### Hardware / Server\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqSm2CntlrServerPowerState` | `{status}` | device | Power state of the server |\n\n### Hardware / Temperature\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeThermalCondition` | `{status}` | device | Overall condition of the system's thermal environment |\n| `snmp.device_prof_cpqHeThermalTempStatus` | `{status}` | device | Status of the system's temperature sensors |\n\n### Network / Adapter\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqNicIfPhysAdapterBadReceives` | `{frame}/s` | per adapter_index, adapter | Count of frames not received due to errors by the physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterBadTransmits` | `{frame}/s` | per adapter_index, adapter | Count of frames not transmitted due to errors by the physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterGoodReceives` | `{frame}/s` | per adapter_index, adapter | Count of frames successfully received by the physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterGoodTransmits` | `{frame}/s` | per adapter_index, adapter | Count of frames successfully transmitted by the physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterInOctets` | `bit/s` | per adapter_index, adapter | Count of octets received on the physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterOutOctets` | `bit/s` | per adapter_index, adapter | Count of octets sent on the physical adapter |\n| `snmp.device_prof_cpqNicIfPhysAdapterSpeed` | `bit/s` | per adapter_index, adapter | Estimate of the interface's current bandwidth in bits per second |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqSm2NicRecvBytes` | `bit/s` | per nic_index, nic_stats_location | Number of bytes received by the network interface controller |\n| `snmp.device_prof_cpqSm2NicRecvDiscardPackets` | `{packet}/s` | per nic_index, nic_stats_location | Total number of discarded packets received by the network interface controller |\n| `snmp.device_prof_cpqSm2NicRecvErrorPackets` | `{packet}/s` | per nic_index, nic_stats_location | Total number of error packets received by the network interface controller |\n| `snmp.device_prof_cpqSm2NicRecvTotalPackets` | `{packet}/s` | per nic_index, nic_stats_location | Total number of packets received by the network interface controller |\n| `snmp.device_prof_cpqSm2NicRecvUnknownPackets` | `{packet}/s` | per nic_index, nic_stats_location | Number of unknown protocol packets received by the network interface controller |\n| `snmp.device_prof_cpqSm2NicXmitBytes` | `bit/s` | per nic_index, nic_stats_location | Number of bytes transmitted by the network interface controller |\n| `snmp.device_prof_cpqSm2NicXmitDiscardPackets` | `{packet}/s` | per nic_index, nic_stats_location | Total number of discarded packets transmitted by the network interface controller |\n| `snmp.device_prof_cpqSm2NicXmitErrorPackets` | `{packet}/s` | per nic_index, nic_stats_location | Total number of error packets transmitted by the network interface controller |\n| `snmp.device_prof_cpqSm2NicXmitQueueLength` | `{packet}` | per nic_index, nic_stats_location | Number of outstanding packets in the transmit queue |\n| `snmp.device_prof_cpqSm2NicXmitTotalPackets` | `{packet}/s` | per nic_index, nic_stats_location | Total number of packets transmitted by the network interface controller |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqDaPhyDrvFactReallocs` | `{sector}` | per drive_cntrl_idx, drive_index | Number of spare sectors available for remapping at the time the physical drive was shipped |\n| `snmp.device_prof_cpqDaPhyDrvHSeekErrs` | `{error}` | per drive_cntrl_idx, drive_index | Total number of times the physical disk drive detected a seek error (high) |\n| `snmp.device_prof_cpqDaPhyDrvHardReadErrs` | `{error}` | per drive_cntrl_idx, drive_index | Number of read errors that could not be recovered by a physical drive's ECC algorithm or retries |\n| `snmp.device_prof_cpqDaPhyDrvHardWriteErrs` | `{error}` | per drive_cntrl_idx, drive_index | Number of write errors that could not be recovered by a physical drive |\n| `snmp.device_prof_cpqDaPhyDrvRecvReadErrs` | `{error}` | per drive_cntrl_idx, drive_index | Number of read errors corrected through physical drive retries |\n| `snmp.device_prof_cpqDaPhyDrvRecvWriteErrs` | `{error}` | per drive_cntrl_idx, drive_index | Number of write errors corrected through physical drive retries or recovered by a physical drive |\n| `snmp.device_prof_cpqDaPhyDrvRefHours` | `h` | per drive_cntrl_idx, drive_index | Total number of hours that a physical drive has been in operation since it was stamped |\n| `snmp.device_prof_cpqDaPhyDrvSeekErrs` | `{error}` | per drive_cntrl_idx, drive_index | Total number of times the physical disk drive detected a seek error (low) |\n| `snmp.device_prof_cpqDaPhyDrvSize` | `By` | per drive_cntrl_idx, drive_index | Size of the physical drive in megabytes |\n| `snmp.device_prof_cpqDaPhyDrvSmartStatus` | `{status}` | per drive_cntrl_idx, drive_index | S.M.A.R.T status of the physical drive |\n| `snmp.device_prof_cpqDaPhyDrvSpinupTime` | `ds` | per drive_cntrl_idx, drive_index | Time it takes for a physical drive to spin up to full speed in tenths of seconds |\n| `snmp.device_prof_cpqDaPhyDrvStatus` | `{status}` | per drive_cntrl_idx, drive_index | The status of the physical drive |\n| `snmp.device_prof_cpqDaPhyDrvUsedReallocs` | `{sector}` | per drive_cntrl_idx, drive_index | Number of sectors of the reallocation area that have been used by the physical drive |\n\n### System / ErrorLog\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeCritLogCondition` | `{status}` | device | Overall condition of the critical error log feature |\n\n### System / EventLog\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqSm2EventTotalEntries` | `{entry}` | device | Number of entries in the event log |\n\n### System / RemoteInterface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqSm2CntlrInterfaceStatus` | `{status}` | device | Status of the remote interface |\n\n### System / RemoteSession\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqSm2CntlrRemoteSessionStatus` | `{status}` | device | Status of remote session activity |\n\n### System / Security\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqNicVtVirusActivity` | `{status}` | device | Virus activity detection status |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpqHeSysUtilLifeTime` | `s` | device | Total time the system has been in full operation in minutes |\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-HP_Ilo4",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Huawei",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"huawei.svg"},keywords:["huawei","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Huawei\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Huawei (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **huawei.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Huawei via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Huawei profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**22 metrics** in 8 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Fan | 5 |\n| Hardware / Module | 4 |\n| Hardware / Power | 3 |\n| Hardware / Sensor | 2 |\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Memory | 2 |\n| System / Uptime | 1 |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_huawei_hwEntityFanPresent` | `{status}` | per huawei_hw_entity_fan_slot, huawei_hw_entity_fan_sn | Whether the fan is present |\n| `snmp.device_prof_huawei_hwEntityFanReg` | `{status}` | per huawei_hw_entity_fan_slot, huawei_hw_entity_fan_sn | Whether the fan is registered |\n| `snmp.device_prof_huawei_hwEntityFanSpdAdjMode` | `{status}` | per huawei_hw_entity_fan_slot, huawei_hw_entity_fan_sn | Fan speed adjustment mode |\n| `snmp.device_prof_huawei_hwEntityFanSpeed` | `%` | per huawei_hw_entity_fan_slot, huawei_hw_entity_fan_sn | This object indicates the rotation speed in percentage of the full speed of the fan |\n| `snmp.device_prof_huawei_hwEntityFanState` | `{status}` | per huawei_hw_entity_fan_slot, huawei_hw_entity_fan_sn | Operational state of the fan |\n\n### Hardware / Module\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_huawei_hwEntityAdminStatus` | `{status}` | per huawei_hw_entity_board_name | Administrative status of the entity |\n| `snmp.device_prof_huawei_hwEntityFaultLight` | `{status}` | per huawei_hw_entity_board_name | Fault light status of the entity |\n| `snmp.device_prof_huawei_hwEntityOperStatus` | `{status}` | per huawei_hw_entity_board_name | Operational status of the entity |\n| `snmp.device_prof_huawei_hwEntityStandbyStatus` | `{status}` | per huawei_hw_entity_board_name | Standby status of the entity |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_huawei_hwSystemPowerRemainPower` | `W` | per huawei_hw_system_power_device_id | Device remaining power |\n| `snmp.device_prof_huawei_hwSystemPowerTotalPower` | `W` | per huawei_hw_system_power_device_id | Device total power |\n| `snmp.device_prof_huawei_hwSystemPowerUsedPower` | `W` | per huawei_hw_system_power_device_id | Device used power |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_huawei_hwEntityTemperature` | `Cel` | per huawei_hw_entity_board_name | The temperature for the entity |\n| `snmp.device_prof_huawei_hwEntityVoltage` | `V` | per huawei_hw_entity_board_name | The voltage for the entity |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_huawei_hwMemoryDevFree` | `By` | per mem_index | Indicates the free size of the memory |\n| `snmp.device_prof_huawei_hwMemoryDevSize` | `By` | per mem_index | Indicates the total size of the memory module which is on the managed object |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Huawei",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Huawei Access Controllers",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"huawei.svg"},keywords:["huawei","access","controllers","snmp","accesspoint","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Huawei Access Controllers\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Huawei Access Controllers (accesspoint) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **huawei-access-controllers.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Huawei Access Controllers via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Huawei Access Controllers profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**5 metrics** in 2 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Huawei_Access_Controllers",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Huawei BGP",link:"",categories:["network-performance-monitoring.bgp"],icon_filename:"huawei.svg"},keywords:["huawei","bgp","snmp","routing","peering","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Huawei BGP\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor BGP peering and routing health on Huawei devices over SNMP with Netdata, using Huawei BGP profile coverage.\n\nNetdata polls the BGP peer tables exposed by Huawei devices (vendor and standard BGP MIBs) via SNMP.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDetected automatically for Huawei devices that expose BGP MIBs.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",integration_type:"device",id:"go.d.plugin-snmp-Huawei_BGP",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Huawei Routers",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"huawei.svg"},keywords:["huawei","routers","snmp","router","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Huawei Routers\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Huawei Routers (router) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **huawei-routers.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Huawei Routers via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Huawei Routers profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**22 metrics** in 8 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Fan | 5 |\n| Hardware / Module | 4 |\n| Hardware / Power | 3 |\n| Hardware / Sensor | 2 |\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Memory | 2 |\n| System / Uptime | 1 |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_huawei_hwEntityFanPresent` | `{status}` | per huawei_hw_entity_fan_slot, huawei_hw_entity_fan_sn | Whether the fan is present |\n| `snmp.device_prof_huawei_hwEntityFanReg` | `{status}` | per huawei_hw_entity_fan_slot, huawei_hw_entity_fan_sn | Whether the fan is registered |\n| `snmp.device_prof_huawei_hwEntityFanSpdAdjMode` | `{status}` | per huawei_hw_entity_fan_slot, huawei_hw_entity_fan_sn | Fan speed adjustment mode |\n| `snmp.device_prof_huawei_hwEntityFanSpeed` | `%` | per huawei_hw_entity_fan_slot, huawei_hw_entity_fan_sn | This object indicates the rotation speed in percentage of the full speed of the fan |\n| `snmp.device_prof_huawei_hwEntityFanState` | `{status}` | per huawei_hw_entity_fan_slot, huawei_hw_entity_fan_sn | Operational state of the fan |\n\n### Hardware / Module\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_huawei_hwEntityAdminStatus` | `{status}` | per huawei_hw_entity_board_name | Administrative status of the entity |\n| `snmp.device_prof_huawei_hwEntityFaultLight` | `{status}` | per huawei_hw_entity_board_name | Fault light status of the entity |\n| `snmp.device_prof_huawei_hwEntityOperStatus` | `{status}` | per huawei_hw_entity_board_name | Operational status of the entity |\n| `snmp.device_prof_huawei_hwEntityStandbyStatus` | `{status}` | per huawei_hw_entity_board_name | Standby status of the entity |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_huawei_hwSystemPowerRemainPower` | `W` | per huawei_hw_system_power_device_id | Device remaining power |\n| `snmp.device_prof_huawei_hwSystemPowerTotalPower` | `W` | per huawei_hw_system_power_device_id | Device total power |\n| `snmp.device_prof_huawei_hwSystemPowerUsedPower` | `W` | per huawei_hw_system_power_device_id | Device used power |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_huawei_hwEntityTemperature` | `Cel` | per huawei_hw_entity_board_name | The temperature for the entity |\n| `snmp.device_prof_huawei_hwEntityVoltage` | `V` | per huawei_hw_entity_board_name | The voltage for the entity |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_huawei_hwMemoryDevFree` | `By` | per mem_index | Indicates the free size of the memory |\n| `snmp.device_prof_huawei_hwMemoryDevSize` | `By` | per mem_index | Indicates the total size of the memory module which is on the managed object |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Huawei_Routers",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Huawei Switches",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"huawei.svg"},keywords:["huawei","switches","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Huawei Switches\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Huawei Switches (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 2 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **huawei-switches.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Huawei Switches via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Huawei Switches profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**25 metrics** in 9 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Fan | 5 |\n| Hardware / Module | 4 |\n| Hardware / Power | 3 |\n| Hardware / Sensor | 2 |\n| Hardware / Stack | 3 |\n| Network / Interface | 4 |\n| System / CPU | 1 |\n| System / Memory | 2 |\n| System / Uptime | 1 |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_huawei_hwEntityFanPresent` | `{status}` | per huawei_hw_entity_fan_slot, huawei_hw_entity_fan_sn | Whether the fan is present |\n| `snmp.device_prof_huawei_hwEntityFanReg` | `{status}` | per huawei_hw_entity_fan_slot, huawei_hw_entity_fan_sn | Whether the fan is registered |\n| `snmp.device_prof_huawei_hwEntityFanSpdAdjMode` | `{status}` | per huawei_hw_entity_fan_slot, huawei_hw_entity_fan_sn | Fan speed adjustment mode |\n| `snmp.device_prof_huawei_hwEntityFanSpeed` | `%` | per huawei_hw_entity_fan_slot, huawei_hw_entity_fan_sn | This object indicates the rotation speed in percentage of the full speed of the fan |\n| `snmp.device_prof_huawei_hwEntityFanState` | `{status}` | per huawei_hw_entity_fan_slot, huawei_hw_entity_fan_sn | Operational state of the fan |\n\n### Hardware / Module\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_huawei_hwEntityAdminStatus` | `{status}` | per huawei_hw_entity_board_name | Administrative status of the entity |\n| `snmp.device_prof_huawei_hwEntityFaultLight` | `{status}` | per huawei_hw_entity_board_name | Fault light status of the entity |\n| `snmp.device_prof_huawei_hwEntityOperStatus` | `{status}` | per huawei_hw_entity_board_name | Operational status of the entity |\n| `snmp.device_prof_huawei_hwEntityStandbyStatus` | `{status}` | per huawei_hw_entity_board_name | Standby status of the entity |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_huawei_hwSystemPowerRemainPower` | `W` | per huawei_hw_system_power_device_id | Device remaining power |\n| `snmp.device_prof_huawei_hwSystemPowerTotalPower` | `W` | per huawei_hw_system_power_device_id | Device total power |\n| `snmp.device_prof_huawei_hwSystemPowerUsedPower` | `W` | per huawei_hw_system_power_device_id | Device used power |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_huawei_hwEntityTemperature` | `Cel` | per huawei_hw_entity_board_name | The temperature for the entity |\n| `snmp.device_prof_huawei_hwEntityVoltage` | `V` | per huawei_hw_entity_board_name | The voltage for the entity |\n\n### Hardware / Stack\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_huawei_hwMemberStackPriority` | `{priority}` | per huawei_hw_member_stack_mac_address, huawei_hw_member_stack_device_type, huawei_hw_member_stack_object_id | Stack member's priority |\n| `snmp.device_prof_huawei_hwMemberStackRole` | `{status}` | per huawei_hw_member_stack_mac_address, huawei_hw_member_stack_device_type, huawei_hw_member_stack_object_id | Current role of the stack member |\n| `snmp.device_prof_huawei_hwStackPortStatus` | `{status}` | per huawei_hw_stack_port_name | Operational status of the stack port |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_huawei_hwMemoryDevFree` | `By` | per mem_index | Indicates the free size of the memory |\n| `snmp.device_prof_huawei_hwMemoryDevSize` | `By` | per mem_index | Indicates the total size of the memory module which is on the managed object |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Huawei_Switches",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"IBM",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"ibm.svg"},keywords:["ibm","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# IBM\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor IBM (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **ibm.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as IBM via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this IBM profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**1 metrics** in 1 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| System / Uptime | 1 |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-IBM",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"IBM Datapower Gateway",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"ibm.svg"},keywords:["ibm","datapower","gateway","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# IBM Datapower Gateway\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor IBM Datapower Gateway (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **ibm-datapower-gateway.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as IBM Datapower Gateway via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this IBM Datapower Gateway profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**50 metrics** in 14 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / CPU | 2 |\n| Hardware / Chassis | 1 |\n| Hardware / Fan | 5 |\n| Hardware / Power | 1 |\n| Hardware / Sensor | 1 |\n| Network / Connection | 5 |\n| Network / Interface | 10 |\n| Network / TCP | 11 |\n| System / CPU | 1 |\n| System / FileSystem | 6 |\n| System / Load | 1 |\n| System / Log | 4 |\n| System / Memory | 1 |\n| System / Uptime | 1 |\n\n### Hardware / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibm_dpStatusEnvironmentalSensorscpu1Temp` | `Cel` | device | CPU 1 temperature sensor reading |\n| `snmp.device_prof_ibm_dpStatusEnvironmentalSensorscpu2Temp` | `Cel` | device | CPU 2 temperature sensor reading |\n\n### Hardware / Chassis\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibm_dpStatusEnvironmentalSensorsCaseOpen` | `{status}` | device | Indicates whether the sensor case is open |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibm_dpStatusEnvironmentalSensorschassis1rpm` | `{revolution}/min` | device | Chassis 1 fan speed in revolutions per minute |\n| `snmp.device_prof_ibm_dpStatusEnvironmentalSensorschassis2rpm` | `{revolution}/min` | device | Chassis 2 fan speed in revolutions per minute |\n| `snmp.device_prof_ibm_dpStatusEnvironmentalSensorschassis3rpm` | `{revolution}/min` | device | Chassis 3 fan speed in revolutions per minute |\n| `snmp.device_prof_ibm_dpStatusEnvironmentalSensorscpu1rpm` | `{revolution}/min` | device | CPU 1 fan speed in revolutions per minute |\n| `snmp.device_prof_ibm_dpStatusEnvironmentalSensorscpu2rpm` | `{revolution}/min` | device | CPU 2 fan speed in revolutions per minute |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibm_dpStatusEnvironmentalSensorsPowerSupply` | `{status}` | device | The status of the components and systems that provide the necessary electrical power to the environmental sensors and the overall \u2026 |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibm_dpStatusEnvironmentalSensorssystemTemp` | `Cel` | device | System temperature sensor reading |\n\n### Network / Connection\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibm_dpStatusConnectionsAcceptedoneDay` | `{connection}` | device | Number of connections accepted in last one day |\n| `snmp.device_prof_ibm_dpStatusConnectionsAcceptedoneHour` | `{connection}` | device | Number of connections accepted in last one hour |\n| `snmp.device_prof_ibm_dpStatusConnectionsAcceptedoneMinute` | `{connection}` | device | Number of connections accepted in last one minute |\n| `snmp.device_prof_ibm_dpStatusConnectionsAcceptedtenMinutes` | `{connection}` | device | Number of connections accepted in last ten minutes |\n| `snmp.device_prof_ibm_dpStatusConnectionsAcceptedtenSeconds` | `{connection}` | device | Number of connections accepted in last ten seconds |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibm_dpStatusNetworkInterfaceStatusAdminStatus` | `{status}` | per ibm_dp_status_network_interface_status_interface_type, ibm_dp_status_network_interface_status_name, ibm_dp_status_network_interface_status_ip_type | The configured administrative state of the interface |\n| `snmp.device_prof_ibm_dpStatusNetworkInterfaceStatusOperStatus` | `{status}` | per ibm_dp_status_network_interface_status_interface_type, ibm_dp_status_network_interface_status_name, ibm_dp_status_network_interface_status_ip_type | The current operational state of the interface |\n| `snmp.device_prof_ibm_dpStatusNetworkInterfaceStatusRxDrops2` | `{packet}/s` | per ibm_dp_status_network_interface_status_interface_type, ibm_dp_status_network_interface_status_name, ibm_dp_status_network_interface_status_ip_type | Number of received packets dropped |\n| `snmp.device_prof_ibm_dpStatusNetworkInterfaceStatusRxErrors2` | `{error}/s` | per ibm_dp_status_network_interface_status_interface_type, ibm_dp_status_network_interface_status_name, ibm_dp_status_network_interface_status_ip_type | Number of receive errors |\n| `snmp.device_prof_ibm_dpStatusNetworkInterfaceStatusRxHCBytes` | `bit/s` | per ibm_dp_status_network_interface_status_interface_type, ibm_dp_status_network_interface_status_name, ibm_dp_status_network_interface_status_ip_type | Number of received high capacity bytes |\n| `snmp.device_prof_ibm_dpStatusNetworkInterfaceStatusRxHCPackets` | `{packet}/s` | per ibm_dp_status_network_interface_status_interface_type, ibm_dp_status_network_interface_status_name, ibm_dp_status_network_interface_status_ip_type | Number of received high capacity packets |\n| `snmp.device_prof_ibm_dpStatusNetworkInterfaceStatusTxDrops2` | `{packet}/s` | per ibm_dp_status_network_interface_status_interface_type, ibm_dp_status_network_interface_status_name, ibm_dp_status_network_interface_status_ip_type | Number of transmitted packets dropped |\n| `snmp.device_prof_ibm_dpStatusNetworkInterfaceStatusTxErrors2` | `{error}/s` | per ibm_dp_status_network_interface_status_interface_type, ibm_dp_status_network_interface_status_name, ibm_dp_status_network_interface_status_ip_type | Number of transmit errors |\n| `snmp.device_prof_ibm_dpStatusNetworkInterfaceStatusTxHCBytes` | `bit/s` | per ibm_dp_status_network_interface_status_interface_type, ibm_dp_status_network_interface_status_name, ibm_dp_status_network_interface_status_ip_type | Number of transmitted high capacity bytes |\n| `snmp.device_prof_ibm_dpStatusNetworkInterfaceStatusTxHCPackets` | `{packet}/s` | per ibm_dp_status_network_interface_status_interface_type, ibm_dp_status_network_interface_status_name, ibm_dp_status_network_interface_status_ip_type | Number of transmitted high capacity packets |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibm_dpStatusTCPSummaryclosed` | `{connection}` | device | Number of TCP connections in closed state |\n| `snmp.device_prof_ibm_dpStatusTCPSummaryclosewait` | `{connection}` | device | Number of TCP connections in close wait state |\n| `snmp.device_prof_ibm_dpStatusTCPSummaryclosing` | `{connection}` | device | Number of TCP connections in closing state |\n| `snmp.device_prof_ibm_dpStatusTCPSummaryestablished` | `{connection}` | device | Number of established TCP connections |\n| `snmp.device_prof_ibm_dpStatusTCPSummaryfinwait1` | `{connection}` | device | Number of TCP connections in FIN wait 1 state |\n| `snmp.device_prof_ibm_dpStatusTCPSummaryfinwait2` | `{connection}` | device | Number of TCP connections in FIN wait 2 state |\n| `snmp.device_prof_ibm_dpStatusTCPSummarylastack` | `{connection}` | device | Number of TCP connections in last ACK state |\n| `snmp.device_prof_ibm_dpStatusTCPSummarylisten` | `{connection}` | device | Number of TCP connections in listen state |\n| `snmp.device_prof_ibm_dpStatusTCPSummarysynreceived` | `{connection}` | device | Number of TCP connections in SYN received state |\n| `snmp.device_prof_ibm_dpStatusTCPSummarysynsent` | `{connection}` | device | Number of TCP connections in SYN sent state |\n| `snmp.device_prof_ibm_dpStatusTCPSummarytimewait` | `{connection}` | device | Number of TCP connections in TIME wait state |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n\n### System / FileSystem\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibm_dpStatusFilesystemStatusFreeEncrypted` | `By` | device | Free encrypted filesystem space |\n| `snmp.device_prof_ibm_dpStatusFilesystemStatusFreeInternal` | `By` | device | Free internal filesystem space |\n| `snmp.device_prof_ibm_dpStatusFilesystemStatusFreeTemporary` | `By` | device | Free temporary filesystem space |\n| `snmp.device_prof_ibm_dpStatusFilesystemStatusTotalEncrypted` | `By` | device | Total encrypted filesystem space |\n| `snmp.device_prof_ibm_dpStatusFilesystemStatusTotalInternal` | `By` | device | Total internal filesystem space |\n| `snmp.device_prof_ibm_dpStatusFilesystemStatusTotalTemporary` | `By` | device | Total temporary filesystem space |\n\n### System / Load\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibm_dpStatusSystemUsageLoad` | `{load}` | device | System load average |\n\n### System / Log\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibm_dpStatusLogTargetStatusEventsDropped` | `{event}/s` | per ibm_dp_status_log_target_status_log_target | Number of log target events dropped |\n| `snmp.device_prof_ibm_dpStatusLogTargetStatusEventsPending` | `{event}/s` | per ibm_dp_status_log_target_status_log_target | Number of log target events pending |\n| `snmp.device_prof_ibm_dpStatusLogTargetStatusEventsProcessed` | `{event}/s` | per ibm_dp_status_log_target_status_log_target | Number of log target events processed |\n| `snmp.device_prof_ibm_dpStatusLogTargetStatusStatus` | `{status}` | per ibm_dp_status_log_target_status_log_target | The status of the log target |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_usage` | `%` | device | Memory usage percentage |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-IBM_Datapower_Gateway",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"IBM Lenovo Server",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"ibm.svg"},keywords:["ibm","lenovo","server","snmp","server","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# IBM Lenovo Server\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor IBM Lenovo Server (server) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **ibm-lenovo-server.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as IBM Lenovo Server via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this IBM Lenovo Server profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**42 metrics** in 10 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Fan | 1 |\n| Hardware / Sensor | 2 |\n| Network / Interface | 4 |\n| System / Activity | 2 |\n| System / CPU | 3 |\n| System / Disk | 15 |\n| System / Health | 1 |\n| System / Memory | 11 |\n| System / Uptime | 1 |\n| Uncategorized | 2 |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibm_imm_fanSpeed` | `%` | per ibm_imm_fan_index, ibm_imm_fan_descr | Fan speed expressed in percent of maximum RPM. |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibm_imm_tempReading` | `Cel` | per ibm_imm_temp_index, ibm_imm_temp_descr | The measured temperature. |\n| `snmp.device_prof_ibm_imm_voltReading` | `V` | per ibm_imm_volt_index, ibm_imm_volt_descr | The measured voltage. |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n| `snmp.device_prof_ucd_ssRawContexts` | `{switch}/s` | device | Number of context switches |\n| `snmp.device_prof_ucd_ssRawInterrupts` | `{interrupt}/s` | device | Number of interrupts processed |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_diskIOLA1` | `%` | per ucd_disk_io_device | The 1 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA15` | `%` | per ucd_disk_io_device | The 15 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA5` | `%` | per ucd_disk_io_device | The 5 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIONReadX` | `By/s` | per ucd_disk_io_device | The number of bytes read from this device since boot |\n| `snmp.device_prof_ucd_diskIONWrittenX` | `By/s` | per ucd_disk_io_device | The number of bytes written to this device since boot |\n| `snmp.device_prof_ucd_diskIOReads` | `{read}/s` | per ucd_disk_io_device | The number of read accesses from this device since boot |\n| `snmp.device_prof_ucd_diskIOWrites` | `{write}/s` | per ucd_disk_io_device | The number of write accesses to this device since boot |\n| `snmp.device_prof_ucd_dskAvail` | `By` | per ucd_dsk_path, ucd_dsk_device | Available space on the disk |\n| `snmp.device_prof_ucd_dskErrorFlag` | `{status}` | per ucd_dsk_path, ucd_dsk_device | Flag signaling that the disk or partition is under the minimum required space configured for it |\n| `snmp.device_prof_ucd_dskPercent` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of space used on disk |\n| `snmp.device_prof_ucd_dskPercentNode` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of inodes used on disk |\n| `snmp.device_prof_ucd_dskTotal` | `By` | per ucd_dsk_path, ucd_dsk_device | Total size of the disk/partition |\n| `snmp.device_prof_ucd_dskUsed` | `By` | per ucd_dsk_path, ucd_dsk_device | Used space on the disk |\n| `snmp.device_prof_ucd_ssIORawReceived` | `By/s` | device | Amount of data read from disk or other block device |\n| `snmp.device_prof_ucd_ssIORawSent` | `By/s` | device | Amount of data written to disk or other block device |\n\n### System / Health\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibm_imm_systemHealthStat` | `{status}` | device | Indicates status of system health for the system in which the IMM resides |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | device | The amount of real/physical memory currently unused or available |\n| `snmp.device_prof_ucd_memAvailSwap` | `By` | device | The amount of swap space currently unused or available |\n| `snmp.device_prof_ucd_memBuffer` | `By` | device | The total amount of real or virtual memory currently allocated for use as memory buffers |\n| `snmp.device_prof_ucd_memCached` | `By` | device | The total amount of real or virtual memory currently allocated for use as cached memory |\n| `snmp.device_prof_ucd_memMinimumSwap` | `By` | device | The minimum amount of swap space expected to be kept free or available during normal operation of this host |\n| `snmp.device_prof_ucd_memShared` | `By` | device | The total amount of real or virtual memory currently allocated for use as shared memory |\n| `snmp.device_prof_ucd_memTotalFree` | `By` | device | The total amount of memory free or available for use on this host |\n| `snmp.device_prof_ucd_memTotalSwap` | `By` | device | The total amount of swap space configured for this host |\n| `snmp.device_prof_ucd_memoryTotal` | `By` | device | The total amount of real/physical memory installed on this host |\n| `snmp.device_prof_ucd_ssRawSwapIn` | `By/s` | device | Amount of memory swapped in from disk |\n| `snmp.device_prof_ucd_ssRawSwapOut` | `By/s` | device | Amount of memory swapped out to disk |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-IBM_Lenovo_Server",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"IDRAC",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"dell.svg"},keywords:["idrac","snmp","server","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# IDRAC\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor IDRAC (server) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 2 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **idrac.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as IDRAC via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this IDRAC profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**75 metrics** in 24 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Battery | 3 |\n| Hardware / CMC | 1 |\n| Hardware / Chassis | 2 |\n| Hardware / Controller | 1 |\n| Hardware / Cooling | 8 |\n| Hardware / Disk | 4 |\n| Hardware / Enclosure | 1 |\n| Hardware / FRU | 1 |\n| Hardware / Intrusion | 2 |\n| Hardware / Memory | 2 |\n| Hardware / PCIDevice | 1 |\n| Hardware / Power | 7 |\n| Hardware / PowerSupply | 3 |\n| Hardware / Processor | 7 |\n| Hardware / Sensor | 10 |\n| Hardware / Slot | 1 |\n| Network / Device | 1 |\n| Network / Interface | 10 |\n| System / BIOS | 1 |\n| System / Disk | 4 |\n| System / Global | 2 |\n| System / Power | 1 |\n| System / Redundancy | 1 |\n| System / Uptime | 1 |\n\n### Hardware / Battery\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_batteryState` | `{status}` | per battery_fqdd, battery_name | State of the battery |\n| `snmp.device_prof_systemBatteryReading` | `{reading}` | per chassis_index, system_battery_index, system_battery_location_name | Reading of the system battery |\n| `snmp.device_prof_systemBatteryStatus` | `{status}` | per chassis_index, system_battery_index, system_battery_location_name | Status of the system battery |\n\n### Hardware / CMC\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_drsCMCCurrStatus` | `{status}` | device | CMC health status being monitored by the chassis management card |\n\n### Hardware / Chassis\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemStateChassisIntrusionStatusCombined` | `{status}` | per chassis_index | Combined chassis intrusion status of the system state |\n| `snmp.device_prof_systemStateChassisStatus` | `{status}` | per chassis_index | Chassis status of the system state |\n\n### Hardware / Controller\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_controllerRollUpStatus` | `{status}` | per controller_number, controller_name, controller_pci_slot, controller_fqdd | Roll up status of the controller |\n\n### Hardware / Cooling\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_coolingDeviceDiscreteReading` | `{reading}` | per chassis_index, cooling_device_name, cooling_device_type, cooling_device_location_name, cooling_device_fqdd | Discrete reading of the cooling device |\n| `snmp.device_prof_coolingDeviceReading` | `{revolution}/min` | per chassis_index, cooling_device_name, cooling_device_type, cooling_device_location_name, cooling_device_fqdd | Reading of the cooling device |\n| `snmp.device_prof_coolingDeviceStatus` | `{status}` | per chassis_index, cooling_device_name, cooling_device_type, cooling_device_location_name, cooling_device_fqdd | Status of the cooling device |\n| `snmp.device_prof_coolingUnitRedundancyStatus` | `{status}` | per chassis_index, cooling_unit_index, cooling_unit_name | Redundancy status of the cooling unit |\n| `snmp.device_prof_coolingUnitStatus` | `{status}` | per chassis_index, cooling_unit_index, cooling_unit_name | Status of the cooling unit |\n| `snmp.device_prof_systemStateCoolingDeviceStatusCombined` | `{status}` | per chassis_index | Combined cooling device status of the system state |\n| `snmp.device_prof_systemStateCoolingUnitStatusCombined` | `{status}` | per chassis_index | Combined cooling unit status of the system state |\n| `snmp.device_prof_systemStateCoolingUnitStatusRedundancy` | `{status}` | per chassis_index | Cooling unit status redundancy of the system state |\n\n### Hardware / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_physicalDiskCapacityInMB` | `By` | per disk_number, disk_name | Capacity of the physical disk in megabytes |\n| `snmp.device_prof_physicalDiskFreeSpaceInMB` | `By` | per disk_number, disk_name | Free space of the physical disk in megabytes |\n| `snmp.device_prof_physicalDiskState` | `{status}` | per disk_number, disk_name | State of the physical disk |\n| `snmp.device_prof_physicalDiskUsedSpaceInMB` | `By` | per disk_number, disk_name | Used space of the physical disk in megabytes |\n\n### Hardware / Enclosure\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_enclosurePowerSupplyState` | `{status}` | per supply_name, enclosure_power_supply_number, enclosure_power_supply_fqdd | State of the enclosure power supply |\n\n### Hardware / FRU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fruInformationStatus` | `{status}` | per chassis_index, fru_index, fru_fqdd | Status of the FRU information |\n\n### Hardware / Intrusion\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_intrusionReading` | `{reading}` | per chassis_index, intrusion_index, intrusion_location_name | Reading of the intrusion |\n| `snmp.device_prof_intrusionStatus` | `{status}` | per chassis_index, intrusion_index, intrusion_location_name | Status of the intrusion |\n\n### Hardware / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memoryDeviceStatus` | `{status}` | per device_type, device_index, chassis_index, device_type | Status of the memory device |\n| `snmp.device_prof_systemStateMemoryDeviceStatusCombined` | `{status}` | per chassis_index | Combined memory device status of the system state |\n\n### Hardware / PCIDevice\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_pCIDeviceStatus` | `{status}` | per device_descr_name, chassis_index | Status of the PCI device |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_drsAmpsReading` | `A` | per chassis_index, drs_psu_index | Instantaneous chassis current usage in amperes |\n| `snmp.device_prof_drsKWhCumulative` | `kWh` | per chassis_index, drs_psu_index | Cumulative chassis power usage in kilowatt hours since last reset |\n| `snmp.device_prof_drsPowerCurrStatus` | `{status}` | device | Power subsystem health status being monitored by the chassis management card |\n| `snmp.device_prof_drsWattsReading` | `W` | per chassis_index, drs_psu_index | Instantaneous chassis power usage in watts |\n| `snmp.device_prof_systemStatePowerSupplyStatusCombined` | `{state}` | per chassis_index | Combined power supply status of the system state |\n| `snmp.device_prof_systemStatePowerUnitStatusCombined` | `{status}` | per chassis_index | Combined power unit status of the system state |\n| `snmp.device_prof_systemStatePowerUnitStatusRedundancy` | `{status}` | per chassis_index | Power unit status redundancy of the system state |\n\n### Hardware / PowerSupply\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_powerSupplyCurrentInputVoltage` | `V` | per chassis_index, power_supply_index, power_supply_fqdd | Current input voltage of the power supply |\n| `snmp.device_prof_powerSupplyMaximumInputVoltage` | `V` | per chassis_index, power_supply_index, power_supply_fqdd | Maximum input voltage of the power supply |\n| `snmp.device_prof_powerSupplyOutputWatts` | `W` | per chassis_index, power_supply_index, power_supply_fqdd | Output power of the power supply in watts |\n\n### Hardware / Processor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_processorDeviceCurrentSpeed` | `MHz` | per chassis_index, processor_device_index, processor_device_brand_name, processor_device_fqdd | Current speed of the processor device in megahertz |\n| `snmp.device_prof_processorDeviceMaximumSpeed` | `MHz` | per chassis_index, processor_device_index, processor_device_brand_name, processor_device_fqdd | Maximum speed of the processor device in megahertz |\n| `snmp.device_prof_processorDeviceStatus` | `{status}` | per chassis_index, processor_device_index, processor_device_brand_name, processor_device_fqdd | Status of the processor device |\n| `snmp.device_prof_processorDeviceStatusReading` | `{reading}` | per chassis_index, processor_device_status_index, processor_device_status_location_name | Reading of the processor device status |\n| `snmp.device_prof_processorDeviceStatusStatus` | `{status}` | per chassis_index, processor_device_status_index, processor_device_status_location_name | Status of the processor device status |\n| `snmp.device_prof_processorDeviceVoltage` | `V` | per chassis_index, processor_device_index, processor_device_brand_name, processor_device_fqdd | Voltage of the processor device in volts |\n| `snmp.device_prof_systemStateProcessorDeviceStatusCombined` | `{status}` | per chassis_index | Combined processor device status of the system state |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_amperageProbeReading` | `A` | per probe_type, chassis_index, amperage_probe_index | Reading of the amperage probe in amperes |\n| `snmp.device_prof_amperageProbeStatus` | `{status}` | per probe_type, chassis_index, amperage_probe_index | Status of the amperage probe |\n| `snmp.device_prof_systemStateAmperageStatusCombined` | `{status}` | per chassis_index | Combined amperage status of the system state |\n| `snmp.device_prof_systemStateTemperatureStatisticsStatusCombined` | `{status}` | per chassis_index | Combined temperature statistics status of the system state |\n| `snmp.device_prof_systemStateTemperatureStatusCombined` | `{status}` | per chassis_index | Combined temperature status of the system state |\n| `snmp.device_prof_temperatureProbeDiscreteReading` | `{reading}` | per chassis_index, temperature_probe_index, temperature_probe_type, temperature_probe_location_name | Discrete reading of the temperature probe |\n| `snmp.device_prof_temperatureProbeReading` | `Cel` | per chassis_index, temperature_probe_index, temperature_probe_type, temperature_probe_location_name | Reading of the temperature probe in degrees Celsius |\n| `snmp.device_prof_temperatureProbeStatus` | `{status}` | per chassis_index, temperature_probe_index, temperature_probe_type, temperature_probe_location_name | Status of the temperature probe |\n| `snmp.device_prof_voltageProbeReading` | `V` | per chassis_index, voltage_probe_index, probe_type | Reading of the voltage probe in volts |\n| `snmp.device_prof_voltageProbeStatus` | `{status}` | per chassis_index, voltage_probe_index, probe_type | Status of the voltage probe |\n\n### Hardware / Slot\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemSlotStatus` | `{status}` | per slot_name, chassis_index | Status of the system slot |\n\n### Network / Device\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_networkDeviceStatus` | `{status}` | per chassis_index, mac_addr, device_fqdd | Status of the network device |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_adapterCollisions` | `{collision}/s` | per adapter | Total number of single collisions |\n| `snmp.device_prof_adapterRxBytes` | `By/s` | per adapter | Total number of bytes received |\n| `snmp.device_prof_adapterRxDropped` | `{drop}/s` | per adapter | Total number of receive packets dropped due to overrun |\n| `snmp.device_prof_adapterRxErrors` | `{error}/s` | per adapter | Total number of packets received with errors (packets that failed to reach the protocol) |\n| `snmp.device_prof_adapterRxMulticast` | `{packet}/s` | per adapter | Total number of Multicast packets received |\n| `snmp.device_prof_adapterRxPackets` | `{packet}/s` | per adapter | Total number of packets received |\n| `snmp.device_prof_adapterTxBytes` | `By/s` | per adapter | Total number of bytes transmitted |\n| `snmp.device_prof_adapterTxDropped` | `{drop}/s` | per adapter | Total number of transmit packets dropped due to successive collisions |\n| `snmp.device_prof_adapterTxErrors` | `{error}/s` | per adapter | Total number of packets that failed to transmit |\n| `snmp.device_prof_adapterTxPackets` | `{packet}/s` | per adapter | Total number of packets transmitted |\n\n### System / BIOS\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemBIOSStatus` | `{status}` | per chassis_index, system_bios_index | Status of the system BIOS |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_virtualDiskComponentStatus` | `{status}` | per virtual_disk_number, virtual_disk_name, virtual_disk_fqdd | Component status of the virtual disk |\n| `snmp.device_prof_virtualDiskSizeInMB` | `By` | per virtual_disk_number, virtual_disk_name, virtual_disk_fqdd | Size of the virtual disk in megabytes |\n| `snmp.device_prof_virtualDiskState` | `{status}` | per virtual_disk_number, virtual_disk_name, virtual_disk_fqdd | State of the virtual disk |\n| `snmp.device_prof_virtualDiskT10PIStatus` | `{status}` | per virtual_disk_number, virtual_disk_name, virtual_disk_fqdd | T10 PI status of the virtual disk |\n\n### System / Global\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_drsGlobalCurrStatus` | `{status}` | device | Overall chassis status being monitored by the chassis management card |\n| `snmp.device_prof_drsGlobalSystemStatus` | `{status}` | device | Overall chassis status being monitored by the chassis management card |\n\n### System / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_powerUsageStatus` | `{status}` | per chassis_index, power_usage_index, power_usage_entity_name | Status of the power usage |\n\n### System / Redundancy\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_drsRedCurrStatus` | `{status}` | device | Redundancy status being monitored by the chassis management card |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-IDRAC",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Infinera Coriant Groove",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["infinera","coriant","groove","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Infinera Coriant Groove\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Infinera Coriant Groove (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **infinera-coriant-groove.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Infinera Coriant Groove via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Infinera Coriant Groove profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**21 metrics** in 6 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Card | 5 |\n| Hardware / Shelf | 4 |\n| Network / Interface | 4 |\n| Network / Optical | 6 |\n| System / Power | 1 |\n| System / Uptime | 1 |\n\n### Hardware / Card\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_coriant_groove_cardAdminStatus` | `{status}` | per coriant_groove_card_required_type, coriant_groove_card_equipment_name, coriant_groove_card_alias_name | The administrative state specifies the permission to use or prohibition against using the resource |\n| `snmp.device_prof_coriant_groove_cardFanSpeedRate` | `%` | per coriant_groove_card_required_type, coriant_groove_card_equipment_name, coriant_groove_card_alias_name | The fan speed of percentage |\n| `snmp.device_prof_coriant_groove_cardMode` | `{status}` | per coriant_groove_card_required_type, coriant_groove_card_equipment_name, coriant_groove_card_alias_name | The card mode |\n| `snmp.device_prof_coriant_groove_cardOperStatus` | `{status}` | per coriant_groove_card_required_type, coriant_groove_card_equipment_name, coriant_groove_card_alias_name | The operational state specifies whether or not a resource is able to provide service |\n| `snmp.device_prof_coriant_groove_cardTemperature` | `Cel` | per coriant_groove_card_required_type, coriant_groove_card_equipment_name, coriant_groove_card_alias_name | Temperature at the monitoring point |\n\n### Hardware / Shelf\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_coriant_groove_shelfAdminStatus` | `{status}` | per coriant_groove_shelf_id, coriant_groove_shelf_location, coriant_groove_shelf_alias_name | The administrative state specifies the permission to use or prohibition against using the resource |\n| `snmp.device_prof_coriant_groove_shelfInletTemperature` | `Cel` | per coriant_groove_shelf_id, coriant_groove_shelf_location, coriant_groove_shelf_alias_name | Shelf inlet temperature |\n| `snmp.device_prof_coriant_groove_shelfOperStatus` | `{status}` | per coriant_groove_shelf_id, coriant_groove_shelf_location, coriant_groove_shelf_alias_name | The operational state specifies whether or not a resource is able to provide service |\n| `snmp.device_prof_coriant_groove_shelfOutletTemperature` | `Cel` | per coriant_groove_shelf_id, coriant_groove_shelf_location, coriant_groove_shelf_alias_name | Shelf outlet temperature |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / Optical\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_coriant_groove_ochOsAdminStatus` | `{status}` | per coriant_groove_och_os_alias_name, coriant_groove_och_os_service_label | The administrative state specifies the permission to use or prohibition against using the resource |\n| `snmp.device_prof_coriant_groove_ochOsCD` | `ps/nm` | per coriant_groove_och_os_alias_name, coriant_groove_och_os_service_label | Value of Chromatic Dispersion |\n| `snmp.device_prof_coriant_groove_ochOsOSNR` | `dB` | per coriant_groove_och_os_alias_name, coriant_groove_och_os_service_label | Current value of OSNR |\n| `snmp.device_prof_coriant_groove_ochOsOperStatus` | `{status}` | per coriant_groove_och_os_alias_name, coriant_groove_och_os_service_label | The operational state specifies whether or not a resource is able to provide service |\n| `snmp.device_prof_coriant_groove_portRxOpticalPower` | `dBm` | per coriant_groove_port_name, coriant_groove_port_alias_name | Received optical power |\n| `snmp.device_prof_coriant_groove_portTxOpticalPower` | `dBm` | per coriant_groove_port_name, coriant_groove_port_alias_name | Transmitted optical power |\n\n### System / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_coriant_groove_systemPowerConsumptionCurrent` | `W` | device | Current power consumption of the system |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Infinera_Coriant_Groove",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Infoblox Ipam",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["infoblox","ipam","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Infoblox Ipam\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Infoblox Ipam (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 50 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **infoblox-ipam.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Infoblox Ipam via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Infoblox Ipam profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**53 metrics** in 12 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| DHCP / DDNS | 1 |\n| DNS / DDNS | 4 |\n| DNS / Zone | 6 |\n| Network / Interface | 4 |\n| System / Activity | 2 |\n| System / CPU | 3 |\n| System / Cluster | 2 |\n| System / Disk | 15 |\n| System / Memory | 12 |\n| System / Service | 1 |\n| System / Uptime | 1 |\n| Uncategorized | 2 |\n\n### DHCP / DDNS\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibDhcpDeferredQueueSize` | `{session}` | device | The size of deferred dynamic DNS update queue |\n\n### DNS / DDNS\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibDDNSUpdateFailure` | `{update}/s` | device | Number of failure dynamic DNS update |\n| `snmp.device_prof_ibDDNSUpdatePrerequisiteReject` | `{update}/s` | device | Number of dynamic DNS update rejects due to prerequisite failure |\n| `snmp.device_prof_ibDDNSUpdateReject` | `{update}/s` | device | Number of dynamic DNS update rejects maybe due to permission failure |\n| `snmp.device_prof_ibDDNSUpdateSuccess` | `{update}/s` | device | Number of successful dynamic DNS update |\n\n### DNS / Zone\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibBindZoneFailure` | `{query}/s` | per ib_bind_zone_name | Number of Failed queries since DNS process started |\n| `snmp.device_prof_ibBindZoneNxDomain` | `{query}/s` | per ib_bind_zone_name | Number of DNS query received for non-existent domain |\n| `snmp.device_prof_ibBindZoneNxRRset` | `{query}/s` | per ib_bind_zone_name | Number of DNS query received for non-existent record |\n| `snmp.device_prof_ibBindZoneRecursion` | `{query}/s` | per ib_bind_zone_name | Number of Queries received using recursion since DNS process started |\n| `snmp.device_prof_ibBindZoneReferral` | `{referral}/s` | per ib_bind_zone_name | Number of DNS referrals since DNS process started |\n| `snmp.device_prof_ibBindZoneSuccess` | `{response}/s` | per ib_bind_zone_name | Number of Successful responses since DNS process started |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n| `snmp.device_prof_ucd_ssRawContexts` | `{switch}/s` | device | Number of context switches |\n| `snmp.device_prof_ucd_ssRawInterrupts` | `{interrupt}/s` | device | Number of interrupts processed |\n\n### System / Cluster\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibNodeQueueFromMaster` | `{session}` | per ib_node_ip_address | Sent queue size from master |\n| `snmp.device_prof_ibNodeQueueToMaster` | `{session}` | per ib_node_ip_address | Receive queue size to master |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_diskIOLA1` | `%` | per ucd_disk_io_device | The 1 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA15` | `%` | per ucd_disk_io_device | The 15 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA5` | `%` | per ucd_disk_io_device | The 5 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIONReadX` | `By/s` | per ucd_disk_io_device | The number of bytes read from this device since boot |\n| `snmp.device_prof_ucd_diskIONWrittenX` | `By/s` | per ucd_disk_io_device | The number of bytes written to this device since boot |\n| `snmp.device_prof_ucd_diskIOReads` | `{read}/s` | per ucd_disk_io_device | The number of read accesses from this device since boot |\n| `snmp.device_prof_ucd_diskIOWrites` | `{write}/s` | per ucd_disk_io_device | The number of write accesses to this device since boot |\n| `snmp.device_prof_ucd_dskAvail` | `By` | per ucd_dsk_path, ucd_dsk_device | Available space on the disk |\n| `snmp.device_prof_ucd_dskErrorFlag` | `{status}` | per ucd_dsk_path, ucd_dsk_device | Flag signaling that the disk or partition is under the minimum required space configured for it |\n| `snmp.device_prof_ucd_dskPercent` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of space used on disk |\n| `snmp.device_prof_ucd_dskPercentNode` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of inodes used on disk |\n| `snmp.device_prof_ucd_dskTotal` | `By` | per ucd_dsk_path, ucd_dsk_device | Total size of the disk/partition |\n| `snmp.device_prof_ucd_dskUsed` | `By` | per ucd_dsk_path, ucd_dsk_device | Used space on the disk |\n| `snmp.device_prof_ucd_ssIORawReceived` | `By/s` | device | Amount of data read from disk or other block device |\n| `snmp.device_prof_ucd_ssIORawSent` | `By/s` | device | Amount of data written to disk or other block device |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | device | The amount of real/physical memory currently unused or available |\n| `snmp.device_prof_memory_usage` | `%` | device | Current Memory usage |\n| `snmp.device_prof_ucd_memAvailSwap` | `By` | device | The amount of swap space currently unused or available |\n| `snmp.device_prof_ucd_memBuffer` | `By` | device | The total amount of real or virtual memory currently allocated for use as memory buffers |\n| `snmp.device_prof_ucd_memCached` | `By` | device | The total amount of real or virtual memory currently allocated for use as cached memory |\n| `snmp.device_prof_ucd_memMinimumSwap` | `By` | device | The minimum amount of swap space expected to be kept free or available during normal operation of this host |\n| `snmp.device_prof_ucd_memShared` | `By` | device | The total amount of real or virtual memory currently allocated for use as shared memory |\n| `snmp.device_prof_ucd_memTotalFree` | `By` | device | The total amount of memory free or available for use on this host |\n| `snmp.device_prof_ucd_memTotalSwap` | `By` | device | The total amount of swap space configured for this host |\n| `snmp.device_prof_ucd_memoryTotal` | `By` | device | The total amount of real/physical memory installed on this host |\n| `snmp.device_prof_ucd_ssRawSwapIn` | `By/s` | device | Amount of memory swapped in from disk |\n| `snmp.device_prof_ucd_ssRawSwapOut` | `By/s` | device | Amount of memory swapped out to disk |\n\n### System / Service\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ibServiceStatus` | `{status}` | per ib_service_name, ib_service_desc | Service Status |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Infoblox_Ipam",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Isilon",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"dell.svg"},keywords:["isilon","snmp","storage","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Isilon\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Isilon (storage) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 2 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **isilon.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Isilon via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Isilon profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**93 metrics** in 12 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Disk | 2 |\n| Hardware / Fan | 1 |\n| Network / IP | 28 |\n| Network / Interface | 27 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| Storage / FileSystem | 4 |\n| Storage / Protocol | 4 |\n| Storage / Quota | 4 |\n| System / Cluster | 1 |\n| System / Node | 3 |\n| System / Uptime | 1 |\n\n### Hardware / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_diskSizeBytes` | `By` | per disk_bay, disk_logical_number, disk_chassis_number | The size of the disk in bytes |\n| `snmp.device_prof_diskStatus` | `{status}` | per disk_bay, disk_logical_number, disk_chassis_number | The operational status of the disk |\n\n### Hardware / Fan\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_fanSpeed` | `{revolution}/min` | per fan_number, fan_name | The current speed of the fan in revolutions per minute |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### Storage / FileSystem\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_clusterIfsInBytes` | `By/s` | device | The cumulative number of bytes into /ifs |\n| `snmp.device_prof_clusterIfsOutBytes` | `By/s` | device | The cumulative number of bytes out of /ifs |\n| `snmp.device_prof_ifsTotalBytes` | `By` | device | The total cluster capacity of the /ifs filesystem in bytes |\n| `snmp.device_prof_ifsUsedBytes` | `By` | device | The number of bytes used in the /ifs filesystem |\n\n### Storage / Protocol\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_latencyAverage` | `us` | per protocol_name | The average latency in microseconds for all operations for the protocol |\n| `snmp.device_prof_latencyMax` | `us` | per protocol_name | The maximum latency in microseconds for all operations for the protocol |\n| `snmp.device_prof_latencyMin` | `us` | per protocol_name | The minimum latency in microseconds for all operations for the protocol |\n| `snmp.device_prof_protocolOpsPerSecond` | `{operation}/s` | per protocol_name | The number of operations per second for the last 5 second |\n\n### Storage / Quota\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_quotaAdvisoryThreshold` | `By` | per quota_domain_id, quota_type, quota_id | The advisory threshold in bytes |\n| `snmp.device_prof_quotaHardThreshold` | `By` | per quota_domain_id, quota_type, quota_id | The hard threshold in bytes |\n| `snmp.device_prof_quotaSoftThreshold` | `By` | per quota_domain_id, quota_type, quota_id | The soft threshold in bytes |\n| `snmp.device_prof_quotaUsage` | `By` | per quota_domain_id, quota_type, quota_id | The current quota usage in bytes |\n\n### System / Cluster\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_clusterHealth` | `{status}` | device | The overall health of the cluster |\n\n### System / Node\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nodeHealth` | `{status}` | device | The overall health of the node |\n| `snmp.device_prof_nodeIfsInBytes` | `By/s` | device | The number of bytes into /ifs through this node |\n| `snmp.device_prof_nodeIfsOutBytes` | `By/s` | device | The number of bytes out of /ifs through this node |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Isilon",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Ixsystems Truenas",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["ixsystems","truenas","snmp","storage","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Ixsystems Truenas\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Ixsystems Truenas (storage) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **ixsystems-truenas.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Ixsystems Truenas via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Ixsystems Truenas profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**71 metrics** in 8 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| Storage / ZFS | 33 |\n| System / Activity | 2 |\n| System / CPU | 3 |\n| System / Disk | 15 |\n| System / Memory | 11 |\n| System / Uptime | 1 |\n| Uncategorized | 2 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Storage / ZFS\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_freenas_datasetAvailable` | `By` | per freenas_dataset_index, freenas_dataset_descr | Available space in the dataset |\n| `snmp.device_prof_freenas_datasetSize` | `By` | per freenas_dataset_index, freenas_dataset_descr | Size of the dataset |\n| `snmp.device_prof_freenas_datasetUsed` | `By` | per freenas_dataset_index, freenas_dataset_descr | Used space in the dataset |\n| `snmp.device_prof_freenas_zfsArcC` | `By` | device | ARC cache target size |\n| `snmp.device_prof_freenas_zfsArcCacheHitRatio` | `%` | device | Arc cache hit ration percentage |\n| `snmp.device_prof_freenas_zfsArcCacheMissRatio` | `%` | device | Arc cache miss ration percentage |\n| `snmp.device_prof_freenas_zfsArcData` | `By` | device | Data size in the ARC cache |\n| `snmp.device_prof_freenas_zfsArcHits` | `{hit}/s` | device | Number of ARC cache hits |\n| `snmp.device_prof_freenas_zfsArcMeta` | `By` | device | Metadata size in the ARC cache |\n| `snmp.device_prof_freenas_zfsArcMissPercent` | `%` | device | Arc miss percentage |\n| `snmp.device_prof_freenas_zfsArcMisses` | `{miss}/s` | device | Number of ARC cache misses |\n| `snmp.device_prof_freenas_zfsArcP` | `By` | device | ARC cache size |\n| `snmp.device_prof_freenas_zfsArcSize` | `By` | device | Size of the ARC cache |\n| `snmp.device_prof_freenas_zfsL2ArcHits` | `{hit}/s` | device | Number of L2ARC cache hits |\n| `snmp.device_prof_freenas_zfsL2ArcMisses` | `{miss}/s` | device | Number of L2ARC cache misses |\n| `snmp.device_prof_freenas_zfsL2ArcRead` | `{read}/s` | device | Number of L2ARC reads |\n| `snmp.device_prof_freenas_zfsL2ArcSize` | `By` | device | Size of the L2ARC cache |\n| `snmp.device_prof_freenas_zfsL2ArcWrite` | `{write}/s` | device | Number of L2ARC writes |\n| `snmp.device_prof_freenas_zfsZilstatOps10sec` | `{operation}/s` | device | The ops column parsed from the command zilstat 10 1 |\n| `snmp.device_prof_freenas_zfsZilstatOps1sec` | `{operation}/s` | device | The ops column parsed from the command zilstat 1 1 |\n| `snmp.device_prof_freenas_zfsZilstatOps5sec` | `{operation}/s` | device | The ops column parsed from the command zilstat 5 1 |\n| `snmp.device_prof_freenas_zpoolAvailable` | `By` | per freenas_zpool_index, freenas_zpool_descr | Available space in the pool |\n| `snmp.device_prof_freenas_zpoolHealth` | `{status}` | per freenas_zpool_index, freenas_zpool_descr | The current health of the containing pool, as reported by zpool status. |\n| `snmp.device_prof_freenas_zpoolReadBytes` | `By/s` | per freenas_zpool_index, freenas_zpool_descr | The bandwidth of all read operations (including metadata), expressed as units per second (averaged since system booted) |\n| `snmp.device_prof_freenas_zpoolReadOps` | `{operation}/s` | per freenas_zpool_index, freenas_zpool_descr | The number of read I/O operations sent to the pool or device, including metadata requests (averaged since system booted). |\n| `snmp.device_prof_freenas_zpoolSize` | `By` | per freenas_zpool_index, freenas_zpool_descr | Size of the pool |\n| `snmp.device_prof_freenas_zpoolUsed` | `By` | per freenas_zpool_index, freenas_zpool_descr | Used space in the pool |\n| `snmp.device_prof_freenas_zpoolWriteBytes` | `By/s` | per freenas_zpool_index, freenas_zpool_descr | The bandwidth of all write operations, expressed as units per second (averaged since system booted). |\n| `snmp.device_prof_freenas_zpoolWriteOps` | `{operation}/s` | per freenas_zpool_index, freenas_zpool_descr | The number of write I/O operations sent to the pool or device (averaged since system booted). |\n| `snmp.device_prof_freenas_zvolAvailable` | `By` | per freenas_zvol_index, freenas_zvol_descr | Available space in the zvol |\n| `snmp.device_prof_freenas_zvolReferenced` | `By` | per freenas_zvol_index, freenas_zvol_descr | Referenced space in the zvol |\n| `snmp.device_prof_freenas_zvolSize` | `By` | per freenas_zvol_index, freenas_zvol_descr | Size of the zvol |\n| `snmp.device_prof_freenas_zvolUsed` | `By` | per freenas_zvol_index, freenas_zvol_descr | Used space in the zvol |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n| `snmp.device_prof_ucd_ssRawContexts` | `{switch}/s` | device | Number of context switches |\n| `snmp.device_prof_ucd_ssRawInterrupts` | `{interrupt}/s` | device | Number of interrupts processed |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_diskIOLA1` | `%` | per ucd_disk_io_device | The 1 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA15` | `%` | per ucd_disk_io_device | The 15 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA5` | `%` | per ucd_disk_io_device | The 5 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIONReadX` | `By/s` | per ucd_disk_io_device | The number of bytes read from this device since boot |\n| `snmp.device_prof_ucd_diskIONWrittenX` | `By/s` | per ucd_disk_io_device | The number of bytes written to this device since boot |\n| `snmp.device_prof_ucd_diskIOReads` | `{read}/s` | per ucd_disk_io_device | The number of read accesses from this device since boot |\n| `snmp.device_prof_ucd_diskIOWrites` | `{write}/s` | per ucd_disk_io_device | The number of write accesses to this device since boot |\n| `snmp.device_prof_ucd_dskAvail` | `By` | per ucd_dsk_path, ucd_dsk_device | Available space on the disk |\n| `snmp.device_prof_ucd_dskErrorFlag` | `{status}` | per ucd_dsk_path, ucd_dsk_device | Flag signaling that the disk or partition is under the minimum required space configured for it |\n| `snmp.device_prof_ucd_dskPercent` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of space used on disk |\n| `snmp.device_prof_ucd_dskPercentNode` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of inodes used on disk |\n| `snmp.device_prof_ucd_dskTotal` | `By` | per ucd_dsk_path, ucd_dsk_device | Total size of the disk/partition |\n| `snmp.device_prof_ucd_dskUsed` | `By` | per ucd_dsk_path, ucd_dsk_device | Used space on the disk |\n| `snmp.device_prof_ucd_ssIORawReceived` | `By/s` | device | Amount of data read from disk or other block device |\n| `snmp.device_prof_ucd_ssIORawSent` | `By/s` | device | Amount of data written to disk or other block device |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | device | The amount of real/physical memory currently unused or available |\n| `snmp.device_prof_ucd_memAvailSwap` | `By` | device | The amount of swap space currently unused or available |\n| `snmp.device_prof_ucd_memBuffer` | `By` | device | The total amount of real or virtual memory currently allocated for use as memory buffers |\n| `snmp.device_prof_ucd_memCached` | `By` | device | The total amount of real or virtual memory currently allocated for use as cached memory |\n| `snmp.device_prof_ucd_memMinimumSwap` | `By` | device | The minimum amount of swap space expected to be kept free or available during normal operation of this host |\n| `snmp.device_prof_ucd_memShared` | `By` | device | The total amount of real or virtual memory currently allocated for use as shared memory |\n| `snmp.device_prof_ucd_memTotalFree` | `By` | device | The total amount of memory free or available for use on this host |\n| `snmp.device_prof_ucd_memTotalSwap` | `By` | device | The total amount of swap space configured for this host |\n| `snmp.device_prof_ucd_memoryTotal` | `By` | device | The total amount of real/physical memory installed on this host |\n| `snmp.device_prof_ucd_ssRawSwapIn` | `By/s` | device | Amount of memory swapped in from disk |\n| `snmp.device_prof_ucd_ssRawSwapOut` | `By/s` | device | Amount of memory swapped out to disk |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Ixsystems_Truenas",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Juniper",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"juniper.png"},keywords:["juniper","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Juniper\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Juniper (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 2 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **juniper.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Juniper via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Juniper profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**105 metrics** in 9 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / IP | 28 |\n| Network / Interface | 31 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| System / Activity | 2 |\n| System / CPU | 1 |\n| System / Uptime | 1 |\n| Uncategorized | 14 |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Juniper",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Juniper BGP",link:"",categories:["network-performance-monitoring.bgp"],icon_filename:"juniper.png"},keywords:["juniper","bgp","snmp","routing","peering","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Juniper BGP\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor BGP peering and routing health on Juniper devices over SNMP with Netdata, using Juniper BGP profile coverage.\n\nNetdata polls the BGP peer tables exposed by Juniper devices (vendor and standard BGP MIBs) via SNMP.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDetected automatically for Juniper devices that expose BGP MIBs.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",integration_type:"device",id:"go.d.plugin-snmp-Juniper_BGP",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Juniper EX",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"juniper.png"},keywords:["juniper","ex","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Juniper EX\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Juniper EX (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 44 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **juniper-ex.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Juniper EX via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Juniper EX profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**173 metrics** in 11 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Firewall | 2 |\n| Network / IP | 28 |\n| Network / Interface | 83 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| Network / VirtualChassis | 14 |\n| System / Activity | 2 |\n| System / CPU | 1 |\n| System / Uptime | 1 |\n| Uncategorized | 14 |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_jnxFWCounterByteCount` | `By/s` | per firewall_filter_name, counter_name, counter_type | The number of bytes being counted pertaining to the specified counter. For policers, this field is always zero because policers do\u2026 |\n| `snmp.device_prof_jnxFWCounterPacketCount` | `{packet}/s` | per firewall_filter_name, counter_name, counter_type | The number of packets being counted pertaining to the specified counter or policer |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpNonTcpRDropByteRate` | `By/s` | per interface, queue_number | The rate at which high PLP non TCP bytes were RED-dropped at the output queue on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpNonTcpRDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which high PLP non TCP packets were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpNonTcpRedDropBytes` | `By` | per interface, queue_number | The total number of high PLP non TCP bytes RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpNonTcpRedDropPkts` | `{packet}` | per interface, queue_number | The total number of high PLP non TCP packets RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpRedDropByteRate` | `By/s` | per interface, queue_number | The rate at which high PLP bytes were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpRedDropBytes` | `By` | per interface, queue_number | The total number of high PLP bytes RED-dropped at the output queue on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpRedDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which high PLP packets were RED-dropped at the output |\n| `snmp.device_prof_jnxCosIfsetQstatHpRedDropPkts` | `{packet}` | per interface, queue_number | The total number of high PLP packets RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpTcpRedDropByteRate` | `By/s` | per interface, queue_number | The rate at which high PLP TCP bytes were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpTcpRedDropBytes` | `By` | per interface, queue_number | The total number of high PLP TCP bytes RED-dropped at the output queue on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpTcpRedDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which high PLP TCP packets were RED-dropped at the output |\n| `snmp.device_prof_jnxCosIfsetQstatHpTcpRedDropPkts` | `{packet}` | per interface, queue_number | The total number of high PLP TCP packets RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpNonTcpRDropByteRate` | `By/s` | per interface, queue_number | The rate at which low PLP non TCP bytes were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpNonTcpRDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which low PLP non TCP packets were RED-dropped |\n| `snmp.device_prof_jnxCosIfsetQstatLpNonTcpRedDropBytes` | `By` | per interface, queue_number | The total number of low PLP non TCP bytes RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpNonTcpRedDropPkts` | `{packet}` | per interface, queue_number | The total number of low PLP non TCP packets RED-dropped |\n| `snmp.device_prof_jnxCosIfsetQstatLpRedDropByteRate` | `By/s` | per interface, queue_number | The rate at which low PLP bytes were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpRedDropBytes` | `By` | per interface, queue_number | The total number of low PLP bytes RED-dropped at the output queue on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpRedDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which low PLP packets were RED-dropped at the output |\n| `snmp.device_prof_jnxCosIfsetQstatLpRedDropPkts` | `{packet}` | per interface, queue_number | The total number of low PLP packets RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpTcpRedDropByteRate` | `By/s` | per interface, queue_number | The rate at which low PLP TCP bytes were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpTcpRedDropBytes` | `By` | per interface, queue_number | The total number of low PLP TCP bytes RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpTcpRedDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which low PLP TCP packets were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpTcpRedDropPkts` | `{packet}` | per interface, queue_number | The total number of low PLP TCP packets RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatMHpRedDropByteRate` | `By/s` | per interface, queue_number | The rate at which medium-high PLP bytes were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatMHpRedDropBytes` | `By` | per interface, queue_number | The total number of medium-high PLP bytes RED-dropped at the output queue on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatMHpRedDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which medium-high PLP packets were RED-dropped at the output |\n| `snmp.device_prof_jnxCosIfsetQstatMHpRedDropPkts` | `{packet}` | per interface, queue_number | The total number of medium-high PLP packets RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatMLpRedDropByteRate` | `By/s` | per interface, queue_number | The rate at which medium-low PLP bytes were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatMLpRedDropBytes` | `By` | per interface, queue_number | The total number of medium-low PLP bytes RED-dropped at the output queue on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatMLpRedDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which medium-low PLP packets were RED-dropped at the output |\n| `snmp.device_prof_jnxCosIfsetQstatMLpRedDropPkts` | `{packet}` | per interface, queue_number | The total number of medium-low PLP packets RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatQedByteRate` | `By/s` | per interface, queue_number | The rate at which bytes were queued at the output queue |\n| `snmp.device_prof_jnxCosIfsetQstatQedBytes` | `By` | per interface, queue_number | Number of bytes queued at the output queue |\n| `snmp.device_prof_jnxCosIfsetQstatQedPktRate` | `{packet}/s` | per interface, queue_number | The rate at which packets were queued at the output queue |\n| `snmp.device_prof_jnxCosIfsetQstatQedPkts` | `{packet}` | per interface, queue_number | The total number of packets queued at the output queue |\n| `snmp.device_prof_jnxCosIfsetQstatRateLimitDropByteRate` | `By/s` | per interface, queue_number | The rate at which bytes are rate-limit dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatRateLimitDropBytes` | `By` | per interface, queue_number | The total number of rate-limit dropped bytes at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatRateLimitDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which packets are rate-limit dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatRateLimitDropPkts` | `{packet}` | per interface, queue_number | The total number of rate-limit dropped packets at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatTailDropPktRate` | `{packet}/s` | per interface, queue_number | The tail drop packet rate for the queue |\n| `snmp.device_prof_jnxCosIfsetQstatTailDropPkts` | `{packet}` | per interface, queue_number | The number of packets tail dropped at the output queue |\n| `snmp.device_prof_jnxCosIfsetQstatTotalRedDropByteRate` | `By/s` | per interface, queue_number | The rate at which bytes were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatTotalRedDropBytes` | `By` | per interface, queue_number | The total number of bytes RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatTotalRedDropPktRate` | `{packet}/s` | per interface, queue_number | The most recent estimate of per-second RED-dropped packets at the output queue on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatTotalRedDropPkts` | `{packet}` | per interface, queue_number | Total number of packets dropped due to RED at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatTxedByteRate` | `By/s` | per interface, queue_number | The queue's current transmit rate in bytes per second |\n| `snmp.device_prof_jnxCosIfsetQstatTxedBytes` | `By` | per interface, queue_number | Number of bytes transmitted on the queue |\n| `snmp.device_prof_jnxCosIfsetQstatTxedPktRate` | `{packet}/s` | per interface, queue_number | The output queue's packet transmit rate |\n| `snmp.device_prof_jnxCosIfsetQstatTxedPkts` | `{packet}` | per interface, queue_number | Number of packets transmitted on the queue |\n| `snmp.device_prof_jnxDcuStatsBytes` | `By/s` | per interface, address_family, destination_class_name | The number of bytes received on this interface, belonging to this address family that match this Destination Class |\n| `snmp.device_prof_jnxDcuStatsPackets` | `{packet}/s` | per interface, address_family, destination_class_name | The number of packets received on this interface, belonging to this address family that match this Destination Class |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### Network / VirtualChassis\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_jnxVirtualChassisPortCarrierTrans` | `{error}` | per port_name | Total number of Carrier errors on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortCollisions` | `{collision}` | per port_name | Total number of Collisions on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInCRCAlignErrors` | `{error}` | per port_name | Total number of Input CRC Alignment errors on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInMcasts` | `{packet}` | per port_name | Total number of multicast packets received on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInOctets` | `By` | per port_name | Total number of octets received on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInOctets1secRate` | `By/s` | per port_name | Total number of octets received per second on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInPkts` | `{packet}` | per port_name | Total number of packets received on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInPkts1secRate` | `{packet}/s` | per port_name | Total number of packets received per second on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortOutMcasts` | `{packet}` | per port_name | Total number of multicast packets sent from the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortOutOctets` | `By` | per port_name | Total number of octets sent on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortOutOctets1secRate` | `By/s` | per port_name | Total number of octets sent per second on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortOutPkts` | `{packet}` | per port_name | Total number of packets sent from the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortOutPkts1secRate` | `{packet}/s` | per port_name | Total number of packets sent per second from the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortUndersizePkts` | `{packet}` | per port_name | Total number of Undersize Packets on the virtual-chassis port |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Juniper_EX",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Juniper MX",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"juniper.png"},keywords:["juniper","mx","snmp","router","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Juniper MX\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Juniper MX (router) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 37 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **juniper-mx.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Juniper MX via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Juniper MX profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**142 metrics** in 12 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Firewall | 2 |\n| Network / IP | 28 |\n| Network / Interface | 31 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| Network / VPN | 21 |\n| Network / VirtualChassis | 14 |\n| System / Activity | 2 |\n| System / CPU | 1 |\n| System / Uptime | 1 |\n| Uncategorized | 14 |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_jnxFWCounterByteCount` | `By/s` | per firewall_filter_name, counter_name, counter_type | The number of bytes being counted pertaining to the specified counter. For policers, this field is always zero because policers do\u2026 |\n| `snmp.device_prof_jnxFWCounterPacketCount` | `{packet}/s` | per firewall_filter_name, counter_name, counter_type | The number of packets being counted pertaining to the specified counter or policer |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### Network / VPN\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_jnxIkeNumOfTunnels` | `{tunnel}` | device | Total number of active IKE Phase 1 tunnels |\n| `snmp.device_prof_jnxIkeTunMonActiveTime` | `s` | per ike_tunnel_index | Time this IKE Phase 1 tunnel has been active |\n| `snmp.device_prof_jnxIkeTunMonDPDDownCount` | `{event}/s` | per ike_tunnel_index | Number of DPD (Dead Peer Detection) down events on this tunnel |\n| `snmp.device_prof_jnxIkeTunMonInOctets` | `By/s` | per ike_tunnel_index | Number of bytes received on this IKE Phase 1 tunnel |\n| `snmp.device_prof_jnxIkeTunMonInPkts` | `{packet}/s` | per ike_tunnel_index | Number of packets received on this IKE Phase 1 tunnel |\n| `snmp.device_prof_jnxIkeTunMonLifeTime` | `s` | per ike_tunnel_index | Remaining lifetime of the IKE Phase 1 tunnel |\n| `snmp.device_prof_jnxIkeTunMonOutOctets` | `By/s` | per ike_tunnel_index | Number of bytes sent on this IKE Phase 1 tunnel |\n| `snmp.device_prof_jnxIkeTunMonOutPkts` | `{packet}/s` | per ike_tunnel_index | Number of packets sent on this IKE Phase 1 tunnel |\n| `snmp.device_prof_jnxIkeTunMonState` | `{status}` | per ike_tunnel_index | Current state of the IKE Phase 1 tunnel |\n| `snmp.device_prof_jnxIpSecNumOfTunnels` | `{tunnel}` | device | Total number of active IPSec Phase 2 tunnels |\n| `snmp.device_prof_jnxIpSecSaMonActiveTime` | `s` | per sa_index | Time this IPSec Security Association has been active |\n| `snmp.device_prof_jnxIpSecSaMonLifeTime` | `s` | per sa_index | Remaining lifetime of this IPSec Security Association |\n| `snmp.device_prof_jnxIpSecSaMonState` | `{status}` | per sa_index | Status of this IPSec Security Association |\n| `snmp.device_prof_jnxIpSecTunMonDecryptFails` | `{failure}/s` | per ipsec_tunnel_index | Number of decryption failures on this tunnel |\n| `snmp.device_prof_jnxIpSecTunMonDroppedPkts` | `{drop}/s` | per ipsec_tunnel_index | Total number of packets dropped on this IPSec Phase 2 tunnel |\n| `snmp.device_prof_jnxIpSecTunMonEspAuthFails` | `{failure}/s` | per ipsec_tunnel_index | Number of ESP authentication failures on this tunnel |\n| `snmp.device_prof_jnxIpSecTunMonInDecryptedBytes` | `By/s` | per ipsec_tunnel_index | Number of decrypted bytes received on this IPSec Phase 2 tunnel |\n| `snmp.device_prof_jnxIpSecTunMonInDecryptedPkts` | `{packet}/s` | per ipsec_tunnel_index | Number of decrypted packets received on this IPSec Phase 2 tunnel |\n| `snmp.device_prof_jnxIpSecTunMonOutEncryptedBytes` | `By/s` | per ipsec_tunnel_index | Number of encrypted bytes sent on this IPSec Phase 2 tunnel |\n| `snmp.device_prof_jnxIpSecTunMonOutEncryptedPkts` | `{packet}/s` | per ipsec_tunnel_index | Number of encrypted packets sent on this IPSec Phase 2 tunnel |\n| `snmp.device_prof_jnxIpSecTunMonReplayDropPkts` | `{drop}/s` | per ipsec_tunnel_index | Number of packets dropped due to anti-replay check failure |\n\n### Network / VirtualChassis\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_jnxVirtualChassisPortCarrierTrans` | `{error}` | per port_name | Total number of Carrier errors on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortCollisions` | `{collision}` | per port_name | Total number of Collisions on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInCRCAlignErrors` | `{error}` | per port_name | Total number of Input CRC Alignment errors on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInMcasts` | `{packet}` | per port_name | Total number of multicast packets received on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInOctets` | `By` | per port_name | Total number of octets received on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInOctets1secRate` | `By/s` | per port_name | Total number of octets received per second on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInPkts` | `{packet}` | per port_name | Total number of packets received on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInPkts1secRate` | `{packet}/s` | per port_name | Total number of packets received per second on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortOutMcasts` | `{packet}` | per port_name | Total number of multicast packets sent from the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortOutOctets` | `By` | per port_name | Total number of octets sent on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortOutOctets1secRate` | `By/s` | per port_name | Total number of octets sent per second on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortOutPkts` | `{packet}` | per port_name | Total number of packets sent from the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortOutPkts1secRate` | `{packet}/s` | per port_name | Total number of packets sent per second from the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortUndersizePkts` | `{packet}` | per port_name | Total number of Undersize Packets on the virtual-chassis port |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Juniper_MX",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Juniper Pulse Secure",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"juniper.png"},keywords:["juniper","pulse","secure","snmp","vpn","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Juniper Pulse Secure\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Juniper Pulse Secure (vpn) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **juniper-pulse-secure.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Juniper Pulse Secure via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Juniper Pulse Secure profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**69 metrics** in 11 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Temperature | 1 |\n| Network / Interface | 4 |\n| Network / SSL | 1 |\n| Network / VPN | 11 |\n| System / Activity | 2 |\n| System / CPU | 3 |\n| System / Disk | 17 |\n| System / License | 2 |\n| System / Memory | 13 |\n| System / Uptime | 1 |\n| Uncategorized | 14 |\n\n### Hardware / Temperature\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_iveTemperature` | `Cel` | device | The Temperature of MAG application blade |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / SSL\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_iveSSLConnections` | `{connection}` | device | Total number of ssl connection |\n\n### Network / VPN\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_iveAppletHits` | `{hit}/s` | device | The total number of applet hits to the ive since last reboot |\n| `snmp.device_prof_iveFileHits` | `{hit}/s` | device | The total number of file hits to the ive since last reboot |\n| `snmp.device_prof_iveNCHits` | `{hit}/s` | device | The total number of nc network connect hits since last reboot |\n| `snmp.device_prof_iveSAMHits` | `{hit}/s` | device | The total number of sam secure application manager hits since last reboot |\n| `snmp.device_prof_iveTotalHits` | `{hit}/s` | device | The total number of hits to the ive since last reboot |\n| `snmp.device_prof_iveVPNTunnels` | `{tunnel}` | device | The number of concurrent pulse ipsec and nc users |\n| `snmp.device_prof_iveWebHits` | `{hit}/s` | device | The total number of hits via the web interface since the last reboot |\n| `snmp.device_prof_ivetermHits` | `{hit}/s` | device | The total number of terminal hits to the ive since last reboot |\n| `snmp.device_prof_meetingHits` | `{hit}/s` | device | The total number of meeting hits since last reboot |\n| `snmp.device_prof_signedInMailUsers` | `{user}` | device | Number of signed-in mail users |\n| `snmp.device_prof_signedInWebUsers` | `{user}` | device | Number of signed-in web users |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n| `snmp.device_prof_ucd_ssRawContexts` | `{switch}/s` | device | Number of context switches |\n| `snmp.device_prof_ucd_ssRawInterrupts` | `{interrupt}/s` | device | Number of interrupts processed |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_diskFullPercent` | `%` | device | Percentage of disk space full |\n| `snmp.device_prof_logFullPercent` | `%` | device | Percentage of log file full |\n| `snmp.device_prof_ucd_diskIOLA1` | `%` | per ucd_disk_io_device | The 1 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA15` | `%` | per ucd_disk_io_device | The 15 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA5` | `%` | per ucd_disk_io_device | The 5 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIONReadX` | `By/s` | per ucd_disk_io_device | The number of bytes read from this device since boot |\n| `snmp.device_prof_ucd_diskIONWrittenX` | `By/s` | per ucd_disk_io_device | The number of bytes written to this device since boot |\n| `snmp.device_prof_ucd_diskIOReads` | `{read}/s` | per ucd_disk_io_device | The number of read accesses from this device since boot |\n| `snmp.device_prof_ucd_diskIOWrites` | `{write}/s` | per ucd_disk_io_device | The number of write accesses to this device since boot |\n| `snmp.device_prof_ucd_dskAvail` | `By` | per ucd_dsk_path, ucd_dsk_device | Available space on the disk |\n| `snmp.device_prof_ucd_dskErrorFlag` | `{status}` | per ucd_dsk_path, ucd_dsk_device | Flag signaling that the disk or partition is under the minimum required space configured for it |\n| `snmp.device_prof_ucd_dskPercent` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of space used on disk |\n| `snmp.device_prof_ucd_dskPercentNode` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of inodes used on disk |\n| `snmp.device_prof_ucd_dskTotal` | `By` | per ucd_dsk_path, ucd_dsk_device | Total size of the disk/partition |\n| `snmp.device_prof_ucd_dskUsed` | `By` | per ucd_dsk_path, ucd_dsk_device | Used space on the disk |\n| `snmp.device_prof_ucd_ssIORawReceived` | `By/s` | device | Amount of data read from disk or other block device |\n| `snmp.device_prof_ucd_ssIORawSent` | `By/s` | device | Amount of data written to disk or other block device |\n\n### System / License\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_clusterConcurrentUsers` | `{license}` | device | The total number of concurrent user licenses used for the cluster |\n| `snmp.device_prof_iveConcurrentUsers` | `{license}` | device | The total number of concurrent user licenses used for the ive node |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_iveMemoryUtil` | `%` | device | The memory utilization of the ive system |\n| `snmp.device_prof_iveSwapUtil` | `%` | device | The swap utilization of the ive system |\n| `snmp.device_prof_memory_free` | `By` | device | The amount of real/physical memory currently unused or available |\n| `snmp.device_prof_ucd_memAvailSwap` | `By` | device | The amount of swap space currently unused or available |\n| `snmp.device_prof_ucd_memBuffer` | `By` | device | The total amount of real or virtual memory currently allocated for use as memory buffers |\n| `snmp.device_prof_ucd_memCached` | `By` | device | The total amount of real or virtual memory currently allocated for use as cached memory |\n| `snmp.device_prof_ucd_memMinimumSwap` | `By` | device | The minimum amount of swap space expected to be kept free or available during normal operation of this host |\n| `snmp.device_prof_ucd_memShared` | `By` | device | The total amount of real or virtual memory currently allocated for use as shared memory |\n| `snmp.device_prof_ucd_memTotalFree` | `By` | device | The total amount of memory free or available for use on this host |\n| `snmp.device_prof_ucd_memTotalSwap` | `By` | device | The total amount of swap space configured for this host |\n| `snmp.device_prof_ucd_memoryTotal` | `By` | device | The total amount of real/physical memory installed on this host |\n| `snmp.device_prof_ucd_ssRawSwapIn` | `By/s` | device | Amount of memory swapped in from disk |\n| `snmp.device_prof_ucd_ssRawSwapOut` | `By/s` | device | Amount of memory swapped out to disk |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Juniper_Pulse_Secure",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Juniper QFX",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"juniper.png"},keywords:["juniper","qfx","snmp","switch","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Juniper QFX\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Juniper QFX (switch) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 2 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **juniper-qfx.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Juniper QFX via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Juniper QFX profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**100 metrics** in 8 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Firewall | 2 |\n| Network / Interface | 56 |\n| Network / Routing | 10 |\n| Network / VirtualChassis | 14 |\n| System / Activity | 2 |\n| System / CPU | 1 |\n| System / Uptime | 1 |\n| Uncategorized | 14 |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_jnxFWCounterByteCount` | `By/s` | per firewall_filter_name, counter_name, counter_type | The number of bytes being counted pertaining to the specified counter. For policers, this field is always zero because policers do\u2026 |\n| `snmp.device_prof_jnxFWCounterPacketCount` | `{packet}/s` | per firewall_filter_name, counter_name, counter_type | The number of packets being counted pertaining to the specified counter or policer |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpNonTcpRDropByteRate` | `By/s` | per interface, queue_number | The rate at which high PLP non TCP bytes were RED-dropped at the output queue on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpNonTcpRDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which high PLP non TCP packets were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpNonTcpRedDropBytes` | `By` | per interface, queue_number | The total number of high PLP non TCP bytes RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpNonTcpRedDropPkts` | `{packet}` | per interface, queue_number | The total number of high PLP non TCP packets RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpRedDropByteRate` | `By/s` | per interface, queue_number | The rate at which high PLP bytes were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpRedDropBytes` | `By` | per interface, queue_number | The total number of high PLP bytes RED-dropped at the output queue on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpRedDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which high PLP packets were RED-dropped at the output |\n| `snmp.device_prof_jnxCosIfsetQstatHpRedDropPkts` | `{packet}` | per interface, queue_number | The total number of high PLP packets RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpTcpRedDropByteRate` | `By/s` | per interface, queue_number | The rate at which high PLP TCP bytes were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpTcpRedDropBytes` | `By` | per interface, queue_number | The total number of high PLP TCP bytes RED-dropped at the output queue on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatHpTcpRedDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which high PLP TCP packets were RED-dropped at the output |\n| `snmp.device_prof_jnxCosIfsetQstatHpTcpRedDropPkts` | `{packet}` | per interface, queue_number | The total number of high PLP TCP packets RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpNonTcpRDropByteRate` | `By/s` | per interface, queue_number | The rate at which low PLP non TCP bytes were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpNonTcpRDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which low PLP non TCP packets were RED-dropped |\n| `snmp.device_prof_jnxCosIfsetQstatLpNonTcpRedDropBytes` | `By` | per interface, queue_number | The total number of low PLP non TCP bytes RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpNonTcpRedDropPkts` | `{packet}` | per interface, queue_number | The total number of low PLP non TCP packets RED-dropped |\n| `snmp.device_prof_jnxCosIfsetQstatLpRedDropByteRate` | `By/s` | per interface, queue_number | The rate at which low PLP bytes were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpRedDropBytes` | `By` | per interface, queue_number | The total number of low PLP bytes RED-dropped at the output queue on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpRedDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which low PLP packets were RED-dropped at the output |\n| `snmp.device_prof_jnxCosIfsetQstatLpRedDropPkts` | `{packet}` | per interface, queue_number | The total number of low PLP packets RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpTcpRedDropByteRate` | `By/s` | per interface, queue_number | The rate at which low PLP TCP bytes were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpTcpRedDropBytes` | `By` | per interface, queue_number | The total number of low PLP TCP bytes RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpTcpRedDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which low PLP TCP packets were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatLpTcpRedDropPkts` | `{packet}` | per interface, queue_number | The total number of low PLP TCP packets RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatMHpRedDropByteRate` | `By/s` | per interface, queue_number | The rate at which medium-high PLP bytes were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatMHpRedDropBytes` | `By` | per interface, queue_number | The total number of medium-high PLP bytes RED-dropped at the output queue on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatMHpRedDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which medium-high PLP packets were RED-dropped at the output |\n| `snmp.device_prof_jnxCosIfsetQstatMHpRedDropPkts` | `{packet}` | per interface, queue_number | The total number of medium-high PLP packets RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatMLpRedDropByteRate` | `By/s` | per interface, queue_number | The rate at which medium-low PLP bytes were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatMLpRedDropBytes` | `By` | per interface, queue_number | The total number of medium-low PLP bytes RED-dropped at the output queue on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatMLpRedDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which medium-low PLP packets were RED-dropped at the output |\n| `snmp.device_prof_jnxCosIfsetQstatMLpRedDropPkts` | `{packet}` | per interface, queue_number | The total number of medium-low PLP packets RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatQedByteRate` | `By/s` | per interface, queue_number | The rate at which bytes were queued at the output queue |\n| `snmp.device_prof_jnxCosIfsetQstatQedBytes` | `By` | per interface, queue_number | Number of bytes queued at the output queue |\n| `snmp.device_prof_jnxCosIfsetQstatQedPktRate` | `{packet}/s` | per interface, queue_number | The rate at which packets were queued at the output queue |\n| `snmp.device_prof_jnxCosIfsetQstatQedPkts` | `{packet}` | per interface, queue_number | The total number of packets queued at the output queue |\n| `snmp.device_prof_jnxCosIfsetQstatRateLimitDropByteRate` | `By/s` | per interface, queue_number | The rate at which bytes are rate-limit dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatRateLimitDropBytes` | `By` | per interface, queue_number | The total number of rate-limit dropped bytes at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatRateLimitDropPktRate` | `{packet}/s` | per interface, queue_number | The rate at which packets are rate-limit dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatRateLimitDropPkts` | `{packet}` | per interface, queue_number | The total number of rate-limit dropped packets at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatTailDropPktRate` | `{packet}/s` | per interface, queue_number | The tail drop packet rate for the queue |\n| `snmp.device_prof_jnxCosIfsetQstatTailDropPkts` | `{packet}` | per interface, queue_number | The number of packets tail dropped at the output queue |\n| `snmp.device_prof_jnxCosIfsetQstatTotalRedDropByteRate` | `By/s` | per interface, queue_number | The rate at which bytes were RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatTotalRedDropBytes` | `By` | per interface, queue_number | The total number of bytes RED-dropped at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatTotalRedDropPktRate` | `{packet}/s` | per interface, queue_number | The most recent estimate of per-second RED-dropped packets at the output queue on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatTotalRedDropPkts` | `{packet}` | per interface, queue_number | Total number of packets dropped due to RED at the output on the given interface |\n| `snmp.device_prof_jnxCosIfsetQstatTxedByteRate` | `By/s` | per interface, queue_number | The queue's current transmit rate in bytes per second |\n| `snmp.device_prof_jnxCosIfsetQstatTxedBytes` | `By` | per interface, queue_number | Number of bytes transmitted on the queue |\n| `snmp.device_prof_jnxCosIfsetQstatTxedPktRate` | `{packet}/s` | per interface, queue_number | The output queue's packet transmit rate |\n| `snmp.device_prof_jnxCosIfsetQstatTxedPkts` | `{packet}` | per interface, queue_number | Number of packets transmitted on the queue |\n| `snmp.device_prof_jnxDcuStatsBytes` | `By/s` | per interface, address_family, destination_class_name | The number of bytes received on this interface, belonging to this address family that match this Destination Class |\n| `snmp.device_prof_jnxDcuStatsPackets` | `{packet}/s` | per interface, address_family, destination_class_name | The number of packets received on this interface, belonging to this address family that match this Destination Class |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / VirtualChassis\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_jnxVirtualChassisPortCarrierTrans` | `{error}` | per port_name | Total number of Carrier errors on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortCollisions` | `{collision}` | per port_name | Total number of Collisions on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInCRCAlignErrors` | `{error}` | per port_name | Total number of Input CRC Alignment errors on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInMcasts` | `{packet}` | per port_name | Total number of multicast packets received on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInOctets` | `By` | per port_name | Total number of octets received on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInOctets1secRate` | `By/s` | per port_name | Total number of octets received per second on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInPkts` | `{packet}` | per port_name | Total number of packets received on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortInPkts1secRate` | `{packet}/s` | per port_name | Total number of packets received per second on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortOutMcasts` | `{packet}` | per port_name | Total number of multicast packets sent from the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortOutOctets` | `By` | per port_name | Total number of octets sent on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortOutOctets1secRate` | `By/s` | per port_name | Total number of octets sent per second on the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortOutPkts` | `{packet}` | per port_name | Total number of packets sent from the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortOutPkts1secRate` | `{packet}/s` | per port_name | Total number of packets sent per second from the virtual-chassis port |\n| `snmp.device_prof_jnxVirtualChassisPortUndersizePkts` | `{packet}` | per port_name | Total number of Undersize Packets on the virtual-chassis port |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Juniper_QFX",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Juniper SRX",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"juniper.png"},keywords:["juniper","srx","snmp","firewall","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Juniper SRX\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Juniper SRX (firewall) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 46 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **juniper-srx.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Juniper SRX via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Juniper SRX profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**132 metrics** in 11 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Firewall | 2 |\n| Network / IP | 28 |\n| Network / Interface | 35 |\n| Network / Routing | 10 |\n| Network / TCP | 12 |\n| Network / UDP | 6 |\n| Network / VPN | 21 |\n| System / Activity | 2 |\n| System / CPU | 1 |\n| System / Uptime | 1 |\n| Uncategorized | 14 |\n\n### Network / Firewall\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_jnxUserFwLDAPFailedQuery` | `{query}/s` | per ldap_domain_name, ldap_host | LDAP failed queries |\n| `snmp.device_prof_jnxUserFwLDAPTotalQuery` | `{query}/s` | per ldap_domain_name, ldap_host | Total LDAP queries |\n\n### Network / IP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ipSystemStatsHCInBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInForwDatagrams` | `{forward}/s` | per ipversion | Input datagrams for which this entity was not their final IP destination and for which this entity attempted to find a route to fo\u2026 |\n| `snmp.device_prof_ipSystemStatsHCInMcastOctets` | `bit/s` | per ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCInMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipSystemStatsHCInOctets` | `bit/s` | per ipversion | Octets received in input IP datagrams |\n| `snmp.device_prof_ipSystemStatsHCInReceives` | `{packet}/s` | per ipversion | Input IP datagrams received |\n| `snmp.device_prof_ipSystemStatsHCOutBcastPkts` | `{packet}/s` | per ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutForwDatagrams` | `{packet}/s` | per ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipSystemStatsHCOutMcastOctets` | `bit/s` | per ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipSystemStatsHCOutMcastPkts` | `{packet}/s` | per ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipSystemStatsHCOutOctets` | `bit/s` | per ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutRequests` | `{packet}/s` | per ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipSystemStatsHCOutTransmits` | `{packet}/s` | per ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipSystemStatsInAddrErrors` | `{error}/s` | per ipversion | Input IP datagrams discarded due to invalid IP address in header |\n| `snmp.device_prof_ipSystemStatsInDiscards` | `{error}/s` | per ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipSystemStatsInHdrErrors` | `{error}/s` | per ipversion | Discarded input IP datagrams due to errors in their IP headers |\n| `snmp.device_prof_ipSystemStatsInNoRoutes` | `{errors}/s` | per ipversion | Input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsInTruncatedPkts` | `{error}/s` | per ipversion | Input IP datagrams discarded due to datagram frame not carrying enough data |\n| `snmp.device_prof_ipSystemStatsInUnknownProtos` | `{error}/s` | per ipversion | Locally-addressed IP datagrams received successfully but discarded due to an unknown or unsupported protocol |\n| `snmp.device_prof_ipSystemStatsOutDiscards` | `{error}/s` | per ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipSystemStatsOutFragCreates` | `{fragment}/s` | per ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipSystemStatsOutFragFails` | `{error}/s` | per ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipSystemStatsOutFragOKs` | `{packet}/s` | per ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipSystemStatsOutFragReqds` | `{packet}/s` | per ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipSystemStatsOutNoRoutes` | `{error}/s` | per ipversion | The number of locally generated IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipSystemStatsReasmFails` | `{error}/s` | per ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipSystemStatsReasmOKs` | `{packet}/s` | per ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipSystemStatsReasmReqds` | `{fragment}/s` | per ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_ipIfStatsHCInBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInDelivers` | `{packet}/s` | per interface_index, ipversion | The total number of datagrams successfully delivered to IP user-protocols including ICMP |\n| `snmp.device_prof_ipIfStatsHCInForwDatagrams` | `{forward}/s` | per interface_index, ipversion | The number of input datagrams for which this entity was not their final IP destination and for which this entity attempted to find\u2026 |\n| `snmp.device_prof_ipIfStatsHCInMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCInMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams received |\n| `snmp.device_prof_ipIfStatsHCInOctets` | `bit/s` | per interface_index, ipversion | The total number of octets received in input IP datagrams, including those received in error |\n| `snmp.device_prof_ipIfStatsHCOutBcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP broadcast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutForwDatagrams` | `{packet}/s` | per interface_index, ipversion | The number of datagrams for which this entity was not their final IP destination and for which it was successful in finding a path\u2026 |\n| `snmp.device_prof_ipIfStatsHCOutMcastOctets` | `bit/s` | per interface_index, ipversion | The total number of octets transmitted in IP multicast datagrams |\n| `snmp.device_prof_ipIfStatsHCOutMcastPkts` | `{packet}/s` | per interface_index, ipversion | The number of IP multicast datagrams transmitted |\n| `snmp.device_prof_ipIfStatsHCOutOctets` | `bit/s` | per interface_index, ipversion | The total number of octets in IP datagrams delivered to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsHCOutRequests` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that local IP user-protocols including ICMP supplied to IP in requests for transmission |\n| `snmp.device_prof_ipIfStatsHCOutTransmits` | `{packet}/s` | per interface_index, ipversion | The total number of IP datagrams that this entity supplied to the lower layers for transmission |\n| `snmp.device_prof_ipIfStatsInAddrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the IP address in their IP header's destination field was not a valid address t\u2026 |\n| `snmp.device_prof_ipIfStatsInDiscards` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but were discarded |\n| `snmp.device_prof_ipIfStatsInHdrErrors` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded due to errors in their IP headers |\n| `snmp.device_prof_ipIfStatsInNoRoutes` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because no route could be found to transmit them to their destination |\n| `snmp.device_prof_ipIfStatsInTruncatedPkts` | `{error}/s` | per interface_index, ipversion | The number of input IP datagrams discarded because the datagram frame didn't carry enough data |\n| `snmp.device_prof_ipIfStatsInUnknownProtos` | `{error}/s` | per interface_index, ipversion | The number of locally-addressed IP datagrams received successfully but discarded because of an unknown or unsupported protocol |\n| `snmp.device_prof_ipIfStatsOutDiscards` | `{error}/s` | per interface_index, ipversion | The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but wer\u2026 |\n| `snmp.device_prof_ipIfStatsOutFragCreates` | `{fragment}/s` | per interface_index, ipversion | The number of output datagram fragments that have been generated as a result of IP fragmentation |\n| `snmp.device_prof_ipIfStatsOutFragFails` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been discarded because they needed to be fragmented but could not be |\n| `snmp.device_prof_ipIfStatsOutFragOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that have been successfully fragmented |\n| `snmp.device_prof_ipIfStatsOutFragReqds` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams that would require fragmentation in order to be transmitted |\n| `snmp.device_prof_ipIfStatsReasmFails` | `{error}/s` | per interface_index, ipversion | The number of failures detected by the IP re-assembly algorithm |\n| `snmp.device_prof_ipIfStatsReasmOKs` | `{packet}/s` | per interface_index, ipversion | The number of IP datagrams successfully reassembled |\n| `snmp.device_prof_ipIfStatsReasmReqds` | `{fragment}/s` | per interface_index, ipversion | The number of IP fragments received that needed to be reassembled at this interface |\n| `snmp.device_prof_jnxDcuStatsBytes` | `By/s` | per interface, address_family, destination_class_name | The number of bytes received on this interface, belonging to this address family that match this Destination Class |\n| `snmp.device_prof_jnxDcuStatsPackets` | `{packet}/s` | per interface, address_family, destination_class_name | The number of packets received on this interface, belonging to this address family that match this Destination Class |\n| `snmp.device_prof_jnxScuStatsBytes` | `By/s` | per interface, address_family | Number of bytes sent out of destination interface that match the source class and address family |\n| `snmp.device_prof_jnxScuStatsPackets` | `{packet}/s` | per interface, address_family | Number of packets sent out of destination interface that match the source class and address family |\n\n### Network / Routing\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ospfIfLsaCount` | `{advertisement}/s` | per ospf_ip_addr, neighbor_id | The total number of link-local link state advertisements in this interface's link-local link state database |\n| `snmp.device_prof_ospfIfState` | `{status}` | per ospf_ip_addr, neighbor_id | The OSPF Interface State |\n| `snmp.device_prof_ospfNbrEvents` | `{event}/s` | per neighbor_id, neighbor_ip | The number of times this neighbor relationship has changed state or an error has occurred |\n| `snmp.device_prof_ospfNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the relationship with this neighbor |\n| `snmp.device_prof_ospfVirtIfLsaCount` | `{advertisement}/s` | per neighbor_id | The total number of link-local link state advertisements in this virtual interface's link-local link state database |\n| `snmp.device_prof_ospfVirtIfState` | `{status}` | per neighbor_id | OSPF virtual interface states |\n| `snmp.device_prof_ospfVirtNbrEvents` | `{change}/s` | per neighbor_id, neighbor_ip | The number of times this virtual link has changed its state or an error has occurred |\n| `snmp.device_prof_ospfVirtNbrLsRetransQLen` | `{message}` | per neighbor_id, neighbor_ip | The current length of the retransmission queue |\n| `snmp.device_prof_ospfVirtNbrState` | `{status}` | per neighbor_id, neighbor_ip | The state of the virtual neighbor relationship |\n\n### Network / TCP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_tcpActiveOpens` | `{transition}/s` | device | TCP connections transitioning from CLOSED to SYN-SENT |\n| `snmp.device_prof_tcpAttemptFails` | `{failure}/s` | device | Failed TCP connection attempts |\n| `snmp.device_prof_tcpCurrEstab` | `{connection}` | device | Current TCP connections in ESTABLISHED or CLOSE-WAIT state |\n| `snmp.device_prof_tcpEstabResets` | `{reset}/s` | device | TCP connections reset from ESTABLISHED/CLOSE-WAIT |\n| `snmp.device_prof_tcpHCInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpHCOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpInErrs` | `{error}/s` | device | TCP segments received with errors |\n| `snmp.device_prof_tcpInSegs` | `{packet}/s` | device | TCP segments received |\n| `snmp.device_prof_tcpOutRsts` | `{reset}/s` | device | TCP segments sent with RST flag |\n| `snmp.device_prof_tcpOutSegs` | `{packet}/s` | device | TCP segments sent |\n| `snmp.device_prof_tcpPassiveOpens` | `{transition}/s` | device | TCP connections transitioning from LISTEN to SYN-RCVD |\n| `snmp.device_prof_tcpRetransSegs` | `{retransmit}/s` | device | TCP segments retransmitted |\n\n### Network / UDP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_udpHCInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpHCOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n| `snmp.device_prof_udpInDatagrams` | `{packet}/s` | device | UDP datagrams received |\n| `snmp.device_prof_udpInErrors` | `{error}/s` | device | UDP datagrams received but couldn't be delivered (not due to missing app) |\n| `snmp.device_prof_udpNoPorts` | `{error}/s` | device | UDP datagrams received with no app on the destination port |\n| `snmp.device_prof_udpOutDatagrams` | `{packet}/s` | device | UDP datagrams sent |\n\n### Network / VPN\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_jnxIkeNumOfTunnels` | `{tunnel}` | device | Total number of active IKE Phase 1 tunnels |\n| `snmp.device_prof_jnxIkeTunMonActiveTime` | `s` | per ike_tunnel_index | Time this IKE Phase 1 tunnel has been active |\n| `snmp.device_prof_jnxIkeTunMonDPDDownCount` | `{event}/s` | per ike_tunnel_index | Number of DPD (Dead Peer Detection) down events on this tunnel |\n| `snmp.device_prof_jnxIkeTunMonInOctets` | `By/s` | per ike_tunnel_index | Number of bytes received on this IKE Phase 1 tunnel |\n| `snmp.device_prof_jnxIkeTunMonInPkts` | `{packet}/s` | per ike_tunnel_index | Number of packets received on this IKE Phase 1 tunnel |\n| `snmp.device_prof_jnxIkeTunMonLifeTime` | `s` | per ike_tunnel_index | Remaining lifetime of the IKE Phase 1 tunnel |\n| `snmp.device_prof_jnxIkeTunMonOutOctets` | `By/s` | per ike_tunnel_index | Number of bytes sent on this IKE Phase 1 tunnel |\n| `snmp.device_prof_jnxIkeTunMonOutPkts` | `{packet}/s` | per ike_tunnel_index | Number of packets sent on this IKE Phase 1 tunnel |\n| `snmp.device_prof_jnxIkeTunMonState` | `{status}` | per ike_tunnel_index | Current state of the IKE Phase 1 tunnel |\n| `snmp.device_prof_jnxIpSecNumOfTunnels` | `{tunnel}` | device | Total number of active IPSec Phase 2 tunnels |\n| `snmp.device_prof_jnxIpSecSaMonActiveTime` | `s` | per sa_index | Time this IPSec Security Association has been active |\n| `snmp.device_prof_jnxIpSecSaMonLifeTime` | `s` | per sa_index | Remaining lifetime of this IPSec Security Association |\n| `snmp.device_prof_jnxIpSecSaMonState` | `{status}` | per sa_index | Status of this IPSec Security Association |\n| `snmp.device_prof_jnxIpSecTunMonDecryptFails` | `{failure}/s` | per ipsec_tunnel_index | Number of decryption failures on this tunnel |\n| `snmp.device_prof_jnxIpSecTunMonDroppedPkts` | `{drop}/s` | per ipsec_tunnel_index | Total number of packets dropped on this IPSec Phase 2 tunnel |\n| `snmp.device_prof_jnxIpSecTunMonEspAuthFails` | `{failure}/s` | per ipsec_tunnel_index | Number of ESP authentication failures on this tunnel |\n| `snmp.device_prof_jnxIpSecTunMonInDecryptedBytes` | `By/s` | per ipsec_tunnel_index | Number of decrypted bytes received on this IPSec Phase 2 tunnel |\n| `snmp.device_prof_jnxIpSecTunMonInDecryptedPkts` | `{packet}/s` | per ipsec_tunnel_index | Number of decrypted packets received on this IPSec Phase 2 tunnel |\n| `snmp.device_prof_jnxIpSecTunMonOutEncryptedBytes` | `By/s` | per ipsec_tunnel_index | Number of encrypted bytes sent on this IPSec Phase 2 tunnel |\n| `snmp.device_prof_jnxIpSecTunMonOutEncryptedPkts` | `{packet}/s` | per ipsec_tunnel_index | Number of encrypted packets sent on this IPSec Phase 2 tunnel |\n| `snmp.device_prof_jnxIpSecTunMonReplayDropPkts` | `{drop}/s` | per ipsec_tunnel_index | Number of packets dropped due to anti-replay check failure |\n\n### System / Activity\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrSystemNumUsers` | `{session}` | device | The number of user sessions for which this host is storing state information. A session is a collection of processes requiring a s\u2026 |\n| `snmp.device_prof_hrSystemProcesses` | `{process}` | device | The number of process contexts currently loaded or running on this system. |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_hrStorageSize` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_hrStorageUsed` | `By` | per storage_index, rm:storage_type, rm:storage_alloc_unit | |\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Juniper_SRX",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Kyocera Printer",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["kyocera","printer","snmp","printer","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Kyocera Printer\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Kyocera Printer (printer) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **kyocera-printer.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Kyocera Printer via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Kyocera Printer profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**5 metrics** in 3 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| System / Alert | 1 |\n| System / Memory | 3 |\n| System / Uptime | 1 |\n\n### System / Alert\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_kcprtAlertStateCode` | `{code}` | per kcprt_alert_state_display_index, kcprt_alert_state_display | Alert state code |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_kcprtMemoryDeviceStatus` | `{status}` | per kcprt_memory_device_index, kcprt_memory_device_location, kcprt_memory_device_type | Current status of this device |\n| `snmp.device_prof_kcprtMemoryDeviceTotalSize` | `By` | per kcprt_memory_device_index, kcprt_memory_device_location, kcprt_memory_device_type | Total size of the memory device |\n| `snmp.device_prof_kcprtMemoryDeviceUsedSize` | `By` | per kcprt_memory_device_index, kcprt_memory_device_location, kcprt_memory_device_type | Used size of the memory device |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Kyocera_Printer",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Linksys",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["linksys","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Linksys\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Linksys (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **linksys.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Linksys via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Linksys profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**5 metrics** in 2 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Linksys",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Mcafee WEB Gateway",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["mcafee","web","gateway","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Mcafee WEB Gateway\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Mcafee WEB Gateway (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **mcafee-web-gateway.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Mcafee WEB Gateway via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Mcafee WEB Gateway profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**38 metrics** in 15 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Connection | 1 |\n| Network / DNS | 1 |\n| Network / FTP | 5 |\n| Network / HTTP | 6 |\n| Network / HTTPS | 6 |\n| Network / Interface | 4 |\n| Network / Socket | 1 |\n| Security / Connection | 5 |\n| Security / Filter | 3 |\n| Security / Malware | 1 |\n| Security / RuleEngine | 1 |\n| System / CPU | 1 |\n| System / Memory | 1 |\n| System / Transaction | 1 |\n| System / Uptime | 1 |\n\n### Network / Connection\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_mcafee_mwg_stClientCount` | `{client}` | device | Currently connected clients |\n\n### Network / DNS\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_mcafee_mwg_stResolveHostViaDNS` | `ms` | device | Time to resolve DNS in ms |\n\n### Network / FTP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_mcafee_mwg_stFtpBytesFromClient` | `By/s` | device | Number of bytes tranferred from proxy to client(s) using the FTP protocol |\n| `snmp.device_prof_mcafee_mwg_stFtpBytesFromServer` | `By/s` | device | Number of bytes tranferred from server(s) to proxy using the FTP protocol |\n| `snmp.device_prof_mcafee_mwg_stFtpBytesToClient` | `By/s` | device | Number of bytes tranferred from proxy to client(s) using the FTP protocol |\n| `snmp.device_prof_mcafee_mwg_stFtpBytesToServer` | `By/s` | device | Number of bytes tranferred from proxy to server(s) using the FTP protocol |\n| `snmp.device_prof_mcafee_mwg_stFtpTraffic` | `By/s` | device | Number of bytes transmitted between proxy and server(s) using the FTP protocol |\n\n### Network / HTTP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_mcafee_mwg_stHttpBytesFromClient` | `By/s` | device | Number of bytes transferred from client to proxy using the HTTP protocol |\n| `snmp.device_prof_mcafee_mwg_stHttpBytesFromServer` | `By/s` | device | Number of bytes transferred from server to proxy using the HTTP protocol |\n| `snmp.device_prof_mcafee_mwg_stHttpBytesToClient` | `By/s` | device | Number of bytes transferred from proxy to client(s) using the HTTP protocol |\n| `snmp.device_prof_mcafee_mwg_stHttpBytesToServer` | `By/s` | device | Number of bytes transferred from proxy to server(s) using the HTTP protocol |\n| `snmp.device_prof_mcafee_mwg_stHttpRequests` | `{request}/s` | device | Number of HTTP requests |\n| `snmp.device_prof_mcafee_mwg_stHttpTraffic` | `By/s` | device | Number of bytes tranferred between proxy and server(s) using the HTTP protocol |\n\n### Network / HTTPS\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_mcafee_mwg_stHttpsBytesFromClient` | `By/s` | device | Number of bytes tranferred from client(s) to proxy using the HTTPS protocol |\n| `snmp.device_prof_mcafee_mwg_stHttpsBytesFromServer` | `By/s` | device | Number of bytes tranferred from server(s) to proxy using the HTTPS protocol |\n| `snmp.device_prof_mcafee_mwg_stHttpsBytesToClient` | `By/s` | device | Number of bytes tranferred from proxy to client(s) and proxy using the HTTPS protocol |\n| `snmp.device_prof_mcafee_mwg_stHttpsBytesToServer` | `By/s` | device | Number of bytes tranferred from proxy to server(s) and proxy using the HTTPS protocol |\n| `snmp.device_prof_mcafee_mwg_stHttpsRequests` | `{request}/s` | device | Number of HTTPS requests |\n| `snmp.device_prof_mcafee_mwg_stHttpsTraffic` | `By/s` | device | Number of bytes tranferred between proxy and server(s) using the HTTPS protocol |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / Socket\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_mcafee_mwg_stConnectedSockets` | `{socket}` | device | Number of open network sockets in use by the proxy |\n\n### Security / Connection\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_mcafee_mwg_stBlockedByAntiMalware` | `{connection}/s` | device | Number of connections blocked by Anti-Malware |\n| `snmp.device_prof_mcafee_mwg_stBlockedByMediaFilter` | `{connection}/s` | device | Number of connections that have been blocked by the Media-Type filter |\n| `snmp.device_prof_mcafee_mwg_stBlockedByURLFilter` | `{connection}/s` | device | Number of connection that have been blocked by the URL filter |\n| `snmp.device_prof_mcafee_mwg_stConnectionsBlocked` | `{connection}/s` | device | Number of blocked connections |\n| `snmp.device_prof_mcafee_mwg_stConnectionsLegitimate` | `{connection}/s` | device | Number of connections that not have been blocked |\n\n### Security / Filter\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_mcafee_mwg_stCategories` | `{category}/s` | device | Number of categories detected by the URL filter |\n| `snmp.device_prof_mcafee_mwg_stCategoryCount` | `{occurrence}/s` | per mcafee_mwg_st_category_name | Number of times the URL filter detected this category |\n| `snmp.device_prof_mcafee_mwg_stMimeType` | `{media_type}/s` | device | Number of media types detected by the Media Type filter |\n\n### Security / Malware\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_mcafee_mwg_stMalwareDetected` | `{infection}/s` | device | Number of infections detected by the McAfee Gateway Antimalware Engine |\n\n### Security / RuleEngine\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_mcafee_mwg_stTimeConsumedByRuleEngine` | `ms` | device | Average time used by the rule engine in ms |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_usage` | `%` | device | Virtual memory consumption of the main processes divided by RAM + half of SWAP space. Projected to 0-100. |\n\n### System / Transaction\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_mcafee_mwg_stTimeForTransaction` | `ms` | device | Average time for transaction in ms |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Mcafee_WEB_Gateway",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Meraki",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["meraki","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Meraki\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Meraki (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **meraki.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Meraki via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Meraki profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**5 metrics** in 2 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / Interface | 4 |\n| System / Uptime | 1 |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Meraki",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"MikroTik Licensing",link:"",categories:["network-performance-monitoring.licensing"],icon_filename:"mikrotik.png"},keywords:["mikrotik","license","licensing","entitlement","expiry","snmp","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# MikroTik Licensing\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nTrack license state, entitlements, and expiry on MikroTik devices over SNMP with Netdata.\n\nNetdata reads MikroTik licensing telemetry (state, usage, and expiry timers) exposed over SNMP and normalizes it into per-device licensing charts and the `snmp:licenses` function.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDetected automatically for MikroTik devices that expose licensing telemetry.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",integration_type:"device",id:"go.d.plugin-snmp-MikroTik_Licensing",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Mikrotik Router",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"mikrotik.png"},keywords:["mikrotik","router","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Mikrotik Router\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Mikrotik Router (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 2 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **mikrotik-router.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Mikrotik Router via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Mikrotik Router profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**40 metrics** in 8 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / CPU | 1 |\n| Hardware / OpticalModule | 8 |\n| Hardware / Sensor | 1 |\n| Network / Interface | 8 |\n| Network / VPN | 8 |\n| System / CPU | 1 |\n| System / Uptime | 1 |\n| Uncategorized | 12 |\n\n### Hardware / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_mtxrHlProcessorTemperature` | `Cel` | device | The current CPU temperature |\n\n### Hardware / OpticalModule\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_mtxrOpticalRxLoss` | `{status}` | per optical_index, optical_name | Indicates whether there is a loss of received optical signal (Rx Loss) |\n| `snmp.device_prof_mtxrOpticalRxPower` | `mW` | per optical_index, optical_name | Received optical power |\n| `snmp.device_prof_mtxrOpticalSupplyVoltage` | `V` | per optical_index, optical_name | Supply voltage |\n| `snmp.device_prof_mtxrOpticalTemperature` | `Cel` | per optical_index, optical_name | Temperature at sensor chip |\n| `snmp.device_prof_mtxrOpticalTxBiasCurrent` | `mA` | per optical_index, optical_name | Transmit bias current |\n| `snmp.device_prof_mtxrOpticalTxFault` | `{status}` | per optical_index, optical_name | Indicates whether the optical transceiver is experiencing a transmit fault |\n| `snmp.device_prof_mtxrOpticalTxPower` | `mW` | per optical_index, optical_name | Transmit optical power |\n| `snmp.device_prof_mtxrOpticalWavelength` | `nm` | per optical_index, optical_name | Optical wavelength |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_mtxrHlSensorValue` | \u2014 | per sensor_name, rm:sensor_type | Sensor value |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n| `snmp.device_prof_mtxrPOECurrent` | `mA` | per poe_interface_index, poe_name | Power over ethernet current |\n| `snmp.device_prof_mtxrPOEPower` | `W` | per poe_interface_index, poe_name | Power over ethernet |\n| `snmp.device_prof_mtxrPOEStatus` | `{status}` | per poe_interface_index, poe_name | Power over ethernet status |\n| `snmp.device_prof_mtxrPOEVoltage` | `V` | per poe_interface_index, poe_name | Power over ethernet voltage |\n\n### Network / VPN\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_mtxrIkeSACount` | `{sa}` | device | Number of active IKE Security Associations |\n| `snmp.device_prof_mtxrIkeSAPh2Count` | `{sa}` | per ike_sa_index | Number of Phase 2 child SAs for this IKE SA |\n| `snmp.device_prof_mtxrIkeSARxBytes` | `By/s` | per ike_sa_index | Number of bytes received through this IKE SA |\n| `snmp.device_prof_mtxrIkeSARxPackets` | `{packet}/s` | per ike_sa_index | Number of packets received through this IKE SA |\n| `snmp.device_prof_mtxrIkeSAState` | `{status}` | per ike_sa_index | Current state of the IKE Security Association |\n| `snmp.device_prof_mtxrIkeSATxBytes` | `By/s` | per ike_sa_index | Number of bytes transmitted through this IKE SA |\n| `snmp.device_prof_mtxrIkeSATxPackets` | `{packet}/s` | per ike_sa_index | Number of packets transmitted through this IKE SA |\n| `snmp.device_prof_mtxrIkeSAUptime` | `s` | per ike_sa_index | How long this IKE SA has been active |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | per cpu_index | The current CPU utilization |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n### Uncategorized\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_lldpStatsRemTablesAgeouts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDeletes` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesDrops` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesInserts` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRemTablesLastChangeTime` | \u2014 | device | |\n| `snmp.device_prof_lldpStatsRxPortAgeoutsTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesErrors` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsDiscardedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsRxPortTLVsUnrecognizedTotal` | \u2014 | per lldp_loc_port_num | |\n| `snmp.device_prof_lldpStatsTxPortFramesTotal` | \u2014 | per lldp_loc_port_num | |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Mikrotik_Router",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"NEC BGP",link:"",categories:["network-performance-monitoring.bgp"],icon_filename:"SNMP.png"},keywords:["nec","bgp","snmp","routing","peering","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# NEC BGP\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor BGP peering and routing health on NEC devices over SNMP with Netdata, using NEC BGP profile coverage.\n\nNetdata polls the BGP peer tables exposed by NEC devices (vendor and standard BGP MIBs) via SNMP.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDetected automatically for NEC devices that expose BGP MIBs.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",integration_type:"device",id:"go.d.plugin-snmp-NEC_BGP",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"NEC Univerge",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["nec","univerge","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# NEC Univerge\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor NEC Univerge (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 2 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **nec-univerge.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as NEC Univerge via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this NEC Univerge profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**47 metrics** in 7 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Hardware / Sensor | 1 |\n| Hardware / Temperature | 2 |\n| Network / Interface | 4 |\n| Network / VPN | 37 |\n| System / CPU | 1 |\n| System / Memory | 1 |\n| System / Uptime | 1 |\n\n### Hardware / Sensor\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nec_picoVoltage` | `mV` | device | Indicates the observed voltage |\n\n### Hardware / Temperature\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nec_picoCelsius` | `Cel` | device | Indicates the temperature of the equipment inside |\n| `snmp.device_prof_nec_picoFahrenheit` | `degF` | device | Indicates the temperature of the equipment inside |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / VPN\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nec_pikeGlobalActiveTunnels` | `{tunnel}` | device | Currently active IPsec Phase-1 IKE Tunnels |\n| `snmp.device_prof_nec_pikeGlobalAuthFails` | `{failure}/s` | device | Authentications which ended in failure by IPsec Phase-1 IKE Tunnels |\n| `snmp.device_prof_nec_pikeGlobalDecryptFails` | `{failure}/s` | device | Decryptions which ended in failure by IPsec Phase-1 IKE Tunnels |\n| `snmp.device_prof_nec_pikeGlobalHashValidFails` | `{failure}/s` | device | Hash validations which ended in failure by IPsec Phase-1 Tunnels |\n| `snmp.device_prof_nec_pikeGlobalInNotifys` | `{notification}/s` | device | Notifys received by IPsec Phase-1 IKE Tunnels |\n| `snmp.device_prof_nec_pikeGlobalInP1SaDelRequests` | `{request}/s` | device | ISAKMP security association delete requests received by IPsec Phase-1 Tunnels |\n| `snmp.device_prof_nec_pikeGlobalInP2ExchgInvalids` | `{exchange}/s` | device | IPsec Phase-2 exchanges which were received and found to be contain references to unrecognized security parameters |\n| `snmp.device_prof_nec_pikeGlobalInP2ExchgRejects` | `{exchange}/s` | device | IPsec Phase-2 exchanges which were received and validated but were rejected by the local policy |\n| `snmp.device_prof_nec_pikeGlobalInP2Exchgs` | `{exchange}/s` | device | IPsec Phase-2 exchanges received by IPsec Phase-1 IKE Tunnels |\n| `snmp.device_prof_nec_pikeGlobalInP2SaDelRequests` | `{request}/s` | device | IPsec Phase-2 security association delete requests received by IPsec Phase-1 IKE Tunnels |\n| `snmp.device_prof_nec_pikeGlobalInitTunnelFails` | `{tunnel}/s` | device | IPsec Phase-1 IKE Tunnels which were locally initiated and failed to activate |\n| `snmp.device_prof_nec_pikeGlobalInitTunnels` | `{tunnel}` | device | IPSec Phase-1 IKE Tunnels which were locally initiated |\n| `snmp.device_prof_nec_pikeGlobalOutNotifys` | `{notification}/s` | device | Notifys sent by IPsec Phase-1 IKE Tunnels |\n| `snmp.device_prof_nec_pikeGlobalOutP1SaDelRequests` | `{request}/s` | device | ISAKMP security association delete requests sent by IPsec Phase-1 Tunnels |\n| `snmp.device_prof_nec_pikeGlobalOutP2ExchgInvalids` | `{exchange}/s` | device | IPsec Phase-2 exchanges which were sent and were flagged by the peer to contain references to unrecognized security parameters |\n| `snmp.device_prof_nec_pikeGlobalOutP2ExchgRejects` | `{exchange}/s` | device | IPsec Phase-2 exchanges which were sent, validated by the peer but were rejected by the peers policy |\n| `snmp.device_prof_nec_pikeGlobalOutP2Exchgs` | `{exchange}/s` | device | IPsec Phase-2 exchanges which were sent by IPsec Phase-1 IKE Tunnels |\n| `snmp.device_prof_nec_pikeGlobalOutP2SaDelRequests` | `{request}/s` | device | IPsec Phase-2 SA delete requests sent by IPsec Phase-1 IKE Tunnels |\n| `snmp.device_prof_nec_pikeGlobalRespTunnelFails` | `{tunnel}/s` | device | IPsec Phase-1 IKE Tunnels which were remotely initiated and failed to activate |\n| `snmp.device_prof_nec_pikeGlobalRespTunnels` | `{tunnel}/s` | device | IPsec Phase-1 IKE Tunnels hich were remotely initiated |\n| `snmp.device_prof_nec_pipSecGlobalActiveTunnels` | `{tunnel}` | device | Currently active IPsec Phase-2 Tunnels |\n| `snmp.device_prof_nec_pipSecGlobalInAuthFails` | `{failure}/s` | device | Inbound authentication which ended in failure by IPsec Phase-2 Tunnels |\n| `snmp.device_prof_nec_pipSecGlobalInAuths` | `{authentication}/s` | device | Inbound authentications performed by IPsec Phase-2 Tunnels |\n| `snmp.device_prof_nec_pipSecGlobalInDecryptFails` | `{failure}/s` | device | Inbound decryptions which ended in failure by IPsec Phase-2 Tunnels |\n| `snmp.device_prof_nec_pipSecGlobalInDecrypts` | `{decryption}/s` | device | Inbound decryptions performed by IPsec Phase-2 Tunnels |\n| `snmp.device_prof_nec_pipSecGlobalInDrops` | `{packet}/s` | device | Packets dropped during receive processing by IPsec Phase-2 Tunnels |\n| `snmp.device_prof_nec_pipSecGlobalInOctets` | `By/s` | device | Data received by IPsec Phase-2 Tunnels |\n| `snmp.device_prof_nec_pipSecGlobalInPkts` | `{packet}/s` | device | Packets received by IPsec Phase-2 Tunnels |\n| `snmp.device_prof_nec_pipSecGlobalInReplayDrops` | `{packet}/s` | device | Packets dropped during receive processing due to Anti-Replay processing by IPsec Phase-2 Tunnels |\n| `snmp.device_prof_nec_pipSecGlobalNoSaFails` | `{failure}/s` | device | Non-existent SA in failures which occurred during processing by IPsec Phase-2 Tunnels |\n| `snmp.device_prof_nec_pipSecGlobalOutAuthFails` | `{failure}/s` | device | Outbound authentication's which ended in failure by IPsec Phase-2 Tunnels |\n| `snmp.device_prof_nec_pipSecGlobalOutAuths` | `{authentication}/s` | device | Outbound authentications performed by IPsec Phase-2 Tunnels |\n| `snmp.device_prof_nec_pipSecGlobalOutDrops` | `{packet}/s` | device | Packets dropped during send processing by IPsec Phase-2 Tunnels |\n| `snmp.device_prof_nec_pipSecGlobalOutEncryptFails` | `{failure}/s` | device | Outbound encryptions which ended in failure by IPsec Phase-2 Tunnels |\n| `snmp.device_prof_nec_pipSecGlobalOutEncrypts` | `{encryption}/s` | device | Outbound encryptions performed by IPsec Phase-2 Tunnels |\n| `snmp.device_prof_nec_pipSecGlobalOutOctets` | `By/s` | device | Data sent by IPsec Phase-2 Tunnels |\n| `snmp.device_prof_nec_pipSecGlobalOutPkts` | `{packet}/s` | device | Packets sent by IPsec Phase-2 Tunnels |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_cpu_usage` | `%` | device | The current CPU utilization |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_usage` | `%` | device | Memory usage percentage |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-NEC_Univerge",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"NVIDIA BGP",link:"",categories:["network-performance-monitoring.bgp"],icon_filename:"nvidia.svg"},keywords:["nvidia","bgp","snmp","routing","peering","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# NVIDIA BGP\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor BGP peering and routing health on NVIDIA devices over SNMP with Netdata, using NVIDIA BGP profile coverage.\n\nNetdata polls the BGP peer tables exposed by NVIDIA devices (vendor and standard BGP MIBs) via SNMP.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nDetected automatically for NVIDIA devices that expose BGP MIBs.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\n\n",integration_type:"device",id:"go.d.plugin-snmp-NVIDIA_BGP",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Nasuni Filer",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["nasuni","filer","snmp","storage","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Nasuni Filer\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Nasuni Filer (storage) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **nasuni-filer.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Nasuni Filer via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Nasuni Filer profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**97 metrics** in 30 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Environment / Temperature | 1 |\n| Hardware / CPU | 2 |\n| Hardware / Disk | 1 |\n| Hardware / Power | 2 |\n| Hardware / RAID | 4 |\n| Hardware / Temperature | 2 |\n| Network / Client | 2 |\n| Network / Cloud | 2 |\n| Network / Interface | 4 |\n| Network / Mobile | 2 |\n| Network / UI | 2 |\n| Security / AntiVirus | 1 |\n| Security / Status | 1 |\n| Storage / Cache | 5 |\n| Storage / Cloud | 2 |\n| Storage / Data | 1 |\n| Storage / Export | 1 |\n| Storage / FTP | 1 |\n| Storage / IO | 3 |\n| Storage / Migration | 2 |\n| Storage / Share | 3 |\n| Storage / Sync | 1 |\n| Storage / Volume | 15 |\n| Storage / iSCSI | 2 |\n| System / Account | 3 |\n| System / CPU | 2 |\n| System / Disk | 15 |\n| System / License | 3 |\n| System / Memory | 11 |\n| System / Uptime | 1 |\n\n### Environment / Temperature\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerAmbientTemp` | `Cel` | device | Ambient temperature of the filer |\n\n### Hardware / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerCoreCount` | `{core}` | device | Number of CPU cores |\n| `snmp.device_prof_nasuni_filerPhysCpuCount` | `{cpu}` | device | Number of physical CPUs |\n\n### Hardware / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerDiskCount` | `{disk}` | device | Number of disks |\n\n### Hardware / Power\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerNumPowerSupplies` | `{power_supply}` | device | Number of power supplies |\n| `snmp.device_prof_nasuni_filerPowerSupplyErrors` | `{error}` | device | Number of power supply errors |\n\n### Hardware / RAID\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerNumRaidArrays` | `{raid_array}` | device | Number of RAID arrays |\n| `snmp.device_prof_nasuni_filerNumRaidDisks` | `{raid_disk}` | device | Number of RAID disks |\n| `snmp.device_prof_nasuni_filerRaidArrayErrors` | `{error}` | device | Number of RAID array errors |\n| `snmp.device_prof_nasuni_filerRaidDiskErrors` | `{error}` | device | Number of RAID disk errors |\n\n### Hardware / Temperature\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerExhaustTemp` | `Cel` | device | Exhaust temperature of the filer |\n| `snmp.device_prof_nasuni_filerInletTemp` | `Cel` | device | Inlet temperature of the filer |\n\n### Network / Client\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerClientsIn` | `bit/s` | device | Amount of data received from clients |\n| `snmp.device_prof_nasuni_filerClientsOut` | `bit/s` | device | Amount of data sent to clients |\n\n### Network / Cloud\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerCloudIn` | `bit/s` | device | Amount of data received from cloud |\n| `snmp.device_prof_nasuni_filerCloudOut` | `bit/s` | device | Amount of data sent to cloud |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ifAdminStatus` | `{status}` | per interface, interface | Current administrative state of the interface |\n| `snmp.device_prof_ifHighSpeed` | `bit/s` | per interface, interface | Estimate of the interface's current bandwidth |\n| `snmp.device_prof_ifNumber` | `{interface}` | device | Number of network interfaces regardless of their current state present on this system |\n| `snmp.device_prof_ifOperStatus` | `{status}` | per interface, interface | Current operational state of the interface |\n\n### Network / Mobile\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerMobileIn` | `bit/s` | device | Amount of data received from mobile |\n| `snmp.device_prof_nasuni_filerMobileOut` | `bit/s` | device | Amount of data sent to mobile |\n\n### Network / UI\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerUIIn` | `bit/s` | device | Amount of data received from UI |\n| `snmp.device_prof_nasuni_filerUIOut` | `bit/s` | device | Amount of data sent to UI |\n\n### Security / AntiVirus\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_volumeTableNumAVViolations` | `{violation}` | per volume_table_index, volume_table_description, volume_table_provider, volume_table_protocol | Number of AV violations in volume table |\n\n### Security / Status\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_volumeTableAvEnabled` | `{status}` | per volume_table_index, volume_table_description, volume_table_provider, volume_table_protocol | indicates whether the antivirus enabled |\n\n### Storage / Cache\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerCacheFree` | `By` | device | Free cache size |\n| `snmp.device_prof_nasuni_filerCacheTotal` | `By` | device | Total cache size |\n| `snmp.device_prof_nasuni_filerCacheUsed` | `By` | device | Used cache size |\n| `snmp.device_prof_nasuni_filerReadHits` | `{hit}/s` | device | Number of read hits |\n| `snmp.device_prof_nasuni_filerReadMisses` | `{miss}/s` | device | Number of read misses |\n\n### Storage / Cloud\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerPushesCompleted` | `{push}/s` | device | Number of completed pushes |\n| `snmp.device_prof_nasuni_filerTotalPushed` | `By/s` | device | Total amount of data pushed |\n\n### Storage / Data\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerTotalUnprotectedData` | `By` | device | Total amount of unprotected data on the filer |\n\n### Storage / Export\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerTotalExports` | `{export}` | device | Total number of exports |\n\n### Storage / FTP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerTotalFtpdirs` | `{directory}` | device | Total number of FTP directories |\n\n### Storage / IO\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerOpensForRead` | `{open}/s` | device | Number of opens for read |\n| `snmp.device_prof_nasuni_filerOpensForWrite` | `{open}/s` | device | Number of opens for write |\n| `snmp.device_prof_nasuni_filerTotalRead` | `By/s` | device | Total amount of data read |\n\n### Storage / Migration\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerMigrationIn` | `bit/s` | device | Amount of data received during migration |\n| `snmp.device_prof_nasuni_filerMigrationOut` | `By` | device | Amount of data sent during migration |\n\n### Storage / Share\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerTotalShareClients` | `{client}` | device | Total number of share clients |\n| `snmp.device_prof_nasuni_filerTotalShareLocks` | `{lock}` | device | Total number of share locks |\n| `snmp.device_prof_nasuni_filerTotalShares` | `{share}` | device | Total number of shares |\n\n### Storage / Sync\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerMergeConflicts` | `{conflict}/s` | device | Number of merge conflicts |\n\n### Storage / Volume\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_volumeCount` | `{volume}` | device | Number of volumes |\n| `snmp.device_prof_nasuni_volumeTableAccessibleData` | `By` | per volume_table_index, volume_table_description, volume_table_provider, volume_table_protocol | Accessible data in volume table |\n| `snmp.device_prof_nasuni_volumeTableLastSnapshotDuration` | `s` | per volume_table_index, volume_table_description, volume_table_provider, volume_table_protocol | Duration of last snapshot in volume table |\n| `snmp.device_prof_nasuni_volumeTableNumExports` | `{export}` | per volume_table_index, volume_table_description, volume_table_provider, volume_table_protocol | Number of exports in volume table |\n| `snmp.device_prof_nasuni_volumeTableNumFileAlerts` | `{alert}` | per volume_table_index, volume_table_description, volume_table_provider, volume_table_protocol | Number of file alerts in volume table |\n| `snmp.device_prof_nasuni_volumeTableNumFtpdirs` | `{directory}` | per volume_table_index, volume_table_description, volume_table_provider, volume_table_protocol | Number of FTP directories in volume table |\n| `snmp.device_prof_nasuni_volumeTableNumShares` | `{share}` | per volume_table_index, volume_table_description, volume_table_provider, volume_table_protocol | Number of shares in volume table |\n| `snmp.device_prof_nasuni_volumeTableQuota` | `By` | per volume_table_index, volume_table_description, volume_table_provider, volume_table_protocol | Quota of volume table |\n| `snmp.device_prof_nasuni_volumeTableUnprotectedData` | `By` | per volume_table_index, volume_table_description, volume_table_provider, volume_table_protocol | Unprotected data in volume table |\n| `snmp.device_prof_volumeTableIsActive` | `{status}` | per volume_table_index, volume_table_description, volume_table_provider, volume_table_protocol | indicates whether the volume is active |\n| `snmp.device_prof_volumeTableIsPinned` | `{status}` | per volume_table_index, volume_table_description, volume_table_provider, volume_table_protocol | indicates whether the volume is pinned |\n| `snmp.device_prof_volumeTableIsReadOnly` | `{status}` | per volume_table_index, volume_table_description, volume_table_provider, volume_table_protocol | indicates whether the volume is read only |\n| `snmp.device_prof_volumeTableIsRemote` | `{status}` | per volume_table_index, volume_table_description, volume_table_provider, volume_table_protocol | indicates whether the volume is remote |\n| `snmp.device_prof_volumeTableIsShared` | `{status}` | per volume_table_index, volume_table_description, volume_table_provider, volume_table_protocol | indicates whether the volume is shared |\n| `snmp.device_prof_volumeTableRemoteAccessEnabled` | `{status}` | per volume_table_index, volume_table_description, volume_table_provider, volume_table_protocol | indicates whether the remote access enabled |\n\n### Storage / iSCSI\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerTotalIscsiClients` | `{client}` | device | Total number of iSCSI clients |\n| `snmp.device_prof_nasuni_filerTotalIscsiTargets` | `{target}` | device | Total number of iSCSI targets |\n\n### System / Account\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_accountLicensedCapacity` | `By` | device | Licensed account capacity |\n| `snmp.device_prof_nasuni_accountPercentUsedCapacity` | `%` | device | Percent of used account capacity |\n| `snmp.device_prof_nasuni_accountUsedCapacity` | `By` | device | Used account capacity |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_ssRawContexts` | `{switch}/s` | device | Number of context switches |\n| `snmp.device_prof_ucd_ssRawInterrupts` | `{interrupt}/s` | device | Number of interrupts processed |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_diskIOLA1` | `%` | per ucd_disk_io_device | The 1 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA15` | `%` | per ucd_disk_io_device | The 15 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA5` | `%` | per ucd_disk_io_device | The 5 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIONReadX` | `By/s` | per ucd_disk_io_device | The number of bytes read from this device since boot |\n| `snmp.device_prof_ucd_diskIONWrittenX` | `By/s` | per ucd_disk_io_device | The number of bytes written to this device since boot |\n| `snmp.device_prof_ucd_diskIOReads` | `{read}/s` | per ucd_disk_io_device | The number of read accesses from this device since boot |\n| `snmp.device_prof_ucd_diskIOWrites` | `{write}/s` | per ucd_disk_io_device | The number of write accesses to this device since boot |\n| `snmp.device_prof_ucd_dskAvail` | `By` | per ucd_dsk_path, ucd_dsk_device | Available space on the disk |\n| `snmp.device_prof_ucd_dskErrorFlag` | `{status}` | per ucd_dsk_path, ucd_dsk_device | Flag signaling that the disk or partition is under the minimum required space configured for it |\n| `snmp.device_prof_ucd_dskPercent` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of space used on disk |\n| `snmp.device_prof_ucd_dskPercentNode` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of inodes used on disk |\n| `snmp.device_prof_ucd_dskTotal` | `By` | per ucd_dsk_path, ucd_dsk_device | Total size of the disk/partition |\n| `snmp.device_prof_ucd_dskUsed` | `By` | per ucd_dsk_path, ucd_dsk_device | Used space on the disk |\n| `snmp.device_prof_ucd_ssIORawReceived` | `By/s` | device | Amount of data read from disk or other block device |\n| `snmp.device_prof_ucd_ssIORawSent` | `By/s` | device | Amount of data written to disk or other block device |\n\n### System / License\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_nasuni_filerNumAndroidLicenses` | `{license}` | device | Number of Android licenses |\n| `snmp.device_prof_nasuni_filerNumIOSLicenses` | `{license}` | device | Number of iOS licenses |\n| `snmp.device_prof_nasuni_filerTotalMobileLicenses` | `{license}` | device | Total number of mobile licenses |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | device | The amount of real/physical memory currently unused or available |\n| `snmp.device_prof_ucd_memAvailSwap` | `By` | device | The amount of swap space currently unused or available |\n| `snmp.device_prof_ucd_memBuffer` | `By` | device | The total amount of real or virtual memory currently allocated for use as memory buffers |\n| `snmp.device_prof_ucd_memCached` | `By` | device | The total amount of real or virtual memory currently allocated for use as cached memory |\n| `snmp.device_prof_ucd_memMinimumSwap` | `By` | device | The minimum amount of swap space expected to be kept free or available during normal operation of this host |\n| `snmp.device_prof_ucd_memShared` | `By` | device | The total amount of real or virtual memory currently allocated for use as shared memory |\n| `snmp.device_prof_ucd_memTotalFree` | `By` | device | The total amount of memory free or available for use on this host |\n| `snmp.device_prof_ucd_memTotalSwap` | `By` | device | The total amount of swap space configured for this host |\n| `snmp.device_prof_ucd_memoryTotal` | `By` | device | The total amount of real/physical memory installed on this host |\n| `snmp.device_prof_ucd_ssRawSwapIn` | `By/s` | device | Amount of memory swapped in from disk |\n| `snmp.device_prof_ucd_ssRawSwapOut` | `By/s` | device | Amount of memory swapped out to disk |\n\n### System / Uptime\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_systemUptime` | `s` | device | Time since the system was last rebooted or powered on. |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Nasuni_Filer",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Net-SNMP Host",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"SNMP.png"},keywords:["net-snmp","host","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Net-SNMP Host\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Net-SNMP Host (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **net-snmp.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Net-SNMP Host via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Net-SNMP Host profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**28 metrics** in 3 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| System / CPU | 2 |\n| System / Disk | 15 |\n| System / Memory | 11 |\n\n### System / CPU\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_ssRawContexts` | `{switch}/s` | device | Number of context switches |\n| `snmp.device_prof_ucd_ssRawInterrupts` | `{interrupt}/s` | device | Number of interrupts processed |\n\n### System / Disk\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ucd_diskIOLA1` | `%` | per ucd_disk_io_device | The 1 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA15` | `%` | per ucd_disk_io_device | The 15 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIOLA5` | `%` | per ucd_disk_io_device | The 5 minute average load of disk (%) |\n| `snmp.device_prof_ucd_diskIONReadX` | `By/s` | per ucd_disk_io_device | The number of bytes read from this device since boot |\n| `snmp.device_prof_ucd_diskIONWrittenX` | `By/s` | per ucd_disk_io_device | The number of bytes written to this device since boot |\n| `snmp.device_prof_ucd_diskIOReads` | `{read}/s` | per ucd_disk_io_device | The number of read accesses from this device since boot |\n| `snmp.device_prof_ucd_diskIOWrites` | `{write}/s` | per ucd_disk_io_device | The number of write accesses to this device since boot |\n| `snmp.device_prof_ucd_dskAvail` | `By` | per ucd_dsk_path, ucd_dsk_device | Available space on the disk |\n| `snmp.device_prof_ucd_dskErrorFlag` | `{status}` | per ucd_dsk_path, ucd_dsk_device | Flag signaling that the disk or partition is under the minimum required space configured for it |\n| `snmp.device_prof_ucd_dskPercent` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of space used on disk |\n| `snmp.device_prof_ucd_dskPercentNode` | `%` | per ucd_dsk_path, ucd_dsk_device | Percentage of inodes used on disk |\n| `snmp.device_prof_ucd_dskTotal` | `By` | per ucd_dsk_path, ucd_dsk_device | Total size of the disk/partition |\n| `snmp.device_prof_ucd_dskUsed` | `By` | per ucd_dsk_path, ucd_dsk_device | Used space on the disk |\n| `snmp.device_prof_ucd_ssIORawReceived` | `By/s` | device | Amount of data read from disk or other block device |\n| `snmp.device_prof_ucd_ssIORawSent` | `By/s` | device | Amount of data written to disk or other block device |\n\n### System / Memory\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_memory_free` | `By` | device | The amount of real/physical memory currently unused or available |\n| `snmp.device_prof_ucd_memAvailSwap` | `By` | device | The amount of swap space currently unused or available |\n| `snmp.device_prof_ucd_memBuffer` | `By` | device | The total amount of real or virtual memory currently allocated for use as memory buffers |\n| `snmp.device_prof_ucd_memCached` | `By` | device | The total amount of real or virtual memory currently allocated for use as cached memory |\n| `snmp.device_prof_ucd_memMinimumSwap` | `By` | device | The minimum amount of swap space expected to be kept free or available during normal operation of this host |\n| `snmp.device_prof_ucd_memShared` | `By` | device | The total amount of real or virtual memory currently allocated for use as shared memory |\n| `snmp.device_prof_ucd_memTotalFree` | `By` | device | The total amount of memory free or available for use on this host |\n| `snmp.device_prof_ucd_memTotalSwap` | `By` | device | The total amount of swap space configured for this host |\n| `snmp.device_prof_ucd_memoryTotal` | `By` | device | The total amount of real/physical memory installed on this host |\n| `snmp.device_prof_ucd_ssRawSwapIn` | `By/s` | device | Amount of memory swapped in from disk |\n| `snmp.device_prof_ucd_ssRawSwapOut` | `By/s` | device | Amount of memory swapped out to disk |\n\n",integration_type:"device",id:"go.d.plugin-snmp-Net-SNMP_Host",edit_link:"https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/snmp/npm-catalog/metadata.yaml",functions:"",related_resources:""},{meta:{plugin_name:"go.d.plugin",module_name:"snmp",monitored_instance:{name:"Netapp",link:"",categories:["network-performance-monitoring.device-metrics"],icon_filename:"netapp.svg"},keywords:["netapp","snmp","network device","npm"],related_resources:{integrations:{list:[]}},info_provided_to_referring_integrations:{description:""}},overview:"# Netapp\n\nPlugin: go.d.plugin\nModule: snmp\n\n## Overview\n\nMonitor Netapp (network device) with Netdata over SNMP. Netdata recognizes the device automatically by its `sysObjectID` (recognized across 1 device identifiers) and collects the metrics this profile declares \u2014 on top of the generic SNMP baseline \u2014 with no manual OID configuration.\n\nNetdata's SNMP collector matches the device to the **netapp.yaml** profile via `sysObjectID`/`sysDescr`, then polls the OIDs it declares.\n\nThis integration is supported on all platforms.\n\nThis integration supports multiple instances configured side-by-side.\n\n\n### Default Behavior\n\n#### Auto-Detection\n\nAuto-detected as Netapp via sysObjectID/sysDescr.\n\n#### Limits\n\nThe default configuration for this integration does not impose any limits.\n\n#### Performance Impact\n\nThe default configuration for this integration is not expected to impose a significant performance impact on the system.\n",setup:"## Setup\n\n\nYou can configure the **snmp** collector in two ways:\n\n| Method | Best for | How to |\n|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|\n| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes \u2192 Configure this node \u2192 Collectors \u2192 Jobs**, search for **snmp**, then click **+** to add a job. |\n| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp.conf` and add a job. |\n\n:::important\n\nUI configuration requires paid Netdata Cloud plan.\n\n:::\n\n\n### Prerequisites\n\n#### SNMP access\n\nSNMP must be enabled on the device and reachable from the Netdata Agent acting as the site's SNMP hub.\n\n\n### Configuration\n\n#### Options\n\nConfigure the SNMP collector with the device hostname and SNMP credentials. See the SNMP collector reference for all options.\n\n\n#### via UI\n\nConfigure the **snmp** collector from the Netdata web interface:\n\n1. Go to **Nodes**.\n2. Select the node **where you want the snmp data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection.\n3. The **Collectors \u2192 Jobs** view opens by default.\n4. In the Search box, type _snmp_ (or scroll the list) to locate the **snmp** collector.\n5. Click the **+** next to the **snmp** collector to add a new job.\n6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save.\n - **Test** runs the job with the provided settings and shows whether data can be collected.\n - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.\n\n\n#### via File\n\nThe configuration file name for this integration is `go.d/snmp.conf`.\n\nThe file format is YAML. Generally, the structure is:\n\n```yaml\nupdate_every: 1\nautodetection_retry: 0\njobs:\n - name: some_name1\n - name: some_name2\n```\nYou can edit the configuration file using the [`edit-config`](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#edit-configuration-files) script from the\nNetdata [config directory](https://github.com/netdata/netdata/blob/master/docs/netdata-agent/configuration/README.md#locate-your-config-directory).\n\n```bash\ncd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata\nsudo ./edit-config go.d/snmp.conf\n```\n\n##### Examples\nThere are no configuration examples.\n\n",troubleshooting:"",alerts:"## Alerts\n\nThere are no alerts configured by default for this integration.\n",metrics:"## Metrics\n\nOn top of the **generic SNMP baseline** (the *Generic SNMP Device* integration \u2014 interfaces, system, IP/TCP/UDP, host resources), this Netapp profile adds the metrics below. Each is collected **only where the device exposes the matching OID** \u2014 inclusion means the profile requests it; availability depends on the device model and software.\n\n**35 metrics** in 8 groups; each row is a chart context usable in alerts.\n\n| Group | Metrics |\n|---|---|\n| Network / HTTP | 1 |\n| Network / Interface | 11 |\n| Storage / Cache | 2 |\n| Storage / SnapMirror | 6 |\n| Storage / SnapVault | 6 |\n| System / ClusterFailover | 1 |\n| System / FileSystem | 7 |\n| System / Uptime | 1 |\n\n### Network / HTTP\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_ncHttpActiveCliConns` | `{connection}` | device | Number of currently active TCP/IP connections to HTTP clients |\n\n### Network / Interface\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_if64InDiscards` | `{packet}/s` | per interface_index | The number of inbound packets discarded even though no errors were detected |\n| `snmp.device_prof_if64InErrors` | `{error}/s` | per interface_index | The number of inbound packets containing errors preventing delivery to higher-layer protocol |\n| `snmp.device_prof_if64InNUcastPkts` | `{packet}/s` | per interface_index | The number of non-unicast (broadcast/multicast) packets delivered to a higher-layer protocol |\n| `snmp.device_prof_if64InOctets` | `bit/s` | per interface_index | The total number of octets received on the interface, including framing characters |\n| `snmp.device_prof_if64InUcastPkts` | `{packet}/s` | per interface_index | The number of unicast packets delivered to a higher-layer protocol |\n| `snmp.device_prof_if64InUnknownProtos` | `{packet}/s` | per interface_index | The number of packets discarded due to unknown or unsupported protocol |\n| `snmp.device_prof_if64OutDiscards` | `{packet}/s` | per interface_index | The number of outbound packets discarded even though no errors were detected |\n| `snmp.device_prof_if64OutErrors` | `{error}/s` | per interface_index | The number of outbound packets that could not be transmitted due to errors |\n| `snmp.device_prof_if64OutNUcastPkts` | `{packet}/s` | per interface_index | The total number of non-unicast packets requested to be transmitted |\n| `snmp.device_prof_if64OutOctets` | `bit/s` | per interface_index | The total number of octets transmitted out of the interface, including framing characters |\n| `snmp.device_prof_if64OutUcastPkts` | `{packet}/s` | per interface_index | The total number of unicast packets requested to be transmitted |\n\n### Storage / Cache\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_extcache64Hits` | `{buffer}/s` | device | Number of wafl buffers read from the external cache |\n| `snmp.device_prof_miscCacheAge` | `min` | device | Age in minutes of the oldest read-only blocks in the buffer cache |\n\n### Storage / SnapMirror\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_snapmirrorLag` | `cs` | per sm_index | How far behind from the source the destination is |\n| `snmp.device_prof_snapmirrorState` | `{status}` | per sm_index | Current state of the SnapMirror |\n| `snmp.device_prof_snapmirrorStatus` | `{status}` | per sm_index | Current transfer status of the SnapMirror |\n| `snmp.device_prof_snapmirrorTotalFailures` | `{transfer}/s` | per sm_index | Failed or aborted transfers |\n| `snmp.device_prof_snapmirrorTotalSuccesses` | `{transfer}/s` | per sm_index | Successful transfers |\n| `snmp.device_prof_snapmirrorTotalTransMBs` | `By/s` | per sm_index | Transfer size |\n\n### Storage / SnapVault\n\n| Metric (chart context) | Unit | Scope | Description |\n|---|---|---|---|\n| `snmp.device_prof_svLag` | `cs` | per sv_index | Shows how far a